demo + tests