implemented everything... reason for only one commit is the fact I did a...

... huge portion of this on the bus from Chicago this weekend.