diff --git a/core/src/main/java/c10n/C10N.java b/core/src/main/java/c10n/C10N.java
index <HASH>..<HASH> 100755
--- a/core/src/main/java/c10n/C10N.java
+++ b/core/src/main/java/c10n/C10N.java
@@ -74,15 +74,15 @@ import java.util.Locale;
  * @author rodion
  */
 public final class C10N {
-  //DI
-  private static final C10NCoreModule coreModule = new C10NCoreModule();
-  private static C10NMsgFactory root = coreModule.defaultC10NMsgFactory();
-
   /**
    * <p>Classloader to use for loading c10n-interface proxies</p>
    */
   private static ClassLoader proxyClassloader = C10N.class.getClassLoader();
 
+  //DI
+  private static final C10NCoreModule coreModule = new C10NCoreModule();
+  private static C10NMsgFactory root = coreModule.defaultC10NMsgFactory();
+
   /**
    * Internal locale object used as a fallback when current locale does not
    * match any of the user-defined locale mappings.
Fixed a problem where getProxyClassloader sometimes returns null, because of a nasty cyclic dependency in the static class loading sequence :((

Currently the fix simply puts the proxyClassloader field before the coreModule field. Ideally, coreModule field needs to be non-static, or delay its construction or dependent parts until actually used.