Completed Module1, and part of 2 and 3 at once