Should completely work now, reasonable merges