GM revised simulator class for error handling. Still need to check for zero as input