add a demo, still fixing bugs in it