diff --git a/apps/Tag/src/com/android/apps/tag/NdefUtil.java b/apps/Tag/src/com/android/apps/tag/NdefUtil.java
index 97222c7..87efb9e 100644
--- a/apps/Tag/src/com/android/apps/tag/NdefUtil.java
+++ b/apps/Tag/src/com/android/apps/tag/NdefUtil.java
@@ -161,8 +161,8 @@
      * @return text payload.
      */
     public static String toText(NdefRecord record) {
-        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN_TYPE);
-        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.TYPE_TEXT));
+        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN);
+        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_TEXT));
         try {
 
             byte[] payload = record.getPayload();
diff --git a/apps/Tag/src/com/android/apps/tag/SaveTag.java b/apps/Tag/src/com/android/apps/tag/SaveTag.java
index 8b908cb..6a5f66f 100644
--- a/apps/Tag/src/com/android/apps/tag/SaveTag.java
+++ b/apps/Tag/src/com/android/apps/tag/SaveTag.java
@@ -16,9 +16,6 @@
 
 package com.android.apps.tag;
 
-import com.trustedlogic.trustednfc.android.NdefMessage;
-import com.trustedlogic.trustednfc.android.NfcManager;
-
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
diff --git a/apps/Tag/src/com/android/apps/tag/SmartPoster.java b/apps/Tag/src/com/android/apps/tag/SmartPoster.java
index 509da92..1e10723 100644
--- a/apps/Tag/src/com/android/apps/tag/SmartPoster.java
+++ b/apps/Tag/src/com/android/apps/tag/SmartPoster.java
@@ -18,9 +18,9 @@
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
-import com.trustedlogic.trustednfc.android.NdefMessage;
-import com.trustedlogic.trustednfc.android.NdefRecord;
-import com.trustedlogic.trustednfc.android.NfcException;
+import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
+import android.nfc.FormatException;
 
 import javax.annotation.Nullable;
 import java.net.URI;
@@ -67,8 +67,8 @@
     }
 
     public static SmartPoster from(NdefRecord record) {
-        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN_TYPE);
-        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.TYPE_SMART_POSTER));
+        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN);
+        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_SMART_POSTER));
         try {
             NdefMessage subRecords = new NdefMessage(record.getPayload());
             URI uri = Iterables.getOnlyElement(NdefUtil.getURIs(subRecords));
@@ -79,7 +79,7 @@
             }
 
             return new SmartPoster(uri, title);
-        } catch (NfcException e) {
+        } catch (FormatException e) {
             throw new IllegalArgumentException(e);
         }
     }
diff --git a/apps/Tag/tests/src/com/android/apps/tag/NdefUtilTest.java b/apps/Tag/tests/src/com/android/apps/tag/NdefUtilTest.java
index ee6e56b..12baf6f 100644
--- a/apps/Tag/tests/src/com/android/apps/tag/NdefUtilTest.java
+++ b/apps/Tag/tests/src/com/android/apps/tag/NdefUtilTest.java
@@ -18,7 +18,7 @@
 
 import android.test.AndroidTestCase;
 import com.google.common.primitives.Bytes;
-import com.trustedlogic.trustednfc.android.NdefRecord;
+import android.nfc.NdefRecord;
 
 import java.io.UnsupportedEncodingException;
 
@@ -45,7 +45,7 @@
            text
         );
 
-        NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN_TYPE, NdefRecord.TYPE_TEXT, new byte[0], data);
+        NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
         assertEquals(word, NdefUtil.toText(record));
     }
 }
diff --git a/apps/Tag/tests/src/com/android/apps/tag/SmartPosterTest.java b/apps/Tag/tests/src/com/android/apps/tag/SmartPosterTest.java
index 73039bd..b7eb869 100644
--- a/apps/Tag/tests/src/com/android/apps/tag/SmartPosterTest.java
+++ b/apps/Tag/tests/src/com/android/apps/tag/SmartPosterTest.java
@@ -17,7 +17,7 @@
 package com.android.apps.tag;
 
 import android.test.AndroidTestCase;
-import com.trustedlogic.trustednfc.android.NdefMessage;
+import android.nfc.NdefMessage;
 
 /**
  * Tests for {@link SmartPoster}.
