broke spectrum up into individual classes, now using require style classes to avoid namespace issues