<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Frameworks/JSON.framework/Headers</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/JSON</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/PrivateHeaders</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Resources</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/Headers/JSON.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/Headers/SBJsonParser.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/Headers/SBJsonWriter.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/JSON</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/PrivateHeaders/NSObject+SBJSON.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/PrivateHeaders/NSString+SBJSON.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/PrivateHeaders/SBJSON.h</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/A/Resources/Info.plist</filename>
    </added>
    <added>
      <filename>Frameworks/JSON.framework/Versions/Current</filename>
    </added>
    <added>
      <filename>LICENSE</filename>
    </added>
    <added>
      <filename>README.markdown</filename>
    </added>
    <added>
      <filename>Source/NSInvocationAdditions.h</filename>
    </added>
    <added>
      <filename>Source/NSInvocationAdditions.m</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -10,11 +10,10 @@
 		1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
 		8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
 		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-		A10333520E32CD1800230ABD /* PFLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = A10333510E32CD1800230ABD /* PFLogging.m */; };
 		A10333550E32CD2200230ABD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A10333540E32CD2200230ABD /* AppDelegate.m */; };
 		A10333720E32D0CC00230ABD /* BasicTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A10333710E32D0CC00230ABD /* BasicTests.m */; };
-		A11DC5020E3CD31A009DA8A8 /* NSInvocationAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A11DC5000E3CD31A009DA8A8 /* NSInvocationAdditions.h */; };
-		A11DC5030E3CD31A009DA8A8 /* NSInvocationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A11DC5010E3CD31A009DA8A8 /* NSInvocationAdditions.m */; };
+		A10769A30F8D5B1900BA3DAE /* NSInvocationAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A10769A10F8D5B1900BA3DAE /* NSInvocationAdditions.h */; };
+		A10769A40F8D5B1900BA3DAE /* NSInvocationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A10769A20F8D5B1900BA3DAE /* NSInvocationAdditions.m */; };
 		A11DC72B0E3D23CD009DA8A8 /* PFProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = A11DC7290E3D23CD009DA8A8 /* PFProduct.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		A11DC72C0E3D23CD009DA8A8 /* PFProduct.m in Sources */ = {isa = PBXBuildFile; fileRef = A11DC72A0E3D23CD009DA8A8 /* PFProduct.m */; };
 		A154EF7E0E3BE8EA002973AE /* PotionStorefront.framework in Copy Framework */ = {isa = PBXBuildFile; fileRef = A154EF750E3BE81F002973AE /* PotionStorefront.framework */; };
@@ -39,9 +38,9 @@
 		A154F1460E3C1B70002973AE /* PFAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = A154F1440E3C1B70002973AE /* PFAddress.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		A154F1470E3C1B70002973AE /* PFAddress.m in Sources */ = {isa = PBXBuildFile; fileRef = A154F1450E3C1B70002973AE /* PFAddress.m */; };
 		A154F1690E3C1D6D002973AE /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A154F1680E3C1D6D002973AE /* AddressBook.framework */; };
-		A154F2440E3C37AE002973AE /* PFLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = A10333510E32CD1800230ABD /* PFLogging.m */; };
-		A16B8EDE0E3D415C00B1C248 /* JSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A16B8EDD0E3D415C00B1C248 /* JSON.framework */; };
-		A16B8F170E3D479400B1C248 /* JSON.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A16B8EDD0E3D415C00B1C248 /* JSON.framework */; };
+		A157E86A0F942DE800FD0CD7 /* JSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A157E8690F942DE800FD0CD7 /* JSON.framework */; };
+		A157E8840F942E6000FD0CD7 /* JSON.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = A157E8690F942DE800FD0CD7 /* JSON.framework */; };
+		A15EC4FD0F9592AD0074DCFC /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = A15EC4FC0F9592AD0074DCFC /* LICENSE */; };
 		A16B90340E3D787500B1C248 /* PFCollectionRow.h in Headers */ = {isa = PBXBuildFile; fileRef = A16B90320E3D787500B1C248 /* PFCollectionRow.h */; };
 		A16B90350E3D787500B1C248 /* PFCollectionRow.m in Sources */ = {isa = PBXBuildFile; fileRef = A16B90330E3D787500B1C248 /* PFCollectionRow.m */; };
 		A1A11E7D0E3EE5D700F0C6E4 /* PFLockImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = A1A11E7B0E3EE5D700F0C6E4 /* PFLockImageView.h */; };
