Total Re-write + Much needed cleanup