get rid of pre_invoke() method