add control.hpp, type_if.hpp