Strategy Pattern fully implemented