refactor the default methods