outline how I imagine simulator and config classes should look.  Can we use c++11?