Redesigned Simulatable class to be a more proper interface.