my take on https://www.udacity.com/course/cs255