First version
Added documentation
Added method: reserve