overhauled entire structure - no longer static methods