simplified timeout logic