Implemented 2.a and 2.b