this should probably be fixed with some kind of interface. Doing a method_exists check is rather ugly IMO