complete Simulator::step() and add type.hpp