refactor & associations