refactor collect methods