Moved Element out of Launcher for clearer code.
Not completely satisfying for compiler bug reasons.
However, we now have a more complete inheritance hierarchy, for what
it's worth.