diff --git a/README.md b/README.md
index 410a0b7..f716c58 100644
--- a/README.md
+++ b/README.md
@@ -18,11 +18,11 @@
 Note that Apache DeltaSpike is **not** a CDI container itself, but a set of portable Extensions for it!
 
 
-Some of key features of Apache DeltaSpike include:
+Some of the key features of Apache DeltaSpike include:
 
 - A core module that supports component configuration, type safe messaging and internationalization, and exception handling.
 - A suite of utilities to make programmatic bean lookup easier.
-- A plugin for Java SE to bootstrap both JBoss Weld, Apache OpenWebBeans and other CDI containers outside of a a JavaEE server.
+- A plugin for Java SE to bootstrap both JBoss Weld, Apache OpenWebBeans and other CDI containers outside of a JavaEE server.
 - JSF integration, including backporting of JSF 2.2 features for Java EE 6.
 - JPA integration and transaction support.
 - A Data module, to create an easy to use repository pattern on top of JPA.
@@ -40,4 +40,4 @@
 - JDK 8
 - Maven
 
-Just run `mvn clean install` from the top level directory, `deltaspike` to build the source code.
\ No newline at end of file
+Just run `mvn clean install` from the top level directory, `deltaspike` to build the source code.
diff --git a/deltaspike/cdictrl/api/pom.xml b/deltaspike/cdictrl/api/pom.xml
index 4067066..3ce24f3 100644
--- a/deltaspike/cdictrl/api/pom.xml
+++ b/deltaspike/cdictrl/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/impl-openejb/pom.xml b/deltaspike/cdictrl/impl-openejb/pom.xml
index 64d5ce4..571c10e 100644
--- a/deltaspike/cdictrl/impl-openejb/pom.xml
+++ b/deltaspike/cdictrl/impl-openejb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/impl-owb/pom.xml b/deltaspike/cdictrl/impl-owb/pom.xml
index 77d6bcf..7ea3fcc 100644
--- a/deltaspike/cdictrl/impl-owb/pom.xml
+++ b/deltaspike/cdictrl/impl-owb/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/impl-weld/pom.xml b/deltaspike/cdictrl/impl-weld/pom.xml
index 52c7dc5..6523709 100644
--- a/deltaspike/cdictrl/impl-weld/pom.xml
+++ b/deltaspike/cdictrl/impl-weld/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/pom.xml b/deltaspike/cdictrl/pom.xml
index b40ad1a..8a3d3fe 100644
--- a/deltaspike/cdictrl/pom.xml
+++ b/deltaspike/cdictrl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent-code</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../parent/code/pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/servlet/pom.xml b/deltaspike/cdictrl/servlet/pom.xml
index 4b20851..fe6db94 100644
--- a/deltaspike/cdictrl/servlet/pom.xml
+++ b/deltaspike/cdictrl/servlet/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/cdictrl/tck/pom.xml b/deltaspike/cdictrl/tck/pom.xml
index 04a4fe3..0627dfb 100644
--- a/deltaspike/cdictrl/tck/pom.xml
+++ b/deltaspike/cdictrl/tck/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.deltaspike.cdictrl</groupId>
         <artifactId>cdictrl-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/checkstyle-rules/pom.xml b/deltaspike/checkstyle-rules/pom.xml
index 5ac4d73..1c3d47f 100644
--- a/deltaspike/checkstyle-rules/pom.xml
+++ b/deltaspike/checkstyle-rules/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/core/api/pom.xml b/deltaspike/core/api/pom.xml
index 475411f..3c557f4 100644
--- a/deltaspike/core/api/pom.xml
+++ b/deltaspike/core/api/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike.core</groupId>
         <artifactId>core-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
