add initial code

 * add code
 * add README
 * add examples
 * add tests