Major update
Don't think that I can explain all changes as there are too many to describe.

Signed-off-by: Aniket Pant <me@aniketpant.com>