more refactors :D