setup base abstract class & remove mixin
follow PSR-1 & PSR-2 about coding style and standards