refactor out parameters