Initial multi controller implementation

I had initially planned to just do preperation work on this but in
the process found several places where the old system was not adding
builting controllers correctly and other issues.  The mixed implementations
were confusing the issue when trying to fix those and I decided it was
easier to finish the job.