Added documentation and new structure