add everthing up to CS193P Winter 2013 Lecture 9