@@ -84,7 +83,7 @@
 			dstPath = &quot;&quot;;
 			dstSubfolderSpec = 10;
 			files = (
-				A16B8F170E3D479400B1C248 /* JSON.framework in Copy Frameworks */,
+				A157E8840F942E6000FD0CD7 /* JSON.framework in Copy Frameworks */,
 			);
 			name = &quot;Copy Frameworks&quot;;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -102,18 +101,14 @@
 		32CA4F630368D1EE00C91783 /* PotionStorefront_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PotionStorefront_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
 		8D1107310486CEB800E47090 /* TestApp-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = &quot;TestApp-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		8D1107320486CEB800E47090 /* TestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		A103334E0E32CD1800230ABD /* PFKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PFKit.h; path = Sources/PFKit.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		A103334F0E32CD1800230ABD /* PFMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PFMacros.h; path = Sources/PFMacros.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		A10333500E32CD1800230ABD /* PFLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Sources/PFLogging.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		A10333510E32CD1800230ABD /* PFLogging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PFLogging.m; path = Sources/PFLogging.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A10333530E32CD2200230ABD /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A10333540E32CD2200230ABD /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A10333670E32CEF800230ABD /* Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
 		A10333680E32CEF800230ABD /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = &quot;Tests-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A10333700E32D0CC00230ABD /* BasicTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicTests.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A10333710E32D0CC00230ABD /* BasicTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicTests.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		A11DC5000E3CD31A009DA8A8 /* NSInvocationAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSInvocationAdditions.h; path = ../../PFKit/Sources/NSInvocationAdditions.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		A11DC5010E3CD31A009DA8A8 /* NSInvocationAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSInvocationAdditions.m; path = ../../PFKit/Sources/NSInvocationAdditions.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		A10769A10F8D5B1900BA3DAE /* NSInvocationAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSInvocationAdditions.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		A10769A20F8D5B1900BA3DAE /* NSInvocationAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSInvocationAdditions.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A11DC7290E3D23CD009DA8A8 /* PFProduct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFProduct.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A11DC72A0E3D23CD009DA8A8 /* PFProduct.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PFProduct.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A154EF750E3BE81F002973AE /* PotionStorefront.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PotionStorefront.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -138,7 +133,9 @@
 		A154F1440E3C1B70002973AE /* PFAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFAddress.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A154F1450E3C1B70002973AE /* PFAddress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PFAddress.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A154F1680E3C1D6D002973AE /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = /System/Library/Frameworks/AddressBook.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
-		A16B8EDD0E3D415C00B1C248 /* JSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JSON.framework; path = ../3rdParty/JSON/build/Release/JSON.framework; sourceTree = SOURCE_ROOT; };
+		A157E8690F942DE800FD0CD7 /* JSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JSON.framework; path = Frameworks/JSON.framework; sourceTree = &quot;&lt;group&gt;&quot;; };
+		A15EC4F90F958A440074DCFC /* README.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.markdown; sourceTree = &quot;&lt;group&gt;&quot;; };
+		A15EC4FC0F9592AD0074DCFC /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A16B90320E3D787500B1C248 /* PFCollectionRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFCollectionRow.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A16B90330E3D787500B1C248 /* PFCollectionRow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PFCollectionRow.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		A1A11E7B0E3EE5D700F0C6E4 /* PFLockImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PFLockImageView.h; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -168,8 +165,8 @@
 			buildActionMask = 2147483647;
 			files = (
 				A154F1690E3C1D6D002973AE /* AddressBook.framework in Frameworks */,
-				A16B8EDE0E3D415C00B1C248 /* JSON.framework in Frameworks */,
 				A1A11EB80E3EF7E700F0C6E4 /* QuartzCore.framework in Frameworks */,
+				A157E86A0F942DE800FD0CD7 /* JSON.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -189,8 +186,8 @@
 		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				A157E8690F942DE800FD0CD7 /* JSON.framework */,
 				A1A11EB70E3EF7E700F0C6E4 /* QuartzCore.framework */,
-				A16B8EDD0E3D415C00B1C248 /* JSON.framework */,
 				A154F1680E3C1D6D002973AE /* AddressBook.framework */,
 				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
 			);
