separate out different functions to modifier