<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,8 +7,6 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		0029B8A90F2EF172003EAFC1 /* GHUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0029B8A80F2EF172003EAFC1 /* GHUnit.framework */; };
-		0029B8DE0F2EF218003EAFC1 /* GHUnit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0029B8A80F2EF172003EAFC1 /* GHUnit.framework */; };
 		002E75800F2C424C00427636 /* GHLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 002E757E0F2C424C00427636 /* GHLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		002E75810F2C424C00427636 /* GHLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 002E757F0F2C424C00427636 /* GHLogger.m */; };
 		0058AAAF0EF8C12100C44386 /* EMKeychainItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0058AAA90EF8C12100C44386 /* EMKeychainItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -19,6 +17,7 @@
 		0058AAEF0EF8C4D900C44386 /* GHKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0058AAED0EF8C4D900C44386 /* GHKeychainStore.m */; };
 		005B0A9F0F22B7A80004F351 /* GHNSInvocation+Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 005B0A9D0F22B7A80004F351 /* GHNSInvocation+Utils.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		005B0AA00F22B7A80004F351 /* GHNSInvocation+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 005B0A9E0F22B7A80004F351 /* GHNSInvocation+Utils.m */; };
+		005D9A7C0F2F87C900803CBF /* GHUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 005D9A7B0F2F87C900803CBF /* GHUnit.framework */; };
 		007F598E0EF2438900B3005D /* GHNSArray+Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 007F59850EF2438900B3005D /* GHNSArray+Utils.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		007F598F0EF2438900B3005D /* GHNSArray+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 007F59860EF2438900B3005D /* GHNSArray+Utils.m */; };
 		007F59900EF2438900B3005D /* GHNSDictionary+NSNull.h in Headers */ = {isa = PBXBuildFile; fileRef = 007F59870EF2438900B3005D /* GHNSDictionary+NSNull.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -99,14 +98,12 @@
 			dstPath = &quot;$(TARGET_BUILD_DIR)&quot;;
 			dstSubfolderSpec = 0;
 			files = (
-				0029B8DE0F2EF218003EAFC1 /* GHUnit.framework in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-		0029B8A80F2EF172003EAFC1 /* GHUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GHUnit.framework; path = Library/Frameworks/GHUnit.framework; sourceTree = DEVELOPER_DIR; };
 		002E757E0F2C424C00427636 /* GHLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHLogger.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		002E757F0F2C424C00427636 /* GHLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHLogger.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		002E759E0F2C45DD00427636 /* GHLoggerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHLoggerTest.m; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -121,6 +118,7 @@
 		005B0A9E0F22B7A80004F351 /* GHNSInvocation+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHNSInvocation+Utils.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		005B0AAC0F22C09F0004F351 /* NSInvocation+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSInvocation+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		005D0C3F0E19C03B003FAB86 /* NSDate+ParsingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSDate+ParsingTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		005D9A7B0F2F87C900803CBF /* GHUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GHUnit.framework; path = Library/Frameworks/GHUnit.framework; sourceTree = SDKROOT; };
 		0062B6760F2C08AD00B0562A /* DebugiPhone.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugiPhone.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
 		0062B6770F2C08AD00B0562A /* DebugiPhone20.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugiPhone20.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
 		0062B6780F2C08AD00B0562A /* DebugiPhone21.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugiPhone21.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -230,7 +228,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				00AF12580F2D8389009F0ABA /* GHKit.framework in Frameworks */,
-				0029B8A90F2EF172003EAFC1 /* GHUnit.framework in Frameworks */,
+				005D9A7C0F2F87C900803CBF /* GHUnit.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -380,6 +378,7 @@
 				52857D700E199B940011DA5C /* Tests-Info.plist */,
 				004D508D0F21D91D00C916F1 /* TestApp-Info.plist */,
 				00AF10D20F2D5179009F0ABA /* GHKitTests-Info.plist */,
+				005D9A7B0F2F87C900803CBF /* GHUnit.framework */,
 			);
 			name = GHKit;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -387,7 +386,6 @@
 		0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
 			isa = PBXGroup;
 			children = (
-				0029B8A80F2EF172003EAFC1 /* GHUnit.framework */,
 				1058C7B2FEA5585E11CA2CBB /* Other Frameworks */,
 				1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */,
 			);</diff>
      <filename>GHKit.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -9,11 +9,9 @@
 /* Begin PBXBuildFile section */
 		00025C6A0EFB5ECC007EA0A8 /* GHUIColor+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C690EFB5ECC007EA0A8 /* GHUIColor+Utils.m */; };
 		00025C860EFB654C007EA0A8 /* GHUIColorUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C850EFB654C007EA0A8 /* GHUIColorUtilsTest.m */; };
