diff --git a/src/php/HAB/Pica/Record/CopyRecord.php b/src/php/HAB/Pica/Record/CopyRecord.php
index 98cc095e0b104345821bdcbac6983f87126225df..b3ac3fd9dda1fed45716cef25854455e6d13d079 100644
--- a/src/php/HAB/Pica/Record/CopyRecord.php
+++ b/src/php/HAB/Pica/Record/CopyRecord.php
@@ -125,4 +125,42 @@ class CopyRecord extends Record {
       $this->append(new Field('203@', $this->getItemNumber(), array(new Subfield('0', $epn))));
     }
   }
+
+  /**
+   * Set the containing local record.
+   *
+   * @param  \HAB\Pica\Record\LocalRecord $record Local record
+   * @return void
+   */
+  public function setLocalRecord (\HAB\Pica\Record\LocalRecord $record) {
+      $this->unsetLocalRecord();
+      if (!$record->containsCopyRecord($this)) {
+          $record->addCopyRecord($this);
+      }
+      $this->_parent = $record;
+  }
+
+  /**
+   * Unset the containing local record.
+   *
+   * @return void
+   */
+  public function unsetLocalRecord () {
+      if ($this->_parent) {
+          if ($this->_parent->containsCopyRecord($this)) {
+              $this->_parent->removeCopyRecord($this);
+          }
+          $this->_parent = null;
+      }
+  }
+
+  /**
+   * Return the containing local record.
+   *
+   * @return \HAB\Pica\Record\LocalRecord|null
+   */
+  public function getLocalRecord () {
+      return $this->_parent;
+  }
+
 }
\ No newline at end of file
diff --git a/src/php/HAB/Pica/Record/LocalRecord.php b/src/php/HAB/Pica/Record/LocalRecord.php
index c959c999ab5451531442401323892f6b70c5e311..48c4fed6f6479eef5ecb64f56208f8712d39a911 100644
--- a/src/php/HAB/Pica/Record/LocalRecord.php
+++ b/src/php/HAB/Pica/Record/LocalRecord.php
@@ -68,6 +68,7 @@ class LocalRecord extends NestedRecord {
       throw new \InvalidArgumentException("Cannot add copy record: Copy record with item number {$record->getItemNumber()} already present");
     }
     $this->addRecord($record);
+    $record->setLocalRecord($this);
   }
 
   /**
@@ -79,6 +80,7 @@ class LocalRecord extends NestedRecord {
    */
   public function removeCopyRecord (\HAB\Pica\Record\CopyRecord $record) {
     $this->removeRecord($record);
+    $record->unsetLocalRecord();
   }
 
   /**
@@ -131,6 +133,43 @@ class LocalRecord extends NestedRecord {
     return $this->containsRecord($record);
   }
 
+  /**
+   * Set the containing title record.
+   *
+   * @param  \HAB\Pica\Record\TitleRecord $record Title record
+   * @return void
+   */
+  public function setTitleRecord (\HAB\Pica\Record\TitleRecord $record) {
+      $this->unsetTitleRecord();
+      if (!$record->containsLocalRecord($this)) {
+          $record->addLocalRecord($this);
+      }
+      $this->_parent = $record;
+  }
+
+  /**
+   * Unset the containing title record.
+   *
+   * @return void
+   */
+  public function unsetTitleRecord () {
+      if ($this->_parent) {
+          if ($this->_parent->containsLocalRecord($this)) {
+              $this->_parent->removeLocalRecord($this);
+          }
+          $this->_parent = null;
+      }
+  }
+
+  /**
+   * Return the containing local record.
+   *
+   * @return \HAB\Pica\Record\TitleRecord|null
+   */
+  public function getTitleRecord () {
+      return $this->_parent;
+  }
+
   /**
    * Compare two copy records.
    *
@@ -146,4 +185,5 @@ class LocalRecord extends NestedRecord {
   protected function compareRecords (\HAB\Pica\Record\Record $a, \HAB\Pica\Record\Record $b) {
     return $a->getItemNumber() - $b->getItemNumber();
   }
+
 }
\ No newline at end of file
diff --git a/src/php/HAB/Pica/Record/TitleRecord.php b/src/php/HAB/Pica/Record/TitleRecord.php
index 6ec2c76505e99d3522997ecbb0fe9b41fcfd2376..6dd7fe58b0c05f39f94143544bc6d48016658887 100644
--- a/src/php/HAB/Pica/Record/TitleRecord.php
+++ b/src/php/HAB/Pica/Record/TitleRecord.php
@@ -103,6 +103,7 @@ class TitleRecord extends NestedRecord {
    */
   public function addLocalRecord (\HAB\Pica\Record\LocalRecord $record) {
     $this->addRecord($record);
+    $record->setTitleRecord($this);
   }
 
   /**
@@ -114,6 +115,7 @@ class TitleRecord extends NestedRecord {
    */
   public function removeLocalRecord (\HAB\Pica\Record\LocalRecord $record) {
     $this->removeRecord($record);
+    $record->unsetTitleRecord();
   }
 
   /**
diff --git a/src/tests/unit-tests/php/HAB/Pica/Record/CopyRecordTest.php b/src/tests/unit-tests/php/HAB/Pica/Record/CopyRecordTest.php
index c84ae0d7cad5c46a9d4574a0da169351ec30d7b5..86cf24aed3122bff58fc7dc8b3632daafae00832 100644
--- a/src/tests/unit-tests/php/HAB/Pica/Record/CopyRecordTest.php
+++ b/src/tests/unit-tests/php/HAB/Pica/Record/CopyRecordTest.php
@@ -42,6 +42,17 @@ class CopyRecordTest extends \PHPUnit_FrameWork_TestCase {
     $this->assertEquals('epn', $r->getEPN());
   }
 
+  public function testLocalRecordReference () {
+    $l = new LocalRecord();
+    $c = new CopyRecord();
+    $this->assertNull($c->getLocalRecord());
+    $l->addCopyRecord($c);
+    $this->assertSame($l, $c->getLocalRecord());
+    $c->unsetLocalRecord();
+    $this->assertNull($c->getLocalRecord());
+    $this->assertFalse($l->containsCopyRecord($c));
+  }
+
   ///
 
   /**
diff --git a/src/tests/unit-tests/php/HAB/Pica/Record/LocalRecordTest.php b/src/tests/unit-tests/php/HAB/Pica/Record/LocalRecordTest.php
index 98536afae3ef56a8b559c97fac0d538a101395be..3e864474e93e8eff86e5b8a76bb96b766744137f 100644
--- a/src/tests/unit-tests/php/HAB/Pica/Record/LocalRecordTest.php
+++ b/src/tests/unit-tests/php/HAB/Pica/Record/LocalRecordTest.php
@@ -111,6 +111,17 @@ class LocalRecordTest extends \PHPUnit_FrameWork_TestCase {
     $this->assertTrue($r->containsCopyRecord($c));
   }
 
+  public function testTitleRecordReference () {
+    $t = new TitleRecord();
+    $l = new LocalRecord();
+    $this->assertNull($l->getTitleRecord());
+    $t->addLocalRecord($l);
+    $this->assertSame($t, $l->getTitleRecord());
+    $l->unsetTitleRecord();
+    $this->assertNull($l->getTitleRecord());
+    $this->assertFalse($t->containsLocalRecord($l));
+  }
+
   ///
 
   /**