Major Overhaul

Change-Id: I7d0cde1fab75fd0da2ae6c2f3f7da077c65e6a87