Move "forward_type" to core.hpp