Separate harmonic logic from visuals