implementation doesn't always succeed