Code OK. TODO: add documentation and examples