Complete as of lecture 149