refactor again :)