refactor to callable instance