add source and demo code

initial code commit