implement abstract methods
fixed encoding
fixed: void function result used
fixed: incompatible parameter type
fixed phpdoc