strategy pattern included