Major Overhaul

Change-Id: I69be403a8abac9ae96a7b84b4fcc1a9387420fb6