refactor more methods