Added week4
Refactored to use generics and added combine method