all these inner classes should be static