removed thread divide between subsystems, will change to threading within subsystems instead later