State and Strategy Design Pattern - Low Level Design