refactor :))