Removed not needed reflection
Refactored types to interfaces