add unit test, demo, readme