refactors etc