split into separate simulator