re-implement dof_handler