additional refactor