-		00025C8D0EFB66BC007EA0A8 /* GTMIPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C8B0EFB66BC007EA0A8 /* GTMIPhoneUnitTestDelegate.m */; };
 		00025C950EFB6781007EA0A8 /* GTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C900EFB6781007EA0A8 /* GTMBase64.m */; };
 		00025C970EFB6781007EA0A8 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C930EFB6781007EA0A8 /* GTMRegex.m */; };
 		00025C9C0EFB67CF007EA0A8 /* GTMLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025C9B0EFB67CF007EA0A8 /* GTMLogger.m */; };
-		00025D070EFB6A3F007EA0A8 /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 00025D060EFB6A3F007EA0A8 /* GTMSenTestCase.m */; };
 		0058AAC30EF8C15F00C44386 /* SFHFKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0058AAC20EF8C15F00C44386 /* SFHFKeychainUtils.m */; };
 		0058AACE0EF8C18600C44386 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0058AACD0EF8C18600C44386 /* Security.framework */; };
 		0058AB030EF8C61400C44386 /* GHKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0058AB020EF8C61400C44386 /* GHKeychainStore.m */; };
@@ -42,8 +40,6 @@
 		00DB2AD70EECA29900383FB6 /* GHNSXMLNode+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2AC00EECA29900383FB6 /* GHNSXMLNode+Utils.m */; };
 		00DB2AD90EECA29900383FB6 /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2AC30EECA29900383FB6 /* hmac.c */; };
 		00DB2ADA0EECA29900383FB6 /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2AC60EECA29900383FB6 /* sha1.c */; };
-		00DB2AED0EECA3BA00383FB6 /* IPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2AE40EECA3BA00383FB6 /* IPhoneUnitTestMain.m */; };
-		00DB2AFD0EECA42500383FB6 /* IPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2AFC0EECA42500383FB6 /* IPhoneUnitTestDelegate.m */; };
 		00DB2B110EECA51400383FB6 /* GHUINavigationController+PopDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00DB2B100EECA51400383FB6 /* GHUINavigationController+PopDelegate.m */; };
 		00E248430F15E37D00C06C63 /* GHUIKitUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E2483E0F15E37D00C06C63 /* GHUIKitUtils.m */; };
 		00E248440F15E37D00C06C63 /* GHUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E248400F15E37D00C06C63 /* GHUITableViewCell.m */; };
@@ -51,6 +47,17 @@
 		00E24A390F16BEBD00C06C63 /* GHNSString+UIKitUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E24A380F16BEBD00C06C63 /* GHNSString+UIKitUtils.m */; };
 		00E7119A0F1C82BF00A4EEBA /* GHUINavigationController+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E711970F1C82BF00A4EEBA /* GHUINavigationController+Utils.m */; };
 		00E7119B0F1C82BF00A4EEBA /* GHUITableView+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E711990F1C82BF00A4EEBA /* GHUITableView+Utils.m */; };
