finished demo, needs moar tests