This is a PHP implementation of Strategy