1. Added the documentation in more details
2. Fixed all the warnings