Checkpoint 3 & 4

Pull request for checkpoint 3 & 4