http://stellar.mit.edu/S/course/hst/sp16/hst.500/index.html