major refactor removed generic interfces and implementations