add ElementInterface duck typing and @todo