Add separated implementation of SimulationModel

Fixes an item in #50.