index e988f57..313bb9b 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
@@ -26,6 +26,11 @@
 {
     interface BeanManagerIntegration
     {
+        /**
+         * Whether to use CDI.current() if available.
+         * This might fail in some CDI containers in some situations.
+         * Try switching to 'false' to enforce the 'old' DeltaSpike BeanManager lookup.
+         */
         Boolean DELEGATE_LOOKUP =
                 ConfigResolver.resolve("deltaspike.bean-manager.delegate_lookup")
                         .as(Boolean.class)
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
index 117f13f..5897b59 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
@@ -186,7 +186,8 @@
         setBeanManagerProvider(this);
 
         // CDI#current delegation enabled, skip everything
-        if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
+        if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null &&
+            resolveBeanManagerViaStaticHelper() != null)
         {
             return;
         }
@@ -208,7 +209,11 @@
         // CDI#current delegation enabled, skip everything
         if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
         {
-            return resolveBeanManagerViaStaticHelper();
+            BeanManager bm = resolveBeanManagerViaStaticHelper();
+            if (bm != null)
+            {
+                return bm;
+            }
         }
 
         BeanManagerInfo bmi = getBeanManagerInfo(ClassUtils.getClassLoader(null));
@@ -274,7 +279,8 @@
     public void cleanupFinalBeanManagers(@Observes AfterDeploymentValidation adv)
     {
         // CDI#current delegation enabled, skip everything
-        if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
+        if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null &&
+            resolveBeanManagerViaStaticHelper() != null)
         {
             return;
         }
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
index 3f6477d..b6555e7 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
@@ -64,6 +64,17 @@
     }
 
     /**
+     * Flush the caches to prevent ClassLoader leaks.
+     * This is called internally by DeltaSpike.
+     * Users do not have to explicitly call this method.
+     * Does not have side effects as the cache is idempotent anyway.
+     */
+    public static void clearCache()
+    {
+        classDeactivatorMap.clear();
+    }
+
+    /**
      * Evaluates if the given {@link Deactivatable} is active.
      *
      * @param targetClass {@link Deactivatable} under test.
diff --git a/deltaspike/core/impl/pom.xml b/deltaspike/core/impl/pom.xml
index 1da9ff2..552533f 100644
--- a/deltaspike/core/impl/pom.xml
+++ b/deltaspike/core/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.core</groupId>
         <artifactId>core-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
index 164dc16..3b7fcad 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
@@ -386,6 +386,9 @@
 
         ConfigResolver.freeConfigSources();
         detectedParentPropertyFileConfigs.remove(ClassUtils.getClassLoader(null));
+
+        // we also free the ClassDeactivationUtils cache
+        ClassDeactivationUtils.clearCache();
     }
 
     /**
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertiesConfigSource.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertiesConfigSource.java
index a2749d8..142d8b7 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertiesConfigSource.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertiesConfigSource.java
@@ -23,7 +23,7 @@
 import java.util.Properties;
 
 /**
- * Base class for configuration sources based on {@link Properties} object.
+ * Base class for configuration sources based on a fixed {@link Properties} object.
  */
 public abstract class PropertiesConfigSource extends BaseConfigSource
 {
@@ -50,7 +50,7 @@
     @Override
     public Map<String, String> getProperties()
     {
-        Map<String,String> result = new HashMap<String, String>();
+        Map<String,String> result = new HashMap<String, String>(properties.size());
         for (String propertyName : properties.stringPropertyNames())
         {
             result.put(propertyName, properties.getProperty(propertyName));
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertyFileConfigSource.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertyFileConfigSource.java
index 5f15c6f..d549ab6 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertyFileConfigSource.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/PropertyFileConfigSource.java
@@ -19,30 +19,248 @@
 package org.apache.deltaspike.core.impl.config;
 
 import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.time.Instant;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
+import java.util.logging.Level;
 
+import org.apache.deltaspike.core.api.config.ConfigResolver;
 import org.apache.deltaspike.core.util.PropertyFileUtils;
 
 /**
  * {@link org.apache.deltaspike.core.spi.config.ConfigSource} which uses
- * <i>META-INF/apache-deltaspike.properties</i> for the lookup
+ * a fixed property file for the lookup.
+ *
+ * If the property file has a 'file://' protocol, we are able to pick up
+ * changes during runtime when the underlying property file changes.
+ * This does not make sense for property files in JARs, but makes perfect sense
+ * whenever a property file URL is directly on the file system.
  */
-class PropertyFileConfigSource extends PropertiesConfigSource
+public class PropertyFileConfigSource extends BaseConfigSource
 {
-    private String fileName;
+    /**
+     * The name of a property which can be defined inside the property file
+     * to define the amount of seconds after which the property file should
+     * be tested for changes again.
+     * Note that the test is performed by storing the lastChanged attribute of the
+     * underlying file.
+     *
+     * By default the time after which we look for changes is {@link #RELOAD_PERIOD_DEFAULT}.
+     * This can be changed by explicitly adding a property with the name defined in {@link #RELOAD_PERIOD}
+     * which contains the number of seconds after which we try to reload again.
+     * A zero or negative value means no dynamic reloading.
+     * <pre>
+     * # look for changes after 60 seconds
+     * deltaspike_reload=60
+     * </pre>
+     * Whether the file got changed is determined by the lastModifiedDate of the underlying file.
+     * <p>
+     * You can disable the whole reloading with a negative reload time, e.g.
+     * <pre>
+     * deltaspike_reload=-1
+     * </pre>
+     */
+    public static final String RELOAD_PERIOD = "deltaspike_reload";
+    public static final int RELOAD_PERIOD_DEFAULT = 300;
 
-    PropertyFileConfigSource(URL propertyFileUrl)
+    private final ConfigResolver.ConfigHelper configHelper;
+
+    /**
+     * currently loaded config properties.
+     */
+    private Map<String, String> properties;
+
+    private final URL propertyFileUrl;
+    private String filePath;
+
+    private int reloadAllSeconds = RELOAD_PERIOD_DEFAULT;
+    private Instant fileLastModified = null;
+
+    /**
+     * Reload after that time in seconds.
+     */
+    private int reloadAfterSec;
+
+    private Consumer<Set<String>> reportAttributeChange;
+
+    public PropertyFileConfigSource(URL propertyFileUrl)
     {
-        super(PropertyFileUtils.loadProperties(propertyFileUrl));
-        fileName = propertyFileUrl.toExternalForm();
+        this.propertyFileUrl = propertyFileUrl;
+        filePath = propertyFileUrl.toExternalForm();
+
+        this.properties = toMap(PropertyFileUtils.loadProperties(propertyFileUrl));
+
+        if (isFile(propertyFileUrl))
+        {
+
+            calculateReloadTime();
+            if (reloadAllSeconds < 0 )
+            {
+                configHelper = null;
+            }
+            else
+            {
+                fileLastModified = getLastModified();
+                configHelper = ConfigResolver.getConfigProvider().getHelper();
+                reloadAfterSec = getNowSeconds() + reloadAllSeconds;
+            }
+        }
+        else
+        {
+            configHelper = null;
+        }
+
         initOrdinal(100);
     }
 
+    private void calculateReloadTime()
+    {
+        final String reloadPeriod = properties.get(RELOAD_PERIOD);
+        if (reloadPeriod != null)
+        {
+            try
+            {
+                int reload = Integer.parseInt(reloadPeriod);
+                if (reload < 0)
+                {
+                    fileLastModified = null;
+                    log.info("Disable dynamic reloading for ConfigSource " + filePath);
+                }
+                else
+                {
+                    reloadAllSeconds = reload;
+                }
+            }
+            catch (NumberFormatException nfe)
+            {
+                log.warning("Wrong value for " + RELOAD_PERIOD + " property: " + reloadPeriod +
+                    ". Must be numeric in seconds. Using default " + RELOAD_PERIOD_DEFAULT);
+                reloadAllSeconds = RELOAD_PERIOD_DEFAULT;
+            }
+        }
+    }
+
+    protected Map<String, String> toMap(Properties properties)
+    {
+        Map<String,String> result = new HashMap<>(properties.size());
+        for (String propertyName : properties.stringPropertyNames())
+        {
+            result.put(propertyName, properties.getProperty(propertyName));
+        }
+
+        return Collections.unmodifiableMap(result);
+    }
+
+    @Override
+    public Map<String, String> getProperties()
+    {
+        if (needsReload())
+        {
+            reloadProperties();
+        }
+
+        return properties;
+    }
+
+    @Override
+    public String getPropertyValue(String key)
+    {
+        if (needsReload())
+        {
+            reloadProperties();
+        }
+
+        return properties.get(key);
+    }
+
+    private boolean needsReload()
+    {
+        if (fileLastModified != null && getNowSeconds() > reloadAfterSec)
+        {
+            final Instant newLastModified = getLastModified();
+            if (newLastModified != null && newLastModified.isAfter(fileLastModified))
+            {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    private synchronized void reloadProperties()
+    {
+        // another thread might have already updated the properties.
+        if (needsReload())
+        {
+            final Map<String, String> newProps = toMap(PropertyFileUtils.loadProperties(propertyFileUrl));
+
+            final Set<String> modfiedAttributes = configHelper.diffConfig(properties, newProps);
+            if (!modfiedAttributes.isEmpty())
+            {
+                reportAttributeChange.accept(modfiedAttributes);
+            }
+
+            this.properties = newProps;
+
+            fileLastModified = getLastModified();
+
+            calculateReloadTime();
+            reloadAfterSec = getNowSeconds() + reloadAllSeconds;
+        }
+    }
+
+    private int getNowSeconds()
+    {
+        // this might overrun all 100 years or so.
+        // I think we can live with a faster reload all 100 years
+        // if we can spare needing to deal with atomic updates ;)
+        return (int) TimeUnit.NANOSECONDS.toSeconds(System.nanoTime());
+    }
+
+    private Instant getLastModified()
+    {
+        try
+        {
+            return Files.getLastModifiedTime(Paths.get(propertyFileUrl.toURI())).toInstant();
+        }
+        catch (Exception e)
+        {
+            log.log(Level.WARNING,
+                "Cannot dynamically reload property file {0}. Not able to read last modified date", filePath);
+            return null;
+        }
+    }
+
+    private boolean isFile(URL propertyFileUrl)
+    {
+        return "file".equalsIgnoreCase(propertyFileUrl.getProtocol());
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
     public String getConfigName()
     {
-        return fileName;
+        return filePath;
+    }
+
+    @Override
+    public void setOnAttributeChange(Consumer<Set<String>> reportAttributeChange)
+    {
+        this.reportAttributeChange = reportAttributeChange;
+    }
+
+    @Override
+    public boolean isScannable()
+    {
+        return true;
     }
 }
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java
index cd981cf..8997a1e 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/TypedResolverImpl.java
@@ -550,14 +550,23 @@
                 break;
             }
 
-            String variableValue = new TypedResolverImpl<String>(this.config, varName)
+            try
+            {
+                String variableValue = new TypedResolverImpl<String>(this.config, varName)
                     .withCurrentProjectStage(this.projectStageAware)
                     .evaluateVariables(true)
                     .getValue();
 
-            if (variableValue != null)
+                if (variableValue != null)
+                {
+                    value = value.replace("${" + varName + "}", variableValue);
+                }
+            }
+            catch (StackOverflowError soe)
             {
-                value = value.replace("${" + varName + "}", variableValue);
+                // just log out
+                LOG.severe("Recursive variable resolution detected for " + varName);
+                throw soe;
             }
             startVar++;
         }
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodStorageImpl.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodStorageImpl.java
index 82c8981..6abdbef 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodStorageImpl.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exception/control/HandlerMethodStorageImpl.java
@@ -44,7 +44,7 @@
 {
     private final Map<Type, Collection<HandlerMethod<? extends Throwable>>> allHandlers;
 
-    private Logger log = Logger.getLogger(HandlerMethodStorageImpl.class.toString());
+    private Logger log = Logger.getLogger(HandlerMethodStorageImpl.class.getName());
 
     HandlerMethodStorageImpl(Map<Type, Collection<HandlerMethod<? extends Throwable>>> allHandlers)
     {
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java
index 340f721..73cd515 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeEarFileTest.java
@@ -19,10 +19,13 @@
 package org.apache.deltaspike.test.core.api.alternative.local;
 
 import org.apache.deltaspike.test.category.EnterpriseArchiveProfileCategory;
+import org.apache.deltaspike.test.util.ArchiveUtils;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -30,6 +33,10 @@
 @Category(EnterpriseArchiveProfileCategory.class)
 public class BdaAlternativeEarFileTest extends BdaAlternativeTest
 {
+    public static final String CONFIG = "deltaspike.bean-manager.delegate_lookup=false\n" // Weld3 bug :(
+        + "globalAlternatives.org.apache.deltaspike.test.core.api.alternative.local.BaseBean2="
+        + "org.apache.deltaspike.test.core.api.alternative.local.SubBaseBean2";
+
     @Deployment
     public static EnterpriseArchive deployEar()
     {
@@ -37,7 +44,13 @@
         String simpleName = BdaAlternativeWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
 
+        JavaArchive globalAlternativeConfigJar = ShrinkWrap.create(JavaArchive.class, "globalAlternativesConfig.jar")
+            .addAsManifestResource(new StringAsset(CONFIG),
+                "apache-deltaspike.properties");
+
+
         return ShrinkWrap.create(EnterpriseArchive.class, archiveName + ".ear")
-                .addAsModule(BdaAlternativeWarFileTest.deploy());
+            .addAsLibrary(globalAlternativeConfigJar)
+            .addAsModule(BdaAlternativeWarFileTest.deploy());
     }
 }
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeTest.java
index 3a409ff..05b0b6c 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeTest.java
@@ -42,10 +42,8 @@
     @Test
     public void alternativeImplementationWithClassAsBaseType()
     {
-        List<BaseBean2> testBeans = BeanProvider.getContextualReferences(BaseBean2.class, true);
-
-        Assert.assertEquals(1, testBeans.size());
-        Assert.assertEquals(BaseBean2.class.getName(), testBeans.get(0).getClass().getName());
+        BaseBean2 baseBean2 = BeanProvider.getContextualReference(BaseBean2.class);
+        Assert.assertNotNull(baseBean2);
     }
 
     /*
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeWarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeWarFileTest.java
index 126ca32..8612911 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeWarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/alternative/local/BdaAlternativeWarFileTest.java
@@ -45,7 +45,7 @@
         String simpleName = BdaAlternativeWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
 
-        JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, "securedAnnotationTest.jar")
+        JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, archiveName + ".jar")
                 .addPackage(BdaAlternativeWarFileTest.class.getPackage())
                 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
 
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/propertyconfigsource/BaseTestConfigProperty.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/propertyconfigsource/BaseTestConfigProperty.java
index 61ababe..4362d76 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/propertyconfigsource/BaseTestConfigProperty.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/config/propertyconfigsource/BaseTestConfigProperty.java
@@ -20,12 +20,20 @@
 
 import javax.inject.Inject;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.util.Collections;
+
+import org.apache.deltaspike.core.api.config.ConfigResolver;
+import org.apache.deltaspike.core.impl.config.PropertyFileConfigSource;
 import org.junit.Assert;
 import org.junit.Test;
 
 public class BaseTestConfigProperty
 {
     protected final static String CONFIG_FILE_NAME = "myconfig.properties";
+    protected static final String CONFIG_VALUE = "deltaspike.dynamic.reloadable.config.value";
 
     @Inject
     private MyBean myBean;
@@ -44,6 +52,33 @@
         Assert.assertEquals(8589934592l, myBean.getLongConfig());
         Assert.assertEquals(-1.1f, myBean.getFloatConfig(), 0);
         Assert.assertEquals(4e40, myBean.getDoubleConfig(), 0);
+    }
 
+    @Test
+    public void testDynamicReload() throws Exception
+    {
+        File prop = File.createTempFile("deltaspike-test", ".properties");
+        try (BufferedWriter bw = new BufferedWriter(new FileWriter(prop)))
+        {
+            bw.write(CONFIG_VALUE + "=1\ndeltaspike_reload=1\n");
+            bw.flush();
+        }
+        prop.deleteOnExit();
+
+        final PropertyFileConfigSource dynamicReloadConfigSource = new PropertyFileConfigSource(prop.toURI().toURL());
+        ConfigResolver.addConfigSources(Collections.singletonList(dynamicReloadConfigSource));
+
+        Assert.assertEquals("1", ConfigResolver.getPropertyValue(CONFIG_VALUE));
+
+        // we need to take care of file system granularity
+        Thread.sleep(2100L);
+
+        try (BufferedWriter bw = new BufferedWriter(new FileWriter(prop)))
+        {
+            bw.write(CONFIG_VALUE + "=2\ndeltaspike_reload=1\n");
+            bw.flush();
+        }
+
+        Assert.assertEquals("2", ConfigResolver.getPropertyValue(CONFIG_VALUE));
     }
 }
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java
index 8863c5a..8a21635 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeEarFileTest.java
@@ -18,14 +18,20 @@
  */
 package org.apache.deltaspike.test.core.api.exclude;
 
+import java.io.IOException;
+
 import org.apache.deltaspike.test.category.EnterpriseArchiveProfileCategory;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
+import static org.apache.deltaspike.test.core.api.exclude.ExcludeWarFileTest.getConfigContent;
+
 /**
  * Tests for {@link org.apache.deltaspike.core.api.exclude.Exclude}
  */
@@ -33,14 +39,22 @@
 @Category(EnterpriseArchiveProfileCategory.class)
 public class ExcludeEarFileTest extends ExcludeTest
 {
+
     @Deployment
-    public static EnterpriseArchive deployEar()
+    public static EnterpriseArchive deployEar() throws IOException
     {
         //workaround for tomee - the ear-file needs to have the same name as the war-file
         String simpleName = ExcludeWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
 
+
+        // we needs to package the config into the EAR, as Weld3 based app servers boot the whole container
+        // with just the EAR classloader. No WAR file packaged config is reachable for BeforeBeanDiscovery
+        JavaArchive excludeConfigJar = ShrinkWrap.create(JavaArchive.class, "excludeConfig.jar")
+            .addAsManifestResource(new StringAsset(getConfigContent()), "apache-deltaspike.properties");
+
         return ShrinkWrap.create(EnterpriseArchive.class, archiveName + ".ear")
+                .addAsLibrary(excludeConfigJar)
                 .addAsModule(ExcludeWarFileTest.deploy());
     }
 }
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java
index 156201d..1085322 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/exclude/ExcludeWarFileTest.java
@@ -35,7 +35,9 @@
 import org.junit.runner.RunWith;
 
 import javax.enterprise.inject.spi.Extension;
-import java.net.URL;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 
 /**
  * Tests for {@link org.apache.deltaspike.core.api.exclude.Exclude}
@@ -47,7 +49,7 @@
      * X TODO creating a WebArchive is only a workaround because JavaArchive cannot contain other archives.
      */
     @Deployment
-    public static WebArchive deploy()
+    public static WebArchive deploy() throws IOException
     {
         String simpleName = ExcludeWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
@@ -55,16 +57,12 @@
         // in case the Arquillian adapter doesn't properly handle resources on the classpath
         ProjectStageProducer.setProjectStage(ProjectStage.Production);
 
-        URL fileUrl = ExcludeWarFileTest.class.getClassLoader()
-                .getResource("META-INF/apache-deltaspike.properties");
-
         JavaArchive testJar = ShrinkWrap.create(JavaArchive.class, "excludeTest.jar")
                 .addPackage(ExcludeWarFileTest.class.getPackage())
                 .addPackage(TestClassDeactivator.class.getPackage())
-                .addAsManifestResource(FileUtils.getFileForURL(fileUrl.toString()))
-                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")
-                .addAsResource(new StringAsset("org.apache.deltaspike.ProjectStage = Production"),
-                    "apache-deltaspike.properties"); // when deployed on some remote container;
+                .addAsManifestResource(new StringAsset(getConfigContent()),
+                    "apache-deltaspike.properties") // when deployed on some remote container;
+                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
 
         return ShrinkWrap.create(WebArchive.class, archiveName + ".war")
                 .addAsLibraries(ArchiveUtils.getDeltaSpikeCoreArchive())
@@ -73,6 +71,14 @@
                 .addAsServiceProvider(Extension.class, ExcludeExtension.class);
     }
 
+    public static String getConfigContent() throws IOException
+    {
+        byte[] configContent = Files.readAllBytes(FileUtils.getFileForURL(ExcludeWarFileTest.class.getClassLoader()
+                .getResource("META-INF/apache-deltaspike.properties").toString()).toPath());
+        return new String(configContent, StandardCharsets.UTF_8) +
+            "\norg.apache.deltaspike.ProjectStage = Production";
+    }
+
     @AfterClass
     public static void resetProjectStage() {
         ProjectStageProducer.setProjectStage(null);
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/projectstage/ProjectStageProducerTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/projectstage/ProjectStageProducerTest.java
index df858f0..5c774ad 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/projectstage/ProjectStageProducerTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/api/projectstage/ProjectStageProducerTest.java
@@ -80,6 +80,9 @@
             {
                 System.setProperty(ProjectStageProducer.CONFIG_SETTING_KEYS[i], oldEnvVals[i]);
             }
+
+            // also reset the ProjectStageProducer again
+            ProjectStageProducer.setProjectStage(null);
         }
     }
 }
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ClassDeactivationWarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ClassDeactivationWarFileTest.java
index f2b32cc..76f95c4 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ClassDeactivationWarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/activation/ClassDeactivationWarFileTest.java
@@ -35,7 +35,7 @@
 public class ClassDeactivationWarFileTest extends ClassDeactivationTest
 {
     /**
-     *X TODO creating a WebArchive is only a workaround because JavaArchive cannot contain other archives.
+     * NOTE: creating a WebArchive is only a workaround because JavaArchive cannot contain other archives.
      */
     @Deployment
     public static WebArchive deploy()
diff --git a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/jmx/SimpleRegistrationEarFileTest.java b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/jmx/SimpleRegistrationEarFileTest.java
index 2221363..16f1989 100644
--- a/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/jmx/SimpleRegistrationEarFileTest.java
+++ b/deltaspike/core/impl/src/test/java/org/apache/deltaspike/test/core/impl/jmx/SimpleRegistrationEarFileTest.java
@@ -22,7 +22,9 @@
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -30,6 +32,8 @@
 @Category(EnterpriseArchiveProfileCategory.class)
 public class SimpleRegistrationEarFileTest extends SimpleRegistrationTest
 {
+    public static final String CONFIG = "deltaspike.bean-manager.delegate_lookup=false\n"; // Weld3 bug :(
+
     @Deployment
     public static EnterpriseArchive deployEar()
     {
@@ -37,7 +41,12 @@
         String simpleName = SimpleRegistrationWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
 
+        JavaArchive configJar = ShrinkWrap.create(JavaArchive.class, "registrationConfig.jar")
+            .addAsManifestResource(new StringAsset(CONFIG),
+                "apache-deltaspike.properties");
+
         return ShrinkWrap.create(EnterpriseArchive.class, archiveName + ".ear")
+                .addAsLibrary(configJar)
                 .addAsModule(SimpleRegistrationWarFileTest.deploy());
     }
 }
diff --git a/deltaspike/core/pom.xml b/deltaspike/core/pom.xml
index 0bad261..e4d480d 100644
--- a/deltaspike/core/pom.xml
+++ b/deltaspike/core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent-code</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../parent/code/pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/dist/bom/pom.xml b/deltaspike/dist/bom/pom.xml
index 0fa709e..8df1057 100644
--- a/deltaspike/dist/bom/pom.xml
+++ b/deltaspike/dist/bom/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.distribution</groupId>
         <artifactId>distributions-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.distribution</groupId>
     <artifactId>distributions-bom</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Distribution Bill of Materials</name>
diff --git a/deltaspike/dist/full/pom.xml b/deltaspike/dist/full/pom.xml
index c266a87..9cfbe92 100644
--- a/deltaspike/dist/full/pom.xml
+++ b/deltaspike/dist/full/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.distribution</groupId>
         <artifactId>distributions-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>distribution-full</artifactId>
diff --git a/deltaspike/dist/pom.xml b/deltaspike/dist/pom.xml
index dea144f..b26f17c 100644
--- a/deltaspike/dist/pom.xml
+++ b/deltaspike/dist/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.apache.deltaspike.distribution</groupId>
     <artifactId>distributions-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Distribution</name>
diff --git a/deltaspike/examples/data-examples/pom.xml b/deltaspike/examples/data-examples/pom.xml
index 2c85d4e..7938b50 100644
--- a/deltaspike/examples/data-examples/pom.xml
+++ b/deltaspike/examples/data-examples/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-data-examples</artifactId>
diff --git a/deltaspike/examples/jpa-examples/pom.xml b/deltaspike/examples/jpa-examples/pom.xml
index ab5589d..67044dc 100644
--- a/deltaspike/examples/jpa-examples/pom.xml
+++ b/deltaspike/examples/jpa-examples/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-jpa-examples</artifactId>
diff --git a/deltaspike/examples/jse-examples/pom.xml b/deltaspike/examples/jse-examples/pom.xml
index 3aaff43..a2021e9 100644
--- a/deltaspike/examples/jse-examples/pom.xml
+++ b/deltaspike/examples/jse-examples/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.examples</groupId>
diff --git a/deltaspike/examples/jsf-examples/pom.xml b/deltaspike/examples/jsf-examples/pom.xml
index 6743258..e024a6c 100644
--- a/deltaspike/examples/jsf-examples/pom.xml
+++ b/deltaspike/examples/jsf-examples/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-jsf-example</artifactId>
diff --git a/deltaspike/examples/jsf-playground/pom.xml b/deltaspike/examples/jsf-playground/pom.xml
index f8b1878..5d3cb28 100644
--- a/deltaspike/examples/jsf-playground/pom.xml
+++ b/deltaspike/examples/jsf-playground/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-jsf-playground</artifactId>
diff --git a/deltaspike/examples/pom.xml b/deltaspike/examples/pom.xml
index ca0fcd7..16de566 100644
--- a/deltaspike/examples/pom.xml
+++ b/deltaspike/examples/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/examples/scheduler-playground/pom.xml b/deltaspike/examples/scheduler-playground/pom.xml
index 9e12587..c1eb147 100644
--- a/deltaspike/examples/scheduler-playground/pom.xml
+++ b/deltaspike/examples/scheduler-playground/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.examples</groupId>
diff --git a/deltaspike/examples/security-requested-page-after-login-cdi/pom.xml b/deltaspike/examples/security-requested-page-after-login-cdi/pom.xml
index 861acd8..d073d1f 100644
--- a/deltaspike/examples/security-requested-page-after-login-cdi/pom.xml
+++ b/deltaspike/examples/security-requested-page-after-login-cdi/pom.xml
@@ -41,7 +41,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
     
     <artifactId>deltaspike-security-requested-page-after-login-cdi</artifactId>
diff --git a/deltaspike/examples/security-requested-page-after-login-picketlink/pom.xml b/deltaspike/examples/security-requested-page-after-login-picketlink/pom.xml
index ec9d1c2..4fcf9d0 100644
--- a/deltaspike/examples/security-requested-page-after-login-picketlink/pom.xml
+++ b/deltaspike/examples/security-requested-page-after-login-picketlink/pom.xml
@@ -41,7 +41,7 @@
     <parent>
         <groupId>org.apache.deltaspike.examples</groupId>
         <artifactId>examples-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-security-requested-page-after-login-picketlink</artifactId>
diff --git a/deltaspike/modules/bean-validation/api/pom.xml b/deltaspike/modules/bean-validation/api/pom.xml
index 5230ecc..6900a51 100644
--- a/deltaspike/modules/bean-validation/api/pom.xml
+++ b/deltaspike/modules/bean-validation/api/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.deltaspike.modules</groupId>
 		<artifactId>bean-validation-module-project</artifactId>
-		<version>1.9.4-SNAPSHOT</version>
+		<version>1.9.5-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>deltaspike-bean-validation-module-api</artifactId>
diff --git a/deltaspike/modules/bean-validation/impl/pom.xml b/deltaspike/modules/bean-validation/impl/pom.xml
index 1150a4e..1dbd8d5 100644
--- a/deltaspike/modules/bean-validation/impl/pom.xml
+++ b/deltaspike/modules/bean-validation/impl/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.deltaspike.modules</groupId>
 		<artifactId>bean-validation-module-project</artifactId>
-		<version>1.9.4-SNAPSHOT</version>
+		<version>1.9.5-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>deltaspike-bean-validation-module-impl</artifactId>
diff --git a/deltaspike/modules/bean-validation/impl/src/main/java/org/apache/deltaspike/beanvalidation/impl/CDIAwareConstraintValidatorFactory.java b/deltaspike/modules/bean-validation/impl/src/main/java/org/apache/deltaspike/beanvalidation/impl/CDIAwareConstraintValidatorFactory.java
index d5ec4a9..3c20205 100644
--- a/deltaspike/modules/bean-validation/impl/src/main/java/org/apache/deltaspike/beanvalidation/impl/CDIAwareConstraintValidatorFactory.java
+++ b/deltaspike/modules/bean-validation/impl/src/main/java/org/apache/deltaspike/beanvalidation/impl/CDIAwareConstraintValidatorFactory.java
@@ -31,7 +31,7 @@
 
 /**
  * A factory for creating CDI Aware/Enabled ConstraintValidators.
- * 
+ *
  */
 public class CDIAwareConstraintValidatorFactory implements
         ConstraintValidatorFactory
@@ -40,9 +40,8 @@
     private static volatile Boolean releaseInstanceMethodFound;
     private static Method releaseInstanceMethod;
 
-    private final Logger log = Logger
-            .getLogger(CDIAwareConstraintValidatorFactory.class.toString());
-    
+    private final Logger log = Logger.getLogger(CDIAwareConstraintValidatorFactory.class.getName());
+
     private final ConstraintValidatorFactory delegate;
 
     public CDIAwareConstraintValidatorFactory()
@@ -50,7 +49,7 @@
         delegate = Validation.byDefaultProvider().configure().getDefaultConstraintValidatorFactory();
         if (log.isLoggable(Level.CONFIG))
         {
-            log.config("Setting up delegate ConstraintValidatorFactory as " + 
+            log.config("Setting up delegate ConstraintValidatorFactory as " +
                     delegate.getClass().getCanonicalName());
         }
     }
diff --git a/deltaspike/modules/bean-validation/pom.xml b/deltaspike/modules/bean-validation/pom.xml
index faba5a7..f460205 100644
--- a/deltaspike/modules/bean-validation/pom.xml
+++ b/deltaspike/modules/bean-validation/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>bean-validation-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike BeanValidation-Module</name>
diff --git a/deltaspike/modules/data/api/pom.xml b/deltaspike/modules/data/api/pom.xml
index 4650fdf..4318c33 100755
--- a/deltaspike/modules/data/api/pom.xml
+++ b/deltaspike/modules/data/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>data-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-data-module-api</artifactId>
diff --git a/deltaspike/modules/data/impl/pom.xml b/deltaspike/modules/data/impl/pom.xml
index 8ca8926..1001b9c 100755
--- a/deltaspike/modules/data/impl/pom.xml
+++ b/deltaspike/modules/data/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>data-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-data-module-impl</artifactId>
diff --git a/deltaspike/modules/data/pom.xml b/deltaspike/modules/data/pom.xml
index afd3703..eb1adbd 100755
--- a/deltaspike/modules/data/pom.xml
+++ b/deltaspike/modules/data/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>data-module-project</artifactId>
diff --git a/deltaspike/modules/data/test-ee7/pom.xml b/deltaspike/modules/data/test-ee7/pom.xml
index 41bb552..f2d19dc 100644
--- a/deltaspike/modules/data/test-ee7/pom.xml
+++ b/deltaspike/modules/data/test-ee7/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>data-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-data-module-test-ee7</artifactId>
diff --git a/deltaspike/modules/jpa/api/pom.xml b/deltaspike/modules/jpa/api/pom.xml
index 0eb9f22..ab6b84b 100644
--- a/deltaspike/modules/jpa/api/pom.xml
+++ b/deltaspike/modules/jpa/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>jpa-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/jpa/impl/pom.xml b/deltaspike/modules/jpa/impl/pom.xml
index 51d2824..0af01c8 100644
--- a/deltaspike/modules/jpa/impl/pom.xml
+++ b/deltaspike/modules/jpa/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>jpa-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/entitymanager/EntityManagerFactoryProducer.java b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/entitymanager/EntityManagerFactoryProducer.java
index 6b5e486..14e8646 100644
--- a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/entitymanager/EntityManagerFactoryProducer.java
+++ b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/entitymanager/EntityManagerFactoryProducer.java
@@ -77,7 +77,7 @@
 
         if (unitNameAnnotation == null)
         {
-            LOG.warning("@PersisteneUnitName annotation could not be found at EntityManagerFactory injection point!");
+            LOG.warning("@PersistenceUnitName annotation could not be found at EntityManagerFactory injection point!");
 
             return null;
         }
diff --git a/deltaspike/modules/jpa/pom.xml b/deltaspike/modules/jpa/pom.xml
index c32684f..e72cba8 100644
--- a/deltaspike/modules/jpa/pom.xml
+++ b/deltaspike/modules/jpa/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>jpa-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike JPA-Module</name>
diff --git a/deltaspike/modules/jsf/api/pom.xml b/deltaspike/modules/jsf/api/pom.xml
index b3205c9..7ccf6b9 100644
--- a/deltaspike/modules/jsf/api/pom.xml
+++ b/deltaspike/modules/jsf/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>jsf-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/jsf/impl-ee6/pom.xml b/deltaspike/modules/jsf/impl-ee6/pom.xml
index dc614ae..46476cf 100644
--- a/deltaspike/modules/jsf/impl-ee6/pom.xml
+++ b/deltaspike/modules/jsf/impl-ee6/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>jsf-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-jsf-module-impl-ee6</artifactId>
diff --git a/deltaspike/modules/jsf/impl/pom.xml b/deltaspike/modules/jsf/impl/pom.xml
index b8201d8..2e4ea7a 100644
--- a/deltaspike/modules/jsf/impl/pom.xml
+++ b/deltaspike/modules/jsf/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>jsf-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/jsf/pom.xml b/deltaspike/modules/jsf/pom.xml
index 8703a15..08d0f90 100644
--- a/deltaspike/modules/jsf/pom.xml
+++ b/deltaspike/modules/jsf/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>jsf-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike JSF-Module</name>
diff --git a/deltaspike/modules/partial-bean/api/pom.xml b/deltaspike/modules/partial-bean/api/pom.xml
index 4251728..2b811be 100644
--- a/deltaspike/modules/partial-bean/api/pom.xml
+++ b/deltaspike/modules/partial-bean/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>partial-bean-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/partial-bean/impl/pom.xml b/deltaspike/modules/partial-bean/impl/pom.xml
index d65fb2a..a2bcc73 100644
--- a/deltaspike/modules/partial-bean/impl/pom.xml
+++ b/deltaspike/modules/partial-bean/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>partial-bean-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/partial-bean/pom.xml b/deltaspike/modules/partial-bean/pom.xml
index cf1a81f..8989793 100644
--- a/deltaspike/modules/partial-bean/pom.xml
+++ b/deltaspike/modules/partial-bean/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>partial-bean-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Partial-Bean-Module</name>
diff --git a/deltaspike/modules/pom.xml b/deltaspike/modules/pom.xml
index 696aba8..80b1e99 100644
--- a/deltaspike/modules/pom.xml
+++ b/deltaspike/modules/pom.xml
@@ -23,13 +23,13 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent-code</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../parent/code/pom.xml</relativePath>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>modules-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Modules</name>
diff --git a/deltaspike/modules/proxy/api/pom.xml b/deltaspike/modules/proxy/api/pom.xml
index b86b30d..835dacc 100644
--- a/deltaspike/modules/proxy/api/pom.xml
+++ b/deltaspike/modules/proxy/api/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.deltaspike.modules</groupId>
 		<artifactId>proxy-module-project</artifactId>
-		<version>1.9.4-SNAPSHOT</version>
+		<version>1.9.5-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>deltaspike-proxy-module-api</artifactId>
diff --git a/deltaspike/modules/proxy/impl-asm/pom.xml b/deltaspike/modules/proxy/impl-asm/pom.xml
index 5ce28dc..684eca3 100644
--- a/deltaspike/modules/proxy/impl-asm/pom.xml
+++ b/deltaspike/modules/proxy/impl-asm/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>proxy-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/modules/proxy/pom.xml b/deltaspike/modules/proxy/pom.xml
index d244504..9248159 100644
--- a/deltaspike/modules/proxy/pom.xml
+++ b/deltaspike/modules/proxy/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>proxy-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Proxy-Module</name>
diff --git a/deltaspike/modules/scheduler/api/pom.xml b/deltaspike/modules/scheduler/api/pom.xml
index 875a20c..06f8117 100644
--- a/deltaspike/modules/scheduler/api/pom.xml
+++ b/deltaspike/modules/scheduler/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>scheduler-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/scheduler/impl/pom.xml b/deltaspike/modules/scheduler/impl/pom.xml
index 3e73333..1dcb7b9 100644
--- a/deltaspike/modules/scheduler/impl/pom.xml
+++ b/deltaspike/modules/scheduler/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>scheduler-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/scheduler/pom.xml b/deltaspike/modules/scheduler/pom.xml
index 8e1f1a6..7e42ad4 100644
--- a/deltaspike/modules/scheduler/pom.xml
+++ b/deltaspike/modules/scheduler/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>scheduler-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Scheduler-Module</name>
diff --git a/deltaspike/modules/security/api/pom.xml b/deltaspike/modules/security/api/pom.xml
index 4ca4abb..56d7af5 100644
--- a/deltaspike/modules/security/api/pom.xml
+++ b/deltaspike/modules/security/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>security-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/security/impl/pom.xml b/deltaspike/modules/security/impl/pom.xml
index ddd117d..bd04ddd 100644
--- a/deltaspike/modules/security/impl/pom.xml
+++ b/deltaspike/modules/security/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>security-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationEarFileTest.java b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationEarFileTest.java
index c97f1e7..ae7b700 100644
--- a/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationEarFileTest.java
+++ b/deltaspike/modules/security/impl/src/test/java/org/apache/deltaspike/test/security/impl/authorization/secured/SecuredAnnotationEarFileTest.java
@@ -22,7 +22,9 @@
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
@@ -34,6 +36,8 @@
 @Category(EnterpriseArchiveProfileCategory.class)
 public class SecuredAnnotationEarFileTest extends SecuredAnnotationTest
 {
+    public static final String CONFIG = "deltaspike.bean-manager.delegate_lookup=false\n"; // Weld3 bug :(
+
     @Deployment
     public static EnterpriseArchive deployEar()
     {
@@ -41,7 +45,12 @@
         String simpleName = SecuredAnnotationWarFileTest.class.getSimpleName();
         String archiveName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
 
+        JavaArchive configJar = ShrinkWrap.create(JavaArchive.class, "dsConfig.jar")
+            .addAsManifestResource(new StringAsset(CONFIG),
+                "apache-deltaspike.properties");
+
         return ShrinkWrap.create(EnterpriseArchive.class, archiveName + ".ear")
+                .addAsLibrary(configJar)
                 .addAsModule(SecuredAnnotationWarFileTest.deploy());
     }
 }
diff --git a/deltaspike/modules/security/pom.xml b/deltaspike/modules/security/pom.xml
index 7980401..673cc4d 100644
--- a/deltaspike/modules/security/pom.xml
+++ b/deltaspike/modules/security/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>security-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Security-Module</name>
diff --git a/deltaspike/modules/servlet/api/pom.xml b/deltaspike/modules/servlet/api/pom.xml
index ace9138..5a39058 100644
--- a/deltaspike/modules/servlet/api/pom.xml
+++ b/deltaspike/modules/servlet/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>servlet-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-servlet-module-api</artifactId>
diff --git a/deltaspike/modules/servlet/impl/pom.xml b/deltaspike/modules/servlet/impl/pom.xml
index 4038dc1..ea0a9d6 100644
--- a/deltaspike/modules/servlet/impl/pom.xml
+++ b/deltaspike/modules/servlet/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>servlet-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <artifactId>deltaspike-servlet-module-impl</artifactId>
diff --git a/deltaspike/modules/servlet/pom.xml b/deltaspike/modules/servlet/pom.xml
index 37c7fa3..120c06e 100644
--- a/deltaspike/modules/servlet/pom.xml
+++ b/deltaspike/modules/servlet/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>servlet-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Servlet-Module</name>
diff --git a/deltaspike/modules/test-control/api/pom.xml b/deltaspike/modules/test-control/api/pom.xml
index ecdd1af..b6c3bf2 100644
--- a/deltaspike/modules/test-control/api/pom.xml
+++ b/deltaspike/modules/test-control/api/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>test-control-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
diff --git a/deltaspike/modules/test-control/impl/pom.xml b/deltaspike/modules/test-control/impl/pom.xml
index 5c12ddd..333d5a9 100644
--- a/deltaspike/modules/test-control/impl/pom.xml
+++ b/deltaspike/modules/test-control/impl/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>test-control-module-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
@@ -190,6 +190,22 @@
 
                 <!-- The remaining bits of this profile are located under deltaspike/parent/code/pom.xml -->
             </dependencies>
+
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <!--
+                                Weld2 behaves weird when it comes to excluding @Alternative classes
+                                Those tests work fine with Weld1, Weld3 and all OWB versions, but not with Weld2
+                            -->
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
         </profile>
         <profile>
             <id>Weld3</id>
diff --git a/deltaspike/modules/test-control/pom.xml b/deltaspike/modules/test-control/pom.xml
index d946cc6..b2b5703 100644
--- a/deltaspike/modules/test-control/pom.xml
+++ b/deltaspike/modules/test-control/pom.xml
@@ -23,12 +23,12 @@
     <parent>
         <groupId>org.apache.deltaspike.modules</groupId>
         <artifactId>modules-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.deltaspike.modules</groupId>
     <artifactId>test-control-module-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Test-Control-Module</name>
diff --git a/deltaspike/parent/code/pom.xml b/deltaspike/parent/code/pom.xml
index d1afb08..d8c2fd7 100644
--- a/deltaspike/parent/code/pom.xml
+++ b/deltaspike/parent/code/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -41,13 +41,13 @@
         <version.activation>1.1.1</version.activation>
         <version.annotation>1.3.2</version.annotation>
         <bval.artifactId>bval-jsr303</bval.artifactId>
-		<validation.artifactId>geronimo-validation_1.0_spec</validation.artifactId>
+        <validation.artifactId>geronimo-validation_1.0_spec</validation.artifactId>
         <jboss.as.version>7.1.1.Final</jboss.as.version>
         <wildfly.version>10.1.0.Final</wildfly.version>
         <wildfly.arquillian.version>1.0.2.Final</wildfly.arquillian.version>
         <glassfish3.version>3.1.2.2</glassfish3.version>
         <glassfish4.version>4.0</glassfish4.version>
-        <payara.version>4.1.1.162</payara.version>
+        <payara.version>4.1.2.181</payara.version>
         <wls.version>12.1</wls.version>
     </properties>
 
@@ -72,7 +72,7 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
-		
+        
         <!-- Preparation for Java 9+, include a dependency on the JAXB APIs -->
         <dependency>
             <groupId>javax.xml.bind</groupId>
@@ -183,13 +183,13 @@
                 <jdk>[1.9,)</jdk>
             </activation>
             <properties>
-				<!-- Need newer implementations to be able to run on Java9+ -->
+                <!-- Need newer implementations to be able to run on Java9+ -->
                 <bval.artifactId>bval-jsr</bval.artifactId>
-				<validation.artifactId>geronimo-validation_1.1_spec</validation.artifactId>
-				<hibernate.validator.version>6.0.17.Final</hibernate.validator.version>
+                <validation.artifactId>geronimo-validation_1.1_spec</validation.artifactId>
+                <hibernate.validator.version>6.0.17.Final</hibernate.validator.version>
             </properties>
         </profile>
-		
+        
         <profile>
             <!-- use this profile to compile and test DeltaSpike with Apache OpenWebBeans -->
             <id>OWB</id>
@@ -260,10 +260,10 @@
                     <scope>test</scope>
                 </dependency>
 
-				<dependency>
-					<groupId>org.apache.geronimo.specs</groupId>
-					<artifactId>${validation.artifactId}</artifactId>
-				</dependency>
+                <dependency>
+                    <groupId>org.apache.geronimo.specs</groupId>
+                    <artifactId>${validation.artifactId}</artifactId>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.bval</groupId>
                     <artifactId>${bval.artifactId}</artifactId>
@@ -360,10 +360,10 @@
                     <scope>test</scope>
                 </dependency>
 
-				<dependency>
-					<groupId>org.apache.geronimo.specs</groupId>
-					<artifactId>${validation.artifactId}</artifactId>
-				</dependency>
+                <dependency>
+                    <groupId>org.apache.geronimo.specs</groupId>
+                    <artifactId>${validation.artifactId}</artifactId>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.bval</groupId>
                     <artifactId>${bval.artifactId}</artifactId>
@@ -466,10 +466,10 @@
                     <scope>test</scope>
                 </dependency>
 
-				<dependency>
-					<groupId>org.apache.geronimo.specs</groupId>
-					<artifactId>${validation.artifactId}</artifactId>
-				</dependency>
+                <dependency>
+                    <groupId>org.apache.geronimo.specs</groupId>
+                    <artifactId>${validation.artifactId}</artifactId>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.bval</groupId>
                     <artifactId>${bval.artifactId}</artifactId>
@@ -695,7 +695,7 @@
 
             <properties>
                 <!-- Actual Weld version used with this profile -->
-                <weld.version>3.0.4.Final</weld.version>
+                <weld.version>3.1.3.Final</weld.version>
                 <cdicontainer.version>weld-${weld.version}</cdicontainer.version>
             </properties>
             
@@ -753,7 +753,11 @@
                     <groupId>org.jboss.weld</groupId>
                     <artifactId>weld-api</artifactId>
                 </dependency>
-                
+                <dependency>
+                    <groupId>org.jboss.weld</groupId>
+                    <artifactId>weld-spi</artifactId>
+                </dependency>
+
                 <!--Other than Weld dependencies-->
                 <dependency>
                     <groupId>javax.el</groupId>
@@ -2088,9 +2092,9 @@
                 </dependency>
                 <!-- Also works fine with Payara -->
                 <dependency>
-                    <groupId>org.jboss.arquillian.container</groupId>
-                    <artifactId>arquillian-glassfish-managed-3.1</artifactId>
-                    <version>1.0.0.CR4</version>
+                    <groupId>fish.payara.arquillian</groupId>
+                    <artifactId>arquillian-payara-server-4-managed</artifactId>
+                    <version>1.1</version>
                     <scope>test</scope>
                 </dependency>
             </dependencies>
diff --git a/deltaspike/parent/pom.xml b/deltaspike/parent/pom.xml
index e9f0253..d606aaa 100644
--- a/deltaspike/parent/pom.xml
+++ b/deltaspike/parent/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike-project</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -73,7 +73,7 @@
         <mojarra1.version>1.2_14</mojarra1.version>
 
         <!-- used for some bytecode proxy stuff. Shaded in -->
-        <asm.version>7.2</asm.version>
+        <asm.version>8.0.1</asm.version>
 
         <!-- Geronimo specs -->
         <geronimo-annotation_1.2_spec.version>1.0</geronimo-annotation_1.2_spec.version>
diff --git a/deltaspike/pom.xml b/deltaspike/pom.xml
index b7a8f5e..5021ed2 100644
--- a/deltaspike/pom.xml
+++ b/deltaspike/pom.xml
@@ -42,7 +42,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -56,7 +56,7 @@
     -->
     <groupId>org.apache.deltaspike</groupId>
     <artifactId>deltaspike-project</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Sources</name>
diff --git a/deltaspike/test-utils/pom.xml b/deltaspike/test-utils/pom.xml
index fe7f7ce..3ddcdca 100644
--- a/deltaspike/test-utils/pom.xml
+++ b/deltaspike/test-utils/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>parent</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
diff --git a/deltaspike/test-utils/src/main/resources/arquillian-jboss.xml b/deltaspike/test-utils/src/main/resources/arquillian-jboss.xml
index e4643d5..ec9937a 100644
--- a/deltaspike/test-utils/src/main/resources/arquillian-jboss.xml
+++ b/deltaspike/test-utils/src/main/resources/arquillian-jboss.xml
@@ -62,6 +62,9 @@
         <configuration>
             <property name="jbossHome">${arquillian.jboss_home}</property>
             <property name="javaVmArguments">-client -noverify -Xms64m -Xmx1024m -XX:MaxPermSize=512m -Djboss.socket.binding.port-offset=50000 -Dcdicontainer.version=${cdicontainer.version}</property>
+<!-- debug options
+            <property name="javaVmArguments">-client -noverify -Xms64m -Xmx1024m -XX:MaxPermSize=512m -Djboss.socket.binding.port-offset=50000 -Dcdicontainer.version=${cdicontainer.version} -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</property>
+-->
             <property name="outputToConsole">false</property>
             <property name="managementPort">59990</property>
         </configuration>
diff --git a/documentation/pom.xml b/documentation/pom.xml
index 324a96e..423d09d 100644
--- a/documentation/pom.xml
+++ b/documentation/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.apache.deltaspike</groupId>
     <artifactId>deltaspike-documentation</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Documentation</name>
diff --git a/pom.xml b/pom.xml
index 75b91a0..d92c797 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
     -->
     <groupId>org.apache.deltaspike</groupId>
     <artifactId>deltaspike</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike</name>
@@ -48,8 +48,8 @@
 
     <properties>
         <asciidoctor.version>1.5.2</asciidoctor.version>
-        <version.deltaspike.latest.stable>1.9.3</version.deltaspike.latest.stable>
-        <version.deltaspike.latest.snapshot>1.9.4-SNAPSHOT</version.deltaspike.latest.snapshot>
+        <version.deltaspike.latest.stable>1.9.4</version.deltaspike.latest.stable>
+        <version.deltaspike.latest.snapshot>1.9.5-SNAPSHOT</version.deltaspike.latest.snapshot>
         <svn.scmPubCheckoutDirectory>${project.build.directory}/co-site</svn.scmPubCheckoutDirectory>
     </properties>
 
diff --git a/site/pom.xml b/site/pom.xml
index 9633ead..90c2dd6 100644
--- a/site/pom.xml
+++ b/site/pom.xml
@@ -24,13 +24,13 @@
     <parent>
         <groupId>org.apache.deltaspike</groupId>
         <artifactId>deltaspike</artifactId>
-        <version>1.9.4-SNAPSHOT</version>
+        <version>1.9.5-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <groupId>org.apache.deltaspike</groupId>
     <artifactId>deltaspike-site</artifactId>
-    <version>1.9.4-SNAPSHOT</version>
+    <version>1.9.5-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>Apache DeltaSpike Site</name>
diff --git a/site/src/main/asciidoc/articles.adoc b/site/src/main/asciidoc/articles.adoc
index e9e65e9..392492a 100644
--- a/site/src/main/asciidoc/articles.adoc
+++ b/site/src/main/asciidoc/articles.adoc
@@ -27,3 +27,6 @@
 * http://rmannibucau.wordpress.com/2013/11/20/deltaspike-data-repositories-with-dtos/[DeltaSpike Data: repositories with DTOs!]
 * http://jaxenter.com/introducing-apache-deltaspike-42925.html[Closing the Gaps: Introducing Apache Deltaspike]
 * http://jsfcorner.blogspot.com.au/2013/01/deltaspike-jsf-message-system.html[DeltaSpike JSF message system]
+* https://medium.com/danieldiasjava/simplificando-persistencia-de-dados-com-apache-deltaspike-data-6fd27bb2d821[Simplificando persistência de Dados com Apache DeltaSpike Data - PT-BR]
+* https://medium.com/danieldiasjava/conhecendo-apache-deltaspike-configuration-a24516468a9b[Conhecendo Apache DeltaSpike: Configuration - PT-BR]
+* https://medium.com/danieldiasjava/conhecendo-apache-deltaspike-injecting-resources-fa4e5585c2ea[Conhecendo Apache DeltaSpike: Injecting Resources - PT-BR]
\ No newline at end of file
diff --git a/site/src/main/asciidoc/external.adoc b/site/src/main/asciidoc/external.adoc
index 150bae0..94edd7a 100644
--- a/site/src/main/asciidoc/external.adoc
+++ b/site/src/main/asciidoc/external.adoc
@@ -74,6 +74,14 @@
 
 **Video:** https://www.youtube.com/watch?v=3McmEi3cs_s
 
+=== Simplificando la persistencia de datos con Apache DeltaSpike Data (Java User Group de Nicaragua)
+
+**Slide:** https://speakerdeck.com/danieldiasjava/simplificando-la-persistencia-de-datos-con-apache-deltaspike-data
+
+**Video:** https://youtu.be/djM51tlJuLs
+
+**Example:** https://github.com/Daniel-Dos/danieldiasjava-palestras/tree/master/JUGNicaragua
+
 == Examples
 
 === IdeaFork (full)
@@ -150,6 +158,26 @@
 
 **Source code:** https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/jax-rs-samples/Jax-rs-deltaspike-angular2-4/jax-rs-sample-cdi-deltaspike-data
 
+=== [spanish] Oracle Helidon with DeltaSpike-Data
+Simple CRUD example based on Helidon and DeltaSpike-data
+
+**Source code:** https://github.com/Daniel-Dos/danieldiasjava-palestras/tree/master/JUGNicaragua
+
+=== [pt-BR] Eclipse vertx with DeltaSpike-Data
+Simple example based on vertx and DeltaSpike-data
+
+**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/vertx
+
+=== [pt-BR] Eclipse vertx with DeltaSpike-Data
+Simple example based on vertx and DeltaSpike-data
+
+**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/vertx
+
+=== [pt-BR] Javalin with DeltaSpike-Data
+Simple example based on Javalin and DeltaSpike-data
+
+**Source code:** https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud/javalin
+
 == Magazines
 
 === [pt-BR] Brazilian Java Magazine
diff --git a/site/src/main/asciidoc/news.adoc b/site/src/main/asciidoc/news.adoc
index a1199b7..2b98572 100644
--- a/site/src/main/asciidoc/news.adoc
+++ b/site/src/main/asciidoc/news.adoc
@@ -4,6 +4,11 @@
 
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR  CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
+== 36th Release (1.9.4) (2020-06-12)
+
+The Apache DeltaSpike team is pleased to announce the 36th release
+(v1.9.4).  Release notes can be found https://s.apache.org/DeltaSpike1.9.4[here]
+
 == 35th Release (1.9.3) (2020-01-27)
 
 The Apache DeltaSpike team is pleased to announce the 35th release
