use the schnur recursive timeout technique, and use a 500ms interval instead of 100ms