while works