@@ -220,11 +217,12 @@
 		29B97314FDCFA39411CA2CEA /* PotionStorefront */ = {
 			isa = PBXGroup;
 			children = (
+				A15EC4F90F958A440074DCFC /* README.markdown */,
+				A15EC4FC0F9592AD0074DCFC /* LICENSE */,
 				A154EF800E3BE916002973AE /* Framework Code */,
 				080E96DDFE201D6D7F000001 /* Test App */,
 				A103336F0E32D0A100230ABD /* Tests */,
 				29B97315FDCFA39411CA2CEA /* Other Sources */,
-				A103334D0E32CD1800230ABD /* PFKit */,
 				29B97317FDCFA39411CA2CEA /* Resources */,
 				29B97323FDCFA39411CA2CEA /* Frameworks */,
 				19C28FACFE9D520D11CA2CBB /* Products */,
@@ -266,18 +264,6 @@
 			name = Frameworks;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		A103334D0E32CD1800230ABD /* PFKit */ = {
-			isa = PBXGroup;
-			children = (
-				A103334E0E32CD1800230ABD /* PFKit.h */,
-				A103334F0E32CD1800230ABD /* PFMacros.h */,
-				A10333500E32CD1800230ABD /* PFLogging.h */,
-				A10333510E32CD1800230ABD /* PFLogging.m */,
-			);
-			name = PFKit;
-			path = ../../Code/PFKit;
-			sourceTree = SOURCE_ROOT;
-		};
 		A103336F0E32D0A100230ABD /* Tests */ = {
 			isa = PBXGroup;
 			children = (
@@ -346,8 +332,8 @@
 		A1A11E390E3EDB7E00F0C6E4 /* Additions */ = {
 			isa = PBXGroup;
 			children = (
-				A11DC5000E3CD31A009DA8A8 /* NSInvocationAdditions.h */,
-				A11DC5010E3CD31A009DA8A8 /* NSInvocationAdditions.m */,
+				A10769A10F8D5B1900BA3DAE /* NSInvocationAdditions.h */,
+				A10769A20F8D5B1900BA3DAE /* NSInvocationAdditions.m */,
 			);
 			name = Additions;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -365,10 +351,10 @@
 				A154F0C10E3C0F1F002973AE /* PFBackgroundView.h in Headers */,
 				A154F12D0E3C19E1002973AE /* PFOrder.h in Headers */,
 				A154F1460E3C1B70002973AE /* PFAddress.h in Headers */,
-				A11DC5020E3CD31A009DA8A8 /* NSInvocationAdditions.h in Headers */,
 				A11DC72B0E3D23CD009DA8A8 /* PFProduct.h in Headers */,
 				A16B90340E3D787500B1C248 /* PFCollectionRow.h in Headers */,
 				A1A11E7D0E3EE5D700F0C6E4 /* PFLockImageView.h in Headers */,
+				A10769A30F8D5B1900BA3DAE /* NSInvocationAdditions.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -458,6 +444,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
+				A15EC4FD0F9592AD0074DCFC /* LICENSE in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -506,7 +493,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				8D11072D0486CEB800E47090 /* main.m in Sources */,
-				A10333520E32CD1800230ABD /* PFLogging.m in Sources */,
 				A10333550E32CD2200230ABD /* AppDelegate.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -529,11 +515,10 @@
 				A154F0C20E3C0F1F002973AE /* PFBackgroundView.m in Sources */,
 				A154F12E0E3C19E1002973AE /* PFOrder.m in Sources */,
 				A154F1470E3C1B70002973AE /* PFAddress.m in Sources */,
-				A154F2440E3C37AE002973AE /* PFLogging.m in Sources */,
-				A11DC5030E3CD31A009DA8A8 /* NSInvocationAdditions.m in Sources */,
 				A11DC72C0E3D23CD009DA8A8 /* PFProduct.m in Sources */,
 				A16B90350E3D787500B1C248 /* PFCollectionRow.m in Sources */,
 				A1A11E7E0E3EE5D700F0C6E4 /* PFLockImageView.m in Sources */,
+				A10769A40F8D5B1900BA3DAE /* NSInvocationAdditions.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -652,6 +637,7 @@
 				FRAMEWORK_SEARCH_PATHS = (
 					&quot;$(inherited)&quot;,
 					&quot;\&quot;$(SRCROOT)/../3rdParty/JSON/build/Release\&quot;&quot;,
+					&quot;\&quot;$(SRCROOT)/Frameworks/JSON/build/Release\&quot;&quot;,
 				);
 				FRAMEWORK_VERSION = A;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -685,6 +671,7 @@
 				FRAMEWORK_SEARCH_PATHS = (
 					&quot;$(inherited)&quot;,
 					&quot;\&quot;$(SRCROOT)/../3rdParty/JSON/build/Release\&quot;&quot;,
+					&quot;\&quot;$(SRCROOT)/Frameworks/JSON/build/Release\&quot;&quot;,
 				);
 				FRAMEWORK_VERSION = A;
 				GCC_ENABLE_FIX_AND_CONTINUE = NO;</diff>
      <filename>PotionStorefront.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;archive type=&quot;com.apple.InterfaceBuilder3.Cocoa.XIB&quot; version=&quot;7.02&quot;&gt;
+&lt;archive type=&quot;com.apple.InterfaceBuilder3.Cocoa.XIB&quot; version=&quot;7.03&quot;&gt;
 	&lt;data&gt;
 		&lt;int key=&quot;IBDocument.SystemTarget&quot;&gt;1050&lt;/int&gt;
-		&lt;string key=&quot;IBDocument.SystemVersion&quot;&gt;9E17&lt;/string&gt;
-		&lt;string key=&quot;IBDocument.InterfaceBuilderVersion&quot;&gt;670&lt;/string&gt;
-		&lt;string key=&quot;IBDocument.AppKitVersion&quot;&gt;949.33&lt;/string&gt;
-		&lt;string key=&quot;IBDocument.HIToolboxVersion&quot;&gt;352.00&lt;/string&gt;
+		&lt;string key=&quot;IBDocument.SystemVersion&quot;&gt;9G55&lt;/string&gt;
+		&lt;string key=&quot;IBDocument.InterfaceBuilderVersion&quot;&gt;677&lt;/string&gt;
+		&lt;string key=&quot;IBDocument.AppKitVersion&quot;&gt;949.43&lt;/string&gt;
+		&lt;string key=&quot;IBDocument.HIToolboxVersion&quot;&gt;353.00&lt;/string&gt;
 		&lt;object class=&quot;NSMutableArray&quot; key=&quot;IBDocument.EditedObjectIDs&quot;&gt;
 			&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
 			&lt;integer value=&quot;57&quot;/&gt;
@@ -16,6 +16,15 @@
 			&lt;string&gt;com.apple.InterfaceBuilderKit&lt;/string&gt;
 			&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 		&lt;/object&gt;
+		&lt;object class=&quot;NSMutableDictionary&quot; key=&quot;IBDocument.Metadata&quot;&gt;
+			&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
+			&lt;object class=&quot;NSArray&quot; key=&quot;dict.sortedKeys&quot;&gt;
+				&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
+			&lt;/object&gt;
+			&lt;object class=&quot;NSMutableArray&quot; key=&quot;dict.values&quot;&gt;
+				&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
+			&lt;/object&gt;
+		&lt;/object&gt;
 		&lt;object class=&quot;NSMutableArray&quot; key=&quot;IBDocument.RootObjects&quot; id=&quot;1048&quot;&gt;
 			&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
 			&lt;object class=&quot;NSCustomObject&quot; id=&quot;1021&quot;&gt;
@@ -1126,7 +1135,7 @@
 								&lt;int key=&quot;NSCellFlags&quot;&gt;67239424&lt;/int&gt;
 								&lt;int key=&quot;NSCellFlags2&quot;&gt;134217728&lt;/int&gt;
 								&lt;string key=&quot;NSContents&quot;&gt;Buy&lt;/string&gt;
-								&lt;object class=&quot;NSFont&quot; key=&quot;NSSupport&quot; id=&quot;319283956&quot;&gt;
+								&lt;object class=&quot;NSFont&quot; key=&quot;NSSupport&quot;&gt;
 									&lt;string key=&quot;NSName&quot;&gt;LucidaGrande&lt;/string&gt;
 									&lt;double key=&quot;NSSize&quot;&gt;1.300000e+01&lt;/double&gt;
 									&lt;int key=&quot;NSfFlags&quot;&gt;1044&lt;/int&gt;
@@ -1140,26 +1149,6 @@
 								&lt;int key=&quot;NSPeriodicInterval&quot;&gt;25&lt;/int&gt;
 							&lt;/object&gt;
 						&lt;/object&gt;
-						&lt;object class=&quot;NSButton&quot; id=&quot;1043214211&quot;&gt;
-							&lt;reference key=&quot;NSNextResponder&quot; ref=&quot;439893737&quot;/&gt;
-							&lt;int key=&quot;NSvFlags&quot;&gt;268&lt;/int&gt;
-							&lt;string key=&quot;NSFrame&quot;&gt;{{184, 118}, {118, 32}}&lt;/string&gt;
-							&lt;reference key=&quot;NSSuperview&quot; ref=&quot;439893737&quot;/&gt;
-							&lt;bool key=&quot;NSEnabled&quot;&gt;YES&lt;/bool&gt;
-							&lt;object class=&quot;NSButtonCell&quot; key=&quot;NSCell&quot; id=&quot;137018684&quot;&gt;
-								&lt;int key=&quot;NSCellFlags&quot;&gt;67239424&lt;/int&gt;
-								&lt;int key=&quot;NSCellFlags2&quot;&gt;134217728&lt;/int&gt;
-								&lt;string key=&quot;NSContents&quot;&gt;Unload&lt;/string&gt;
-								&lt;reference key=&quot;NSSupport&quot; ref=&quot;319283956&quot;/&gt;
-								&lt;reference key=&quot;NSControlView&quot; ref=&quot;1043214211&quot;/&gt;
-								&lt;int key=&quot;NSButtonFlags&quot;&gt;-2038284033&lt;/int&gt;
-								&lt;int key=&quot;NSButtonFlags2&quot;&gt;129&lt;/int&gt;
-								&lt;string key=&quot;NSAlternateContents&quot;/&gt;
-								&lt;string key=&quot;NSKeyEquivalent&quot;/&gt;
-								&lt;int key=&quot;NSPeriodicDelay&quot;&gt;200&lt;/int&gt;
-								&lt;int key=&quot;NSPeriodicInterval&quot;&gt;25&lt;/int&gt;
-							&lt;/object&gt;
-						&lt;/object&gt;
 					&lt;/object&gt;
 					&lt;string key=&quot;NSFrameSize&quot;&gt;{480, 360}&lt;/string&gt;
 					&lt;reference key=&quot;NSSuperview&quot;/&gt;
@@ -1730,14 +1719,6 @@
 					&lt;/object&gt;
 					&lt;int key=&quot;connectionID&quot;&gt;455&lt;/int&gt;
 				&lt;/object&gt;
-				&lt;object class=&quot;IBConnectionRecord&quot;&gt;
-					&lt;object class=&quot;IBActionConnection&quot; key=&quot;connection&quot;&gt;
-						&lt;string key=&quot;label&quot;&gt;unload:&lt;/string&gt;
-						&lt;reference key=&quot;source&quot; ref=&quot;759585468&quot;/&gt;
-						&lt;reference key=&quot;destination&quot; ref=&quot;1043214211&quot;/&gt;
-					&lt;/object&gt;
-					&lt;int key=&quot;connectionID&quot;&gt;458&lt;/int&gt;
-				&lt;/object&gt;
 			&lt;/object&gt;
 			&lt;object class=&quot;IBMutableOrderedSet&quot; key=&quot;objectRecords&quot;&gt;
 				&lt;object class=&quot;NSArray&quot; key=&quot;orderedObjects&quot;&gt;
@@ -2325,7 +2306,6 @@
 						&lt;object class=&quot;NSMutableArray&quot; key=&quot;children&quot;&gt;
 							&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
 							&lt;reference ref=&quot;671052403&quot;/&gt;
-							&lt;reference ref=&quot;1043214211&quot;/&gt;
 						&lt;/object&gt;
 						&lt;reference key=&quot;parent&quot; ref=&quot;972006081&quot;/&gt;
 					&lt;/object&gt;
@@ -2658,20 +2638,6 @@
 						&lt;reference key=&quot;object&quot; ref=&quot;822453205&quot;/&gt;
 						&lt;reference key=&quot;parent&quot; ref=&quot;671052403&quot;/&gt;
 					&lt;/object&gt;
-					&lt;object class=&quot;IBObjectRecord&quot;&gt;
-						&lt;int key=&quot;objectID&quot;&gt;456&lt;/int&gt;
-						&lt;reference key=&quot;object&quot; ref=&quot;1043214211&quot;/&gt;
-						&lt;object class=&quot;NSMutableArray&quot; key=&quot;children&quot;&gt;
-							&lt;bool key=&quot;EncodedWithXMLCoder&quot;&gt;YES&lt;/bool&gt;
-							&lt;reference ref=&quot;137018684&quot;/&gt;
-						&lt;/object&gt;
-						&lt;reference key=&quot;parent&quot; ref=&quot;439893737&quot;/&gt;
-					&lt;/object&gt;
-					&lt;object class=&quot;IBObjectRecord&quot;&gt;
-						&lt;int key=&quot;objectID&quot;&gt;457&lt;/int&gt;
-						&lt;reference key=&quot;object&quot; ref=&quot;137018684&quot;/&gt;
-						&lt;reference key=&quot;parent&quot; ref=&quot;1043214211&quot;/&gt;
-					&lt;/object&gt;
 				&lt;/object&gt;
 			&lt;/object&gt;
 			&lt;object class=&quot;NSMutableDictionary&quot; key=&quot;flattenedProperties&quot;&gt;
@@ -2811,7 +2777,6 @@
 					&lt;string&gt;354.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;354.ImportedFromIB2&lt;/string&gt;
 					&lt;string&gt;371.IBEditorWindowLastContentRect&lt;/string&gt;
-					&lt;string&gt;371.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;371.IBWindowTemplateEditedContentRect&lt;/string&gt;
 					&lt;string&gt;371.NSWindowTemplate.visibleAtLaunch&lt;/string&gt;
 					&lt;string&gt;371.editorWindowContentRectSynchronizationRect&lt;/string&gt;
@@ -2864,11 +2829,10 @@
 					&lt;string&gt;417.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;418.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;419.IBPluginDependency&lt;/string&gt;
+					&lt;string&gt;420.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;450.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;452.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;453.IBPluginDependency&lt;/string&gt;
-					&lt;string&gt;456.IBPluginDependency&lt;/string&gt;
-					&lt;string&gt;457.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;5.IBPluginDependency&lt;/string&gt;
 					&lt;string&gt;5.ImportedFromIB2&lt;/string&gt;
 					&lt;string&gt;56.IBPluginDependency&lt;/string&gt;
@@ -3040,7 +3004,6 @@
 					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;reference ref=&quot;9&quot;/&gt;
 					&lt;string&gt;{{739, 408}, {480, 360}}&lt;/string&gt;
-					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;string&gt;{{739, 408}, {480, 360}}&lt;/string&gt;
 					&lt;reference ref=&quot;9&quot;/&gt;
 					&lt;string&gt;{{33, 99}, {480, 360}}&lt;/string&gt;
@@ -3098,7 +3061,6 @@
 					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
-					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;reference ref=&quot;9&quot;/&gt;
 					&lt;string&gt;com.apple.InterfaceBuilder.CocoaPlugin&lt;/string&gt;
 					&lt;reference ref=&quot;9&quot;/&gt;
@@ -3196,13 +3158,24 @@
 					&lt;string key=&quot;className&quot;&gt;NSObject&lt;/string&gt;
 					&lt;object class=&quot;IBClassDescriptionSource&quot; key=&quot;sourceIdentifier&quot;&gt;
 						&lt;string key=&quot;majorKey&quot;&gt;IBProjectSource&lt;/string&gt;
-						&lt;string key=&quot;minorKey&quot;&gt;Source/PotionStoreFront.h&lt;/string&gt;
+						&lt;string key=&quot;minorKey&quot;&gt;Source/PFProduct.h&lt;/string&gt;
+					&lt;/object&gt;
+				&lt;/object&gt;
+				&lt;object class=&quot;IBPartialClassDescription&quot;&gt;
+					&lt;string key=&quot;className&quot;&gt;NSObject&lt;/string&gt;
+					&lt;object class=&quot;NSMutableDictionary&quot; key=&quot;actions&quot;&gt;
+						&lt;string key=&quot;NS.key.0&quot;&gt;showRegistrationWindow:&lt;/string&gt;
+						&lt;string key=&quot;NS.object.0&quot;&gt;id&lt;/string&gt;
+					&lt;/object&gt;
+					&lt;object class=&quot;IBClassDescriptionSource&quot; key=&quot;sourceIdentifier&quot;&gt;
+						&lt;string key=&quot;majorKey&quot;&gt;IBProjectSource&lt;/string&gt;
+						&lt;string key=&quot;minorKey&quot;&gt;Source/PotionStorefront.h&lt;/string&gt;
 					&lt;/object&gt;
 				&lt;/object&gt;
 			&lt;/object&gt;
 		&lt;/object&gt;
 		&lt;int key=&quot;IBDocument.localizationMode&quot;&gt;0&lt;/int&gt;
-		&lt;string key=&quot;IBDocument.LastKnownRelativeProjectPath&quot;&gt;../../PotionStoreFront.xcodeproj&lt;/string&gt;
+		&lt;string key=&quot;IBDocument.LastKnownRelativeProjectPath&quot;&gt;../../PotionStorefront.xcodeproj&lt;/string&gt;
 		&lt;int key=&quot;IBDocument.defaultPropertyAccessControl&quot;&gt;3&lt;/int&gt;
 	&lt;/data&gt;
 &lt;/archive&gt;</diff>
      <filename>Resources/English.lproj/MainMenu.xib</filename>
    </modified>
    <modified>
      <diff>@@ -12,21 +12,6 @@
 
 @implementation AppDelegate
 
-+ (void)load
-{
-//	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loaded:) name:NSBundleDidLoadNotification object:nil];
-}
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
-{
-//	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loaded:) name:NSBundleDidLoadNotification object:nil];
-}
-
-+ (void)loaded:(NSNotification *)notification
-{
-//	NSLog(@&quot;loaded bundle: %@&quot;, [notification userInfo]);
-}
-
 - (IBAction)buy:(id)sender
 {
 	[[PotionStorefront sharedStorefront] setDelegate:self];
@@ -36,12 +21,4 @@
 	[[PotionStorefront sharedStorefront] beginSheetModalForWindow:mainWindow];
 }
 
-- (IBAction)unload:(id)sender
-{
-//	if ([[NSBundle bundleWithIdentifier:@&quot;com.potionfactory.PotionStorefront&quot;] unload])
-//		NSLog(@&quot;unloaded&quot;);
-//	else
-//		NSLog(@&quot;did not unload&quot;);
-}
-
 @end</diff>
      <filename>Source/AppDelegate.m</filename>
    </modified>
    <modified>
      <diff>@@ -101,34 +101,34 @@
 #pragma mark Accessors
 
 - (NSString *)firstName { return firstName; }
-- (void)setFirstName:(NSString *)value { if (firstName != value) { [firstName release]; firstName = [[value stringByTrimming] copy]; } }
+- (void)setFirstName:(NSString *)value { if (firstName != value) { [firstName release]; firstName = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)lastName { return lastName; }
-- (void)setLastName:(NSString *)value { if (lastName != value) { [lastName release]; lastName = [[value stringByTrimming] copy]; } }
+- (void)setLastName:(NSString *)value { if (lastName != value) { [lastName release]; lastName = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)company { return company; }
-- (void)setCompany:(NSString *)value { if (company != value) { [company release]; company = [[value stringByTrimming] copy]; } }
+- (void)setCompany:(NSString *)value { if (company != value) { [company release]; company = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)address1 { return address1; }
-- (void)setAddress1:(NSString *)value { if (address1 != value) { [address1 release]; address1 = [[value stringByTrimming] copy]; } }
+- (void)setAddress1:(NSString *)value { if (address1 != value) { [address1 release]; address1 = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)address2 { return address2; }
-- (void)setAddress2:(NSString *)value { if (address2 != value) { [address2 release]; address2 = [[value stringByTrimming] copy]; } }
+- (void)setAddress2:(NSString *)value { if (address2 != value) { [address2 release]; address2 = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)city { return city; }
-- (void)setCity:(NSString *)value { if (city != value) { [city release]; city = [[value stringByTrimming] copy]; } }
+- (void)setCity:(NSString *)value { if (city != value) { [city release]; city = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)state { return state; }
-- (void)setState:(NSString *)value { if (state != value) { [state release]; state = [[value stringByTrimming] copy]; } }
+- (void)setState:(NSString *)value { if (state != value) { [state release]; state = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)zipcode { return zipcode; }
-- (void)setZipcode:(NSString *)value { if (zipcode != value) { [zipcode release]; zipcode = [[value stringByTrimming] copy]; } }
+- (void)setZipcode:(NSString *)value { if (zipcode != value) { [zipcode release]; zipcode = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 - (NSString *)countryCode { return countryCode; }
 - (void)setCountryCode:(NSString *)value { if (countryCode != value) { [countryCode release]; countryCode = [value copy]; } }
 
 - (NSString *)email { return email; }
-- (void)setEmail:(NSString *)value { if (email != value) { [email release]; email = [[value stringByTrimming] copy]; } }
+- (void)setEmail:(NSString *)value { if (email != value) { [email release]; email = [[value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] copy]; } }
 
 #pragma mark -
 #pragma mark Validation
@@ -136,37 +136,37 @@
 - (BOOL)validateFirstName:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateLastName:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateAddress1:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateCity:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateState:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateZipcode:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateEmail:(id *)value error:(NSError **)outError
@@ -175,7 +175,7 @@
 	// Passes validation when value is a string, at least 5 letters long, and has a '@' and a '.'
 	if (outError) *outError = nil;
 	if ([*value isKindOfClass:[NSString class]] == NO) return NO;
-	NSString *string = [*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
+	NSString *string = [*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
 	BOOL isEmail = (([string length] &gt;= 5) &amp;&amp;
 					([string rangeOfString:@&quot;@&quot;].location != NSNotFound) &amp;&amp;
 					([string rangeOfString:@&quot;.&quot;].location != NSNotFound));</diff>
      <filename>Source/PFAddress.m</filename>
    </modified>
    <modified>
      <diff>@@ -198,7 +198,7 @@ fail:
 			for (PFProduct *myitem in lineItems) {
 				for (NSDictionary *dict in [responseOrder objectForKey:@&quot;line_items&quot;]) {
 					if ([[dict objectForKey:@&quot;product_id&quot;] isEqual:[myitem identifierNumber]]) {
-						PFAssert([myitem checked], @&quot;Only purchased items should be getting license keys&quot;);
+						NSAssert([myitem checked], @&quot;Only purchased items should be getting license keys&quot;);
 						[myitem setLicenseKey:[dict objectForKey:@&quot;license_key&quot;]];
 						licensedCount += 1;
 					}
@@ -427,7 +427,7 @@ fail:
 - (BOOL)validateCreditCardSecurityCode:(id *)value error:(NSError **)outError
 {
 	if (outError) *outError = nil;
-	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0;
+	return [[*value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] != 0;
 }
 
 - (BOOL)validateCreditCardExpiration:(NSError **)outError</diff>
      <filename>Source/PFOrder.m</filename>
    </modified>
    <modified>
      <diff>@@ -4,5 +4,4 @@
 
 #ifdef __OBJC__
     #import &lt;Cocoa/Cocoa.h&gt;
-	#import &quot;PFKit.h&quot;
 #endif</diff>
      <filename>Source/PotionStorefront_Prefix.pch</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>854b4a3960ace23c6809838207c682129e698020</id>
    </parent>
  </parents>
  <author>
    <name>Andy Kim</name>
    <email>andy@potionfactory.com</email>
  </author>
  <url>http://github.com/potionfactory/potionstorefront/commit/8dc25a0ef6e950a8938913fccfa3bfb1b223fd54</url>
  <id>8dc25a0ef6e950a8938913fccfa3bfb1b223fd54</id>
  <committed-date>2009-04-14T21:11:13-07:00</committed-date>
  <authored-date>2009-04-14T21:11:13-07:00</authored-date>
  <message>Getting ready for a public release</message>
  <tree>d1cb73656eb9d35040347b2e61018ec2d0a1f224</tree>
  <committer>
    <name>Andy Kim</name>
    <email>andy@potionfactory.com</email>
  </committer>
</commit>
