Major Overhaul

Change-Id: Ib706f4343e2b7a18451c6b3dd6d7ce7b73237ac0