Beginning assignment 4. Build from scratch.