Very close to working spec, see test()