adapted from lights-out