components work, but the interface to use them can still get better.
better interface for gccomponent.