slackCat should probably use the common type, not the first one passed? Also it would be cool to have addRange/removeRange somehow automated for types that have indirections. Or it's too much state to carry around? -- Dmitry Olshansky