a demo that just about works