* Add documentation, refactoring