refactoring getInstance