+		00E92A250F2FA1B900112D7E /* GHTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A030F2FA1B900112D7E /* GHTest.m */; };
+		00E92A260F2FA1B900112D7E /* GHTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A050F2FA1B900112D7E /* GHTestCase.m */; };
+		00E92A270F2FA1B900112D7E /* GHTestGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A070F2FA1B900112D7E /* GHTestGroup.m */; };
+		00E92A280F2FA1B900112D7E /* GHTestMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A090F2FA1B900112D7E /* GHTestMacros.m */; };
+		00E92A290F2FA1B900112D7E /* GHTestRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A0B0F2FA1B900112D7E /* GHTestRunner.m */; };
+		00E92A2A0F2FA1B900112D7E /* GHTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A0D0F2FA1B900112D7E /* GHTestSuite.m */; };
+		00E92A2B0F2FA1B900112D7E /* GHUnitIPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 00E92A100F2FA1B900112D7E /* GHUnitIPhone.xib */; };
+		00E92A2C0F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A120F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.m */; };
+		00E92A2D0F2FA1B900112D7E /* GHUnitIPhoneTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A130F2FA1B900112D7E /* GHUnitIPhoneTestMain.m */; };
+		00E92A2E0F2FA1B900112D7E /* GHUnitIPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A150F2FA1B900112D7E /* GHUnitIPhoneViewController.m */; };
+		00E92A2F0F2FA1B900112D7E /* GHTestViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E92A180F2FA1B900112D7E /* GHTestViewModel.m */; };
 		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
 		288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
