Third pass at Interfaces

Adds class list to be overridden, and uses listed classnames for instances