refactoring and asociations