refactorized the Sayer