Improved and fleshed out Controller and related subclasses