make "IElement" an abstract class. rename to "Element", and clean up implementors.