Further refactoring to reduce visibility and refine public API. Removed classes and interfaces that provided too much flexibility at the expense of boilerplate