Code Organization

I'm trying to port some code to TOT in order to incorporate it into the sources. I've got a question about where it should live.

This code provides some different models of the target hardware that are
useful at multiple stages of optimization (ll, MachineInstr, mc, etc.).
I don't believe the MC level is available to the higher-level passes.
Should this stuff live in the Target library?

The main thing I'm trying to work out right now is the TableGen
implementation. I was going to follow the scheduler design but then I
realized that the scheduler really lives at the MC level. I think my
stuff has to be somewhere more accessible.

Advice and guidance much appreciated. Thanks!