MASSIVE OVERHAUL to header and register