diff --git a/includes/registration.field.inc b/includes/registration.field.inc
index 83d6530..acead7c 100644
--- a/includes/registration.field.inc
+++ b/includes/registration.field.inc
@@ -126,10 +126,11 @@ function registration_field_formatter_view($entity_type, $entity, $field, $insta
         // enable registration link if accessible
         list($entity_id) = entity_extract_ids($entity_type, $entity);
         if (registration_register_page_access($entity_type, $entity) && registration_status($entity_type, $entity_id)) {
-          $registration = entity_get_controller('registration')->create(array('type' => $reg_type->name));
-          $registration->entity_id = $entity_id;
-          $registration->entity_type = $entity_type;
-          $registration->entity = entity_load_single($entity_type, $entity_id);
+          $registration = entity_get_controller('registration')->create(array(
+            'entity_type' => $entity_type,
+            'entity_id' => $entity_id,
+            'type' => $reg_type->name,
+          ));
           $element[0] = drupal_get_form('registration_form', $registration);
         }
         break;
diff --git a/registration.module b/registration.module
index 8a324ee..7345622 100644
--- a/registration.module
+++ b/registration.module
@@ -267,9 +267,11 @@ function registration_register_page_access($entity_type, $entity) {
   list($entity_id) = entity_extract_ids($entity_type, $entity);
 
   if ($type = registration_get_entity_registration_type($entity_type, $entity)) {
-    $registration = entity_get_controller('registration')->create(array('type' => $type));
-    $registration->entity_id = $entity_id;
-    $registration->entity_type = $entity_type;
+    $registration = entity_get_controller('registration')->create(array(
+      'entity_type' => $entity_type,
+      'entity_id' => $entity_id,
+      'type' => $type,
+    ));
     if (entity_access('create', 'registration', $registration)) {
       $settings = registration_entity_settings($entity_type, $entity_id);
       if ($settings['status']) {
@@ -324,10 +326,11 @@ function registration_register_page($entity_type, $entity) {
   list($entity_id) = entity_extract_ids($entity_type, $entity);
   if (registration_status($entity_type, $entity_id)) {
     $registration_type = registration_get_entity_registration_type($entity_type, $entity);
-    $registration = entity_get_controller('registration')->create(array('type' => $registration_type));
-    $registration->entity_id = $entity_id;
-    $registration->entity_type = $entity_type;
-    $registration->entity = $entity;
+    $registration = entity_get_controller('registration')->create(array(
+      'entity_type' => $entity_type,
+      'entity_id' => $entity_id,
+      'type' => $registration_type,
+    ));
     return drupal_get_form('registration_form', $registration);
   }
   else {
