Conformed to Strategy Pattern