rough revision - untested