Added AbstractType
Refactored to new Namespace