Extract common color logic into base
Use #pipelined instead of #multi
Dynamically define forwarded methods
Move notification logic into #run_fallback
Clean up #_color