refactoring base framework class