added a reserve method
Merge with the previous version