Finished up to 2.b (only commenting and cleanup left