improved while