functions under most cases using simulator