Refactored out most of the newly-added details classes to use base classes instead.