share function
before refactoring object
before refactoring object
after refactoring object