Initial commit
Revert "Initial commit"

This reverts commit 448a583582776344373874249909b119f54476b9.
Revert "Revert "Initial commit""

This reverts commit b22757989cde9b31863317af4a0db87e7f89424a.
Added bulk of the code