diff --git a/engine/list.inc b/engine/list.inc
index c14cbaf..84565a0 100644
--- a/engine/list.inc
+++ b/engine/list.inc
@@ -1793,6 +1793,13 @@ class PGPBody extends PGPList {
           $strings[] = $indent . $statement->toString() . ";";
           break;
 
+        case T_NAMESPACE:
+        case T_USE:
+          // @todo Is it possible to declare a namespace inside a class or function?
+          // If not, then we don't need the $indent.
+          $strings[] = $indent . $statement->toString() . ";";
+          break;
+
         case T_INLINE_HTML:
           // 2009-06-13 Inline html
           $strings[] = $current->statementValue('value');
diff --git a/engine/object.inc b/engine/object.inc
index dc4d296..ecdf2b4 100644
--- a/engine/object.inc
+++ b/engine/object.inc
@@ -667,15 +667,15 @@ class PGPClass extends PGPBase {
 
         case 'extends':
           // Add class and interface items.
-          if ($element) {
-            $header .= $space . 'extends ' . implode(', ', $element);
+          if (is_object($element) && !$element->isEmpty()) { // if ($element) {
+            $header .= $space . 'extends ' . $element->toString(); // $header .= $space . 'extends ' . implode(', ', $element);
           }
           break;
 
         case 'implements':
           // Add class items.
-          if ($element) {
-            $header .= $space . 'implements ' . implode(', ', $element);
+          if (is_object($element) && !$element->isEmpty()) { // if ($element) {
+            $header .= $space . 'implements ' . $element->toString(); // $header .= $space . 'implements ' . implode(', ', $element);
           }
           break;
 
diff --git a/engine/reader.inc b/engine/reader.inc
index 526ef84..748fff9 100644
--- a/engine/reader.inc
+++ b/engine/reader.inc
@@ -748,8 +748,24 @@ class PGPReader extends PGPParser {
           break;
 
         case T_NEW: // 2010-03-02 Added. Example: new Exception(..);
-          prev($this->tokens);
-          $node->data = $this->buildAssignment($modifiers);
+//           prev($this->tokens);
+//           $node->data = $this->buildAssignment($modifiers);
+          $node->data = $this->buildFunctionCall(TRUE);
+          $this->functionCalls[] = &$node/*->data*/;
+          break;
+
+        case T_NAMESPACE:
+        case T_USE:
+//           prev($this->tokens);
+//           $node->data = $this->buildNamespace();
+          // @see http://www.php.net/manual/en/language.namespaces.definitionmultiple.php
+          // Can be surrounded by brackets, global namespace has no name.
+          // @see http://www.php.net/manual/en/language.namespaces.basics.php
+          // Statement may begin with a back slash.
+          // Seems like it would make sense to concatenate the namespace as a single item.
+          // Add another item to function call being the namespace along with name.
+          $node->data = $this->buildFunctionCall(TRUE);
+          $this->functionCalls[] = &$node/*->data*/;
           break;
 
         case T_INLINE_HTML:
@@ -826,6 +842,8 @@ class PGPReader extends PGPParser {
     $class->comment = $this->comment;
     $class->modifiers = $modifiers;
     $class->type = $this->tokenType();
+    $class->extends = new PGPList();
+    $class->implements = new PGPList();
 
     // Global items.
     $this->comment = array();
@@ -838,10 +856,10 @@ class PGPReader extends PGPParser {
       switch ($this->tokenType()) {
         case T_STRING:
           if ($extends) {
-            $class->extends[] = $this->tokenValue();
+//             $class->extends[] = $this->tokenValue();
           }
           elseif ($implements) {
-            $class->implements[] = $this->tokenValue();
+//             $class->implements[] = $this->tokenValue();
           }
           else {
             $class->name = $this->tokenValue();
@@ -861,20 +879,26 @@ class PGPReader extends PGPParser {
           // Interfaces may extend multiple interfaces, classes only one class.
           $extends++;
           $implements = 0;
+//           $class->extends = $this->buildExpression(array(',', T_IMPLEMENTS, '{'));
+          $class->extends->insertLast($this->buildExpression(array(',', T_IMPLEMENTS, '{')));
           break;
 
         case T_IMPLEMENTS:
           $implements++;
           $extends = 0;
+//           $class->implements = $this->buildExpression(array(',', T_EXTENDS, '{'));
+          $class->implements->insertLast($this->buildExpression(array(',', T_EXTENDS, '{')));
           break;
 
         case ',':
           // Delimits lists of interfaces implemented or classes extended.
           if ($implements) {
             $implements++;
+            $class->implements->insertLast($this->buildExpression(array(',', T_EXTENDS, '{')));
           }
           elseif ($extends) {
             $extends++;
+            $class->extends->insertLast($this->buildExpression(array(',', T_IMPLEMENTS, '{')));
           }
           // else error
           break;
@@ -1775,7 +1799,9 @@ class PGPReader extends PGPParser {
           break;
 
         case T_NEW:
-          $node->setData('operator', $this->tokenValue());
+//           $node->setData('operator', $this->tokenValue());
+          $node->setData('operand', $this->buildFunctionCall(TRUE));
+          $this->functionCalls[] = &$node/*->data*/;
           break;
 
         case '"':
@@ -1809,6 +1835,19 @@ class PGPReader extends PGPParser {
 //          $node->setData('operand', $this->tokenValue());
 //          break;
 
+        case T_NAMESPACE:
+          $node->setData('operator3', $this->tokenValue());
+          break;
+
+        case T_NS_SEPARATOR:
+          // @todo If the expression starts with the separator, then add a leading space.
+          $node->setData('operator2', $this->tokenValue());
+          break;
+
+        case T_NS_C:
+          $node->setData('operand', $this->tokenValue());
+          break;
+
         default:
 //          prev($this->tokens); // This would be the ';' character???
 //          return $expression;
