Add unit-tests and update demo.