Upp exercise 18 and ModuleImplement