refactor etc