diff --git a/.gitignore b/.gitignore
index 2db461e..4ebc016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
 .project
 .classpath
 .settings
+.idea
 *.log
 *.iml
 *.ipr
diff --git a/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/PepUtils.java b/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/PepUtils.java
index 40dbe20..69dc0e1 100644
--- a/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/PepUtils.java
+++ b/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/PepUtils.java
@@ -24,7 +24,9 @@
 import org.apache.commons.logging.LogFactory;
 
 import java.io.*;
+import java.util.HashSet;
 import java.util.Properties;
+import java.util.Set;
 
 /**
  *
@@ -64,7 +66,7 @@
 
         // Try the location as a file first.
         File file = new File(propertyFile);
-        InputStream in;
+        InputStream in = null;
         if (file.exists() && file.canRead()) {
             if (!file.isAbsolute()) {
                 file = file.getAbsoluteFile();
@@ -72,15 +74,23 @@
             try {
                 in = new FileInputStream(file);
             } catch (FileNotFoundException e) {
-                logger.info(propertyFile + " is not a file.");
+                logger.error("Error while accessing file: " + propertyFile);
+                throw new IllegalArgumentException(e);
             }
-        }
-
-        in = PepUtils.class.getResourceAsStream(propertyFile);
-
-        if (in == null) {
-            logger.error("Invalid classpath of file location: " + propertyFile);
-            throw new IllegalArgumentException("Invalid classpath or file location: " + propertyFile);
+        } else {
+            Set<ClassLoader> classLoaders = new HashSet<>();
+            classLoaders.add(PepUtils.class.getClassLoader());
+            classLoaders.add(Thread.currentThread().getContextClassLoader());
+            for(ClassLoader classLoader: classLoaders) {
+                in = classLoader.getResourceAsStream(propertyFile);
+                if(in != null) {
+                    break;
+                }
+            }
+            if(in == null) {
+                logger.error("Invalid classpath or file location: " + propertyFile);
+                throw new IllegalArgumentException("Invalid classpath or file location: " + propertyFile);
+            }
         }
 
         try {
diff --git a/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/StdPepAgentFactory.java b/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/StdPepAgentFactory.java
index e6ad7ba..1806e88 100644
--- a/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/StdPepAgentFactory.java
+++ b/openaz-pep/src/main/java/org/apache/openaz/pepapi/std/StdPepAgentFactory.java
@@ -47,8 +47,7 @@
         this.xacmlProperties = properties;
         this.pepConfig = new StdPepConfig(properties);
         try {
-            // FIXME: Error when invoking newInstance() with properties.
-            pdpEngineFactory = PDPEngineFactory.newInstance();
+            pdpEngineFactory = PDPEngineFactory.newInstance(properties);
         } catch (FactoryException e) {
             throw new PepException(e);
         }
diff --git a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestAPI.java b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestAPI.java
index f60f91e..d6c96b4 100644
--- a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestAPI.java
+++ b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestAPI.java
@@ -35,7 +35,7 @@
 
     @Before
     public void setup() {
-        pepAgentFactory = new StdPepAgentFactory("/properties/testapi.xacml.properties");
+        pepAgentFactory = new StdPepAgentFactory("properties/testapi.xacml.properties");
     }
 
     /**
diff --git a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestDataTypes.java b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestDataTypes.java
index 632a8fe..4276ea6 100644
--- a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestDataTypes.java
+++ b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestDataTypes.java
@@ -40,7 +40,7 @@
          * System.setProperty("xacml.properties" ,
          * getClass().getClassLoader().getResource("properties/testdatatypes.xacml.properties").getPath());
          */
-        pepAgentFactory = new StdPepAgentFactory("/properties/testdatatypes.xacml.properties");
+        pepAgentFactory = new StdPepAgentFactory("properties/testdatatypes.xacml.properties");
     }
 
     /**
diff --git a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestMapper.java b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestMapper.java
index 035d644..72a6f88 100644
--- a/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestMapper.java
+++ b/openaz-pep/src/test/java/org/apache/openaz/pepapi/std/test/TestMapper.java
@@ -43,7 +43,7 @@
 
     @Before
     public void setup() {
-        this.pepAgentFactory = new StdPepAgentFactory("/properties/testmapper.xacml.properties");
+        this.pepAgentFactory = new StdPepAgentFactory("properties/testmapper.xacml.properties");
     }
 
     /**
diff --git a/openaz-pep/src/test/resources/properties/testapi.xacml.properties b/openaz-pep/src/test/resources/properties/testapi.xacml.properties
index 75c84a3..7ba87d7 100755
--- a/openaz-pep/src/test/resources/properties/testapi.xacml.properties
+++ b/openaz-pep/src/test/resources/properties/testapi.xacml.properties
@@ -2,7 +2,7 @@
 # Standard API Factories
 #
 xacml.dataTypeFactory=org.apache.openaz.xacml.std.StdDataTypeFactory
-xacml.pdpEngineFactory=org.apache.openaz.xacmlatt.pdp.ATTPDPEngineFactory
+xacml.pdpEngineFactory=org.apache.openaz.xacml.pdp.OpenAZPDPEngineFactory
 xacml.pepEngineFactory=org.apache.openaz.xacml.std.pep.StdEngineFactory
 xacml.pipFinderFactory=org.apache.openaz.xacml.std.pip.StdPIPFinderFactory
 
diff --git a/openaz-pep/src/test/resources/properties/testdatatypes.xacml.properties b/openaz-pep/src/test/resources/properties/testdatatypes.xacml.properties
index ee83c87..c4e8ef5 100755
--- a/openaz-pep/src/test/resources/properties/testdatatypes.xacml.properties
+++ b/openaz-pep/src/test/resources/properties/testdatatypes.xacml.properties
@@ -2,7 +2,7 @@
 # Standard API Factories
 #
 xacml.dataTypeFactory=org.apache.openaz.xacml.std.StdDataTypeFactory
-xacml.pdpEngineFactory=org.apache.openaz.xacmlatt.pdp.ATTPDPEngineFactory
+xacml.pdpEngineFactory=org.apache.openaz.xacml.pdp.OpenAZPDPEngineFactory
 xacml.pepEngineFactory=org.apache.openaz.xacml.std.pep.StdEngineFactory
 xacml.pipFinderFactory=org.apache.openaz.xacml.std.pip.StdPIPFinderFactory
 
diff --git a/openaz-pep/src/test/resources/properties/testmapper.xacml.properties b/openaz-pep/src/test/resources/properties/testmapper.xacml.properties
index 676b748..22c67a3 100755
--- a/openaz-pep/src/test/resources/properties/testmapper.xacml.properties
+++ b/openaz-pep/src/test/resources/properties/testmapper.xacml.properties
@@ -2,7 +2,7 @@
 # Standard API Factories
 #
 xacml.dataTypeFactory=org.apache.openaz.xacml.std.StdDataTypeFactory
-xacml.pdpEngineFactory=org.apache.openaz.xacmlatt.pdp.ATTPDPEngineFactory
+xacml.pdpEngineFactory=org.apache.openaz.xacml.pdp.OpenAZPDPEngineFactory
 xacml.pepEngineFactory=org.apache.openaz.xacml.std.pep.StdEngineFactory
 xacml.pipFinderFactory=org.apache.openaz.xacml.std.pip.StdPIPFinderFactory
 
