diff --git a/Driver/ASTStreamers.cpp b/Driver/ASTStreamers.cpp
index d4c55ad..6fe6fac 100644
--- a/Driver/ASTStreamers.cpp
+++ b/Driver/ASTStreamers.cpp
@@ -99,6 +99,12 @@
   fprintf(stderr, "typedef %s;\n", S.c_str());
 }
 
+static void PrintObjcInterfaceDecl(ObjcInterfaceDecl *OID) {
+  std::string S = OID->getName();
+  fprintf(stderr, "@interface %s;\n", S.c_str());
+  // FIXME: implement the rest...
+}
+
 void clang::PrintASTs(Preprocessor &PP, unsigned MainFileID, bool Stats) {
   ASTContext Context(PP.getTargetInfo(), PP.getIdentifierTable());
   ASTStreamerTy *Streamer = ASTStreamer_Init(PP, Context, MainFileID);
@@ -114,6 +120,8 @@
       }
     } else if (TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
       PrintTypeDefDecl(TD);
+    } else if (ObjcInterfaceDecl *OID = dyn_cast<ObjcInterfaceDecl>(D)) {
+      PrintObjcInterfaceDecl(OID);
     } else {
       fprintf(stderr, "Read top-level variable decl: '%s'\n", D->getName());
     }
diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp
index 19594d8..803fe2f 100644
--- a/Parse/ParseObjc.cpp
+++ b/Parse/ParseObjc.cpp
@@ -195,7 +195,7 @@
   // The @ sign was already consumed by ParseObjCInterfaceDeclList().
   if (Tok.isObjCAtKeyword(tok::objc_end)) {
     ConsumeToken(); // the "end" identifier
-    return 0;
+    return ClsType;
   }
   Diag(Tok, diag::err_objc_missing_end);
   return 0;
@@ -370,7 +370,7 @@
   
   DeclTy *MDecl = ParseObjCMethodDecl(methodType, methodLoc);
   // Since this rule is used for both method declarations and definitions,
-  // the caller is responsible for consuming the ';'.
+  // the caller is (optionally) responsible for consuming the ';'.
   return MDecl;
 }
 
diff --git a/Parse/Parser.cpp b/Parse/Parser.cpp
index 9743da7..da1bb52 100644
--- a/Parse/Parser.cpp
+++ b/Parse/Parser.cpp
@@ -343,8 +343,7 @@
     return 0;
   case tok::at:
     // @ is not a legal token unless objc is enabled, no need to check.
-    ParseObjCAtDirectives();
-    return 0;
+    return ParseObjCAtDirectives();
   case tok::minus:
     if (getLang().ObjC1) {
       ParseObjCInstanceMethodDefinition();
@@ -549,6 +548,7 @@
       // Ask the actions module to compute the type for this declarator.
       Action::TypeResult TR =
         Actions.ParseParamDeclaratorType(CurScope, ParmDeclarator);
+
       if (!TR.isInvalid && 
           // A missing identifier has already been diagnosed.
           ParmDeclarator.getIdentifier()) {
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index 3315f38..71fc0b4 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -865,6 +865,7 @@
   for (unsigned i = 0; i != NumElts; ++i) {
     ObjcInterfaceDecl *IDecl;
       
+    // FIXME: before we create one, look up the interface decl in a hash table.
     IDecl = new ObjcInterfaceDecl(SourceLocation(), IdentList[i], true);
     // Chain & install the interface decl into the identifier.
     IDecl->setNext(IdentList[i]->getFETokenInfo<Decl>());
diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj
index 0ca2395..f0f4c3f 100644
--- a/clang.xcodeproj/project.pbxproj
+++ b/clang.xcodeproj/project.pbxproj
@@ -671,7 +671,6 @@
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "clang" */;
-			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 08FB7794FE84155DC02AAC07 /* clang */;
 			projectDirPath = "";
