add documentation and examples