Week2

week 2 mid-week code review
Thanks, I use let! pretty much every time as concerning lazy instantiation might causing problems, looks like it's overkill :)