added tests and completed exercises