Major Overhaul

Change-Id: I05ee2d1ce1cac13f2822f5dfca48ff6388124399