add cxx11::forward
fix assignment
rework on DispatchFunction