inner classes are still not perfect