Just commiting WiP, need to simplify the whole thing.