refactoring membership