Added documentation and changed some class names