Level-1 refactoring for Generics & Adding Facade Layer