Oh, ok. I get what the problem is now. I think you can use reflection for this case with the *Classes* class.

You can leave *AuthenticationScheme*, *RequestAuthenticatorCreator* and * RequestAuthenticator* in the API module and have the implementation of the enum be:

```java
public enum AuthenticationScheme {

    BASIC((RequestAuthenticatorCreator) Classes.newInstance("com.stormpath.sdk.impl.whatever.BasicRequestAuthenticatorCreator")),
    DEFAULT((RequestAuthenticatorCreator) Classes.newInstance("com.stormpath.sdk.impl.whatever.Sauthc1RequestAuthenticatorCreator")),
    SAUTHC1((RequestAuthenticatorCreator) Classes.newInstance("com.stormpath.sdk.impl.whatever.Sauthc1RequestAuthenticatorCreator"));

    private RequestAuthenticatorCreator requestAuthenticatorCreator;

    private AuthenticationScheme(RequestAuthenticatorCreator requestAuthenticatorCreator) {
        this.requestAuthenticatorCreator = requestAuthenticatorCreator;
     }

    public RequestAuthenticatorCreator getRequestAuthenticatorCreator() {
        return requestAuthenticatorCreator;
    }

    public RequestAuthenticator create() {
        return getRequestAuthenticatorCreator().create();
    }
}
```

I *think* that should work. Let me know what you think.