Fixed compatibility with PHP 5.3 - changed trait to abstract class