work in progress, with test cases that ought to pass