Major Overhaul

Change-Id: I529f5f0ee55cd20e74591ddf7d35fbaa5246e0e5