Properties into classmethods
Undo hardcoded function values
Use private method naming
Use unimplemented methods for base class instead of None properties
Reorder methods
Updated docs
Move classmethods to the top