Re-worked how some classes interact