Refactoring the base framework heavily. Looking for ectensibility

Code to abstractions is followed. Basically looking for extensibility.