refactor use overrride method