Added documentation and cleaned up.