@@ -60,8 +67,6 @@
 		00025C680EFB5ECC007EA0A8 /* GHUIColor+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHUIColor+Utils.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C690EFB5ECC007EA0A8 /* GHUIColor+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHUIColor+Utils.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C850EFB654C007EA0A8 /* GHUIColorUtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHUIColorUtilsTest.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00025C8B0EFB66BC007EA0A8 /* GTMIPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00025C8C0EFB66BC007EA0A8 /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C8F0EFB6781007EA0A8 /* GTMBase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMBase64.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C900EFB6781007EA0A8 /* GTMBase64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMBase64.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C920EFB6781007EA0A8 /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -69,8 +74,6 @@
 		00025C990EFB67CF007EA0A8 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMGarbageCollection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C9A0EFB67CF007EA0A8 /* GTMLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLogger.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00025C9B0EFB67CF007EA0A8 /* GTMLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLogger.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00025CE80EFB68DF007EA0A8 /* GTMIPhoneUnitTestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIPhoneUnitTestDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00025D060EFB6A3F007EA0A8 /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTMSenTestCase.m; path = Classes/External/GTM/UnitTesting/GTMSenTestCase.m; sourceTree = SOURCE_ROOT; };
 		0058AAC10EF8C15F00C44386 /* SFHFKeychainUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SFHFKeychainUtils.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		0058AAC20EF8C15F00C44386 /* SFHFKeychainUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SFHFKeychainUtils.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		0058AACD0EF8C18600C44386 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
@@ -129,8 +132,6 @@
 		00DB2AC40EECA29900383FB6 /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00DB2AC60EECA29900383FB6 /* sha1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00DB2AC70EECA29900383FB6 /* sha1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00DB2AE40EECA3BA00383FB6 /* IPhoneUnitTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IPhoneUnitTestMain.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		00DB2AFC0EECA42500383FB6 /* IPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IPhoneUnitTestDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00DB2B0F0EECA51400383FB6 /* GHUINavigationController+PopDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHUINavigationController+PopDelegate.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00DB2B100EECA51400383FB6 /* GHUINavigationController+PopDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHUINavigationController+PopDelegate.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00E2483D0F15E37D00C06C63 /* GHUIKitUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHUIKitUtils.h; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -146,6 +147,27 @@
 		00E711970F1C82BF00A4EEBA /* GHUINavigationController+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHUINavigationController+Utils.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00E711980F1C82BF00A4EEBA /* GHUITableView+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHUITableView+Utils.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00E711990F1C82BF00A4EEBA /* GHUITableView+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHUITableView+Utils.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A020F2FA1B900112D7E /* GHTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A030F2FA1B900112D7E /* GHTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTest.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A040F2FA1B900112D7E /* GHTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestCase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A050F2FA1B900112D7E /* GHTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestCase.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A060F2FA1B900112D7E /* GHTestGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestGroup.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A070F2FA1B900112D7E /* GHTestGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestGroup.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A080F2FA1B900112D7E /* GHTestMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestMacros.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A090F2FA1B900112D7E /* GHTestMacros.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestMacros.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A0A0F2FA1B900112D7E /* GHTestRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestRunner.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A0B0F2FA1B900112D7E /* GHTestRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestRunner.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A0C0F2FA1B900112D7E /* GHTestSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestSuite.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A0D0F2FA1B900112D7E /* GHTestSuite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestSuite.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A0E0F2FA1B900112D7E /* GHUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHUnit.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A100F2FA1B900112D7E /* GHUnitIPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GHUnitIPhone.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A110F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHUnitIPhoneAppDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A120F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHUnitIPhoneAppDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A130F2FA1B900112D7E /* GHUnitIPhoneTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHUnitIPhoneTestMain.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A140F2FA1B900112D7E /* GHUnitIPhoneViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHUnitIPhoneViewController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A150F2FA1B900112D7E /* GHUnitIPhoneViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHUnitIPhoneViewController.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A170F2FA1B900112D7E /* GHTestViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHTestViewModel.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00E92A180F2FA1B900112D7E /* GHTestViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHTestViewModel.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
@@ -168,16 +190,6 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-		00025C8A0EFB66BC007EA0A8 /* UnitTesting */ = {
-			isa = PBXGroup;
-			children = (
-				00025CE80EFB68DF007EA0A8 /* GTMIPhoneUnitTestDelegate.h */,
-				00025C8B0EFB66BC007EA0A8 /* GTMIPhoneUnitTestDelegate.m */,
-				00025C8C0EFB66BC007EA0A8 /* GTMSenTestCase.h */,
-			);
-			path = UnitTesting;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
 		00025C8E0EFB6781007EA0A8 /* Foundation */ = {
 			isa = PBXGroup;
 			children = (
@@ -185,7 +197,6 @@
 				00970D560F29240E00189A9D /* GTMStackTrace.h */,
 				00970D570F29240E00189A9D /* GTMObjC2Runtime.m */,
 				00970D580F29240E00189A9D /* GTMObjC2Runtime.h */,
-				00025D060EFB6A3F007EA0A8 /* GTMSenTestCase.m */,
 				00025C990EFB67CF007EA0A8 /* GTMGarbageCollection.h */,
 				00025C9A0EFB67CF007EA0A8 /* GTMLogger.h */,
 				00025C9B0EFB67CF007EA0A8 /* GTMLogger.m */,
@@ -209,10 +220,6 @@
 		00DB2A9B0EECA29900383FB6 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
-				009A957E0F29320D00C5B773 /* GHNSInvocation+Utils.m */,
-				009A957F0F29320D00C5B773 /* GHNSObject+Invocation.m */,
-				009A95800F29320D00C5B773 /* GHNSObject+Invocation.h */,
-				009A95810F29320D00C5B773 /* GHNSInvocation+Utils.h */,
 				00DB2AA00EECA29900383FB6 /* External */,
 				00DB2AC50EECA29900383FB6 /* IPhone */,
 				00DB2AAC0EECA29900383FB6 /* GHKit.h */,
@@ -248,6 +255,10 @@
 				00DB2AC40EECA29900383FB6 /* hmac.h */,
 				00DB2AC60EECA29900383FB6 /* sha1.c */,
 				00DB2AC70EECA29900383FB6 /* sha1.h */,
+				009A957E0F29320D00C5B773 /* GHNSInvocation+Utils.m */,
+				009A957F0F29320D00C5B773 /* GHNSObject+Invocation.m */,
+				009A95800F29320D00C5B773 /* GHNSObject+Invocation.h */,
+				009A95810F29320D00C5B773 /* GHNSInvocation+Utils.h */,
 			);
 			path = Classes;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -266,7 +277,6 @@
 			isa = PBXGroup;
 			children = (
 				00025C8E0EFB6781007EA0A8 /* Foundation */,
-				00025C8A0EFB66BC007EA0A8 /* UnitTesting */,
 				00DB2AA40EECA29900383FB6 /* GTMDefines.h */,
 			);
 			path = GTM;
@@ -325,14 +335,57 @@
 		00DB2AE20EECA3BA00383FB6 /* IPhone */ = {
 			isa = PBXGroup;
 			children = (
-				00DB2AFC0EECA42500383FB6 /* IPhoneUnitTestDelegate.m */,
-				00DB2AE40EECA3BA00383FB6 /* IPhoneUnitTestMain.m */,
+				00E92A010F2FA1B900112D7E /* gh-unit */,
 				00025C850EFB654C007EA0A8 /* GHUIColorUtilsTest.m */,
 				00970D4E0F29234900189A9D /* GHNSStringUIKitUtilsTest.m */,
 			);
 			path = IPhone;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
+		00E92A010F2FA1B900112D7E /* gh-unit */ = {
+			isa = PBXGroup;
+			children = (
+				00E92A020F2FA1B900112D7E /* GHTest.h */,
+				00E92A030F2FA1B900112D7E /* GHTest.m */,
+				00E92A040F2FA1B900112D7E /* GHTestCase.h */,
+				00E92A050F2FA1B900112D7E /* GHTestCase.m */,
+				00E92A060F2FA1B900112D7E /* GHTestGroup.h */,
+				00E92A070F2FA1B900112D7E /* GHTestGroup.m */,
+				00E92A080F2FA1B900112D7E /* GHTestMacros.h */,
+				00E92A090F2FA1B900112D7E /* GHTestMacros.m */,
+				00E92A0A0F2FA1B900112D7E /* GHTestRunner.h */,
+				00E92A0B0F2FA1B900112D7E /* GHTestRunner.m */,
+				00E92A0C0F2FA1B900112D7E /* GHTestSuite.h */,
+				00E92A0D0F2FA1B900112D7E /* GHTestSuite.m */,
+				00E92A0E0F2FA1B900112D7E /* GHUnit.h */,
+				00E92A0F0F2FA1B900112D7E /* IPhone */,
+				00E92A160F2FA1B900112D7E /* SharedUI */,
+			);
+			path = &quot;gh-unit&quot;;
+			sourceTree = &quot;&lt;group&gt;&quot;;
+		};
+		00E92A0F0F2FA1B900112D7E /* IPhone */ = {
+			isa = PBXGroup;
+			children = (
+				00E92A100F2FA1B900112D7E /* GHUnitIPhone.xib */,
+				00E92A110F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.h */,
+				00E92A120F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.m */,
+				00E92A130F2FA1B900112D7E /* GHUnitIPhoneTestMain.m */,
+				00E92A140F2FA1B900112D7E /* GHUnitIPhoneViewController.h */,
+				00E92A150F2FA1B900112D7E /* GHUnitIPhoneViewController.m */,
+			);
+			path = IPhone;
+			sourceTree = &quot;&lt;group&gt;&quot;;
+		};
+		00E92A160F2FA1B900112D7E /* SharedUI */ = {
+			isa = PBXGroup;
+			children = (
+				00E92A170F2FA1B900112D7E /* GHTestViewModel.h */,
+				00E92A180F2FA1B900112D7E /* GHTestViewModel.m */,
+			);
+			path = SharedUI;
+			sourceTree = &quot;&lt;group&gt;&quot;;
+		};
 		19C28FACFE9D520D11CA2CBB /* Products */ = {
 			isa = PBXGroup;
 			children = (
@@ -423,6 +476,7 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				00E92A2B0F2FA1B900112D7E /* GHUnitIPhone.xib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -446,8 +500,6 @@
 				00DB2AD70EECA29900383FB6 /* GHNSXMLNode+Utils.m in Sources */,
 				00DB2AD90EECA29900383FB6 /* hmac.c in Sources */,
 				00DB2ADA0EECA29900383FB6 /* sha1.c in Sources */,
-				00DB2AED0EECA3BA00383FB6 /* IPhoneUnitTestMain.m in Sources */,
-				00DB2AFD0EECA42500383FB6 /* IPhoneUnitTestDelegate.m in Sources */,
 				00DB2B110EECA51400383FB6 /* GHUINavigationController+PopDelegate.m in Sources */,
 				007F59AD0EF243C700B3005D /* GHNSArray+Utils.m in Sources */,
 				007F59AE0EF243C700B3005D /* GHNSDictionary+NSNull.m in Sources */,
@@ -455,11 +507,9 @@
 				0058AB030EF8C61400C44386 /* GHKeychainStore.m in Sources */,
 				00025C6A0EFB5ECC007EA0A8 /* GHUIColor+Utils.m in Sources */,
 				00025C860EFB654C007EA0A8 /* GHUIColorUtilsTest.m in Sources */,
-				00025C8D0EFB66BC007EA0A8 /* GTMIPhoneUnitTestDelegate.m in Sources */,
 				00025C950EFB6781007EA0A8 /* GTMBase64.m in Sources */,
 				00025C970EFB6781007EA0A8 /* GTMRegex.m in Sources */,
 				00025C9C0EFB67CF007EA0A8 /* GTMLogger.m in Sources */,
-				00025D070EFB6A3F007EA0A8 /* GTMSenTestCase.m in Sources */,
 				009129580F01752E00338B5E /* GHUIAlertView+Utils.m in Sources */,
 				009129590F01752E00338B5E /* GHUIView+Utils.m in Sources */,
 				00A97A140F0C424400B083F6 /* GHUIButton.m in Sources */,
@@ -476,6 +526,16 @@
 				00970D5A0F29240E00189A9D /* GTMObjC2Runtime.m in Sources */,
 				009A95820F29320D00C5B773 /* GHNSInvocation+Utils.m in Sources */,
 				009A95830F29320D00C5B773 /* GHNSObject+Invocation.m in Sources */,
+				00E92A250F2FA1B900112D7E /* GHTest.m in Sources */,
+				00E92A260F2FA1B900112D7E /* GHTestCase.m in Sources */,
+				00E92A270F2FA1B900112D7E /* GHTestGroup.m in Sources */,
+				00E92A280F2FA1B900112D7E /* GHTestMacros.m in Sources */,
+				00E92A290F2FA1B900112D7E /* GHTestRunner.m in Sources */,
+				00E92A2A0F2FA1B900112D7E /* GHTestSuite.m in Sources */,
+				00E92A2C0F2FA1B900112D7E /* GHUnitIPhoneAppDelegate.m in Sources */,
+				00E92A2D0F2FA1B900112D7E /* GHUnitIPhoneTestMain.m in Sources */,
+				00E92A2E0F2FA1B900112D7E /* GHUnitIPhoneViewController.m in Sources */,
+				00E92A2F0F2FA1B900112D7E /* GHTestViewModel.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};</diff>
      <filename>GHKitIPhone.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -3,9 +3,8 @@
 //
 
 #ifdef __OBJC__
-  #import &lt;Foundation/Foundation.h&gt;
-  #import &lt;UIKit/UIKit.h&gt;
-	#import &quot;GTMLogger.h&quot;
-	#import &quot;GTMSenTestCase.h&quot;
-	#import &quot;GHKit.h&quot;
+#import &lt;Foundation/Foundation.h&gt;
+#import &lt;UIKit/UIKit.h&gt;
+#import &quot;GHKit.h&quot;
+#import &quot;GHUnit.h&quot;
 #endif
\ No newline at end of file</diff>
      <filename>GHKitIPhone_Prefix.pch</filename>
    </modified>
    <modified>
      <diff>@@ -6,4 +6,5 @@
 #ifdef __OBJC__
 #import &lt;Cocoa/Cocoa.h&gt;
 #import &lt;GHUnit/GHUnit.h&gt;
+#import &quot;GHLogger.h&quot;
 #endif</diff>
      <filename>GHKitTests_Prefix.pch</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,8 @@
 	&lt;string&gt;GABE&lt;/string&gt;
 	&lt;key&gt;CFBundleVersion&lt;/key&gt;
 	&lt;string&gt;1.0.092001&lt;/string&gt;
+	&lt;key&gt;NSMainNibFile&lt;/key&gt;
+	&lt;string&gt;GHUnitIPhone&lt;/string&gt;
 	&lt;key&gt;NSPrincipalClass&lt;/key&gt;
 	&lt;string&gt;&lt;/string&gt;
 &lt;/dict&gt;</diff>
      <filename>Info.plist</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>935993112ee860818fce9789bd7768ce2353cf5a</id>
    </parent>
  </parents>
  <author>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/gh-kit/commit/d0fc2cae44a56fc4ac0f64e45a49ddbfbda6382e</url>
  <id>d0fc2cae44a56fc4ac0f64e45a49ddbfbda6382e</id>
  <committed-date>2009-01-27T12:24:16-08:00</committed-date>
  <authored-date>2009-01-27T12:24:16-08:00</authored-date>
  <message>Updating project</message>
  <tree>c5afc0be3ca44e8807d0f48d1d354c46e8f91e81</tree>
  <committer>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
