cleaned up API and introduced base class SimulationObject for better code structure