Moving API to more OOP design

Added documentation for a more OOP design to API as well as to reduce
code length (refactoring).

This will help with the design of the cache component. As it'll save me
considerable time.  This is subject to change and is a simple 'mockup'
as of right now.