MASSIVE rewrite for better unit testing of classes separate from collections holding instances