untested, filled in outline