refactored features to use an interface. fixed tests
refactored exceptions to own namespace
added loader facility
refactored base structure