initial implementation and examples
adding tests
documenation