introducing step_sync and step_async