Major Overhaul

Change-Id: I1a33a8c0a58b927ab0de0fc9f14e92a656a48422