Created by: siddharthg
Let this PR pending, I will push updates to this branch that can then be pulled to the master.