remove initial procedural implementation and rename simulator