Made base implementations extendable

The base implementations were package private before which made them
impossible to extent.  Extension is the easiest way to add just a
little functionality without having to rewrite the implementation.
Merge pull request #7 from bnormsoftware/base_extension

Made base implementations extendable