Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m	(revision 271)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.m	(revision 272)
@@ -243,6 +243,12 @@
     OSStatus err = noErr;
     long selStart, selEnd;
-    string = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
-    unsigned len = [string length];
+    NSMutableString *urlString = [[NSMutableString alloc] init];
+    NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
+    NSScanner *scanner = [[NSScanner alloc] initWithString: string];
+    NSString *fragmentString;
+    while ([scanner scanUpToCharactersFromSet: whitespace intoString: &fragmentString]) {
+        [urlString appendString: fragmentString];
+    }
+    unsigned len = [urlString length];
 
     Handle h = NULL;
@@ -253,5 +259,5 @@
             ICCF_OSErrCAssert(MemError(), @"NewHandle");
 
-        if (CFStringGetBytes((CFStringRef)string, CFRangeMake(0, len), kCFStringEncodingASCII, '\0', false, (UInt8 *)*h, len, NULL) != len)
+        if (CFStringGetBytes((CFStringRef)urlString, CFRangeMake(0, len), kCFStringEncodingASCII, '\0', false, (UInt8 *)*h, len, NULL) != len)
             ICCF_OSErrCAssert(kTECNoConversionPathErr, @"CFStringGetBytes");
 
@@ -272,8 +278,10 @@
     NS_HANDLER
         DisposeHandle(h);
+        [urlString release];
         [localException raise];
     NS_ENDHANDLER
-
+        
     DisposeHandle(h);
+    [urlString release];
 
     return (err == noErr);
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.mode2
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.mode2	(revision 271)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.mode2	(revision 272)
@@ -219,6 +219,4 @@
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -252,18 +250,21 @@
 										<string>29B97315FDCFA39411CA2CEA</string>
 										<string>E1AFA51C03ECFDB000050001</string>
+										<string>E14343AE03DB48F700050002</string>
 										<string>E1BF159F03DBA81600050002</string>
+										<string>E1BF15A203DBAA5600050002</string>
 										<string>E1BF154403DB950B00050002</string>
 										<string>29B97317FDCFA39411CA2CEA</string>
+										<string>E12FEC6104959FB800AEFBF9</string>
 									</array>
 									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 									<array>
 										<array>
-											<integer>36</integer>
-											<integer>6</integer>
+											<integer>48</integer>
+											<integer>44</integer>
 											<integer>0</integer>
 										</array>
 									</array>
 									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-									<string>{{0, 0}, {298, 621}}</string>
+									<string>{{0, 416}, {298, 621}}</string>
 								</dict>
 								<key>PBXTopSmartGroupGIDs</key>
@@ -283,6 +284,4 @@
 									<real>276</real>
 								</array>
-								<key>RubberWindowFrame</key>
-								<string>682 39 315 707 0 0 1024 746 </string>
 							</dict>
 							<key>Module</key>
@@ -290,4 +289,6 @@
 						</dict>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -319,9 +320,11 @@
 									<array>
 										<string>1C37FBAC04509CD000000102</string>
+										<string>E1F84A780A71661900D1FBA1</string>
 									</array>
 									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 									<array>
 										<array>
-											<integer>5</integer>
+											<integer>4</integer>
+											<integer>0</integer>
 										</array>
 									</array>
@@ -343,4 +346,6 @@
 									<real>298</real>
 								</array>
+								<key>RubberWindowFrame</key>
+								<string>891 283 315 707 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -423,6 +428,6 @@
 			<key>TableOfContents</key>
 			<array>
-				<string>E1D95C290A712A58007FAE3C</string>
-				<string>E1D95C2A0A712A58007FAE3C</string>
+				<string>E1F84A220A71658400D1FBA1</string>
+				<string>E1F84A230A71658400D1FBA1</string>
 				<string>1C9437FD063B20B00039CFAC</string>
 				<string>1C9437FE063B20B00039CFAC</string>
@@ -457,10 +462,8 @@
 	<key>WindowOrderList</key>
 	<array>
-		<string>1C530D52069F1CE1000CFCEE</string>
-		<string>1C0AD2B3069F1EA900FABCE6</string>
 		<string>/Users/nicholas/Documents/Development/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj</string>
 	</array>
 	<key>WindowString</key>
-	<string>682 39 315 707 0 0 1024 746 </string>
+	<string>891 283 315 707 0 0 1280 1002 </string>
 	<key>WindowTools</key>
 	<array>
@@ -619,5 +622,5 @@
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string></string>
+								<string>ICeCoffEEServicePrefController.m</string>
 								<key>StatusBarVisibility</key>
 								<false/>
@@ -628,5 +631,5 @@
 								<string>{{0, 0}, {868, 0}}</string>
 								<key>RubberWindowFrame</key>
-								<string>6 172 868 452 0 0 1024 746 </string>
+								<string>6 172 868 452 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -641,5 +644,5 @@
 							<dict>
 								<key>PBXBuildLogShowsTranscriptDefaultKey</key>
-								<string>{{0, 98}, {868, 329}}</string>
+								<string>{{0, 187}, {868, 240}}</string>
 								<key>PBXProjectModuleGUID</key>
 								<string>XCMainBuildResultsModuleGUID</string>
@@ -656,5 +659,5 @@
 								<string>{{0, 5}, {868, 427}}</string>
 								<key>RubberWindowFrame</key>
-								<string>6 172 868 452 0 0 1024 746 </string>
+								<string>6 172 868 452 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -679,5 +682,5 @@
 			<array>
 				<string>1C530D52069F1CE1000CFCEE</string>
-				<string>E1D95C390A712A9C007FAE3C</string>
+				<string>E1240CAD0A7152EA00886FB4</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
@@ -686,5 +689,5 @@
 			<string>xcode.toolbar.config.build</string>
 			<key>WindowString</key>
-			<string>6 172 868 452 0 0 1024 746 </string>
+			<string>6 172 868 452 0 0 1280 1002 </string>
 			<key>WindowToolGUID</key>
 			<string>1C530D52069F1CE1000CFCEE</string>
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.pbxuser
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.pbxuser	(revision 271)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/nicholas.pbxuser	(revision 272)
@@ -14,5 +14,5 @@
 		activeTarget = E1ABAE8D0812F4B2007C5427 /* APE Module */;
 		addToTargets = (
-			E1ABAE8D0812F4B2007C5427 /* APE Module */,
+			E120DB7308141CCB00BF8DDC /* ICeCoffEE Installer */,
 		);
 		breakpoints = (
@@ -218,5 +218,5 @@
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 175188536;
+			PBXPerProjectTemplateStateSaveDate = 175203692;
 			PBXPrepackagedSmartGroups_v2 = (
 				{
@@ -693,5 +693,5 @@
 				WindowFrame = "{{524, 473}, {756, 352}}";
 			};
-			PBXWorkspaceStateSaveDate = 175188536;
+			PBXWorkspaceStateSaveDate = 175203692;
 		};
 		sourceControlManager = E12B21580548C9B600CFF4E9 /* Source Control */;
@@ -785,8 +785,8 @@
 	E12FEC3D04959F5A00AEFBF9 /* ICeCoffEEServicePrefController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {793, 3996}}";
-			sepNavSelRange = "{6373, 0}";
-			sepNavVisRect = "{{0, 1356}, {793, 924}}";
-			sepNavWindowFrame = "{{65, 118}, {832, 982}}";
+			sepNavIntBoundsRect = "{{0, 0}, {827, 3972}}";
+			sepNavSelRange = "{5589, 100}";
+			sepNavVisRect = "{{0, 0}, {0, 0}}";
+			sepNavWindowFrame = "{{65, 20}, {832, 982}}";
 		};
 	};
@@ -1115,8 +1115,8 @@
 	E14343B403DB4CF200050002 /* ICeCoffEE.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {774, 7476}}";
-			sepNavSelRange = "{9338, 0}";
-			sepNavVisRect = "{{0, 2674}, {774, 688}}";
-			sepNavWindowFrame = "{{154, 0}, {813, 746}}";
+			sepNavIntBoundsRect = "{{0, 0}, {774, 4704}}";
+			sepNavSelRange = "{8964, 0}";
+			sepNavVisRect = "{{0, 2796}, {774, 688}}";
+			sepNavWindowFrame = "{{335, 97}, {813, 746}}";
 		};
 	};
@@ -1296,7 +1296,7 @@
 	E169DBA703E4F6A400050002 /* ICeCoffEEConfig.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {629, 804}}";
-			sepNavSelRange = "{882, 0}";
-			sepNavVisRect = "{{0, 0}, {629, 555}}";
+			sepNavIntBoundsRect = "{{0, 0}, {711, 792}}";
+			sepNavSelRange = "{403, 0}";
+			sepNavVisRect = "{{0, 348}, {711, 444}}";
 			sepNavWindowFrame = "{{84, 262}, {750, 502}}";
 		};
@@ -1531,7 +1531,7 @@
 	E1BF15A503DBAA5600050002 /* ui.plist */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {694, 688}}";
-			sepNavSelRange = "{1395, 0}";
-			sepNavVisRect = "{{0, 0}, {694, 688}}";
+			sepNavIntBoundsRect = "{{0, 0}, {694, 944}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {694, 944}}";
 			sepNavWindowFrame = "{{212, 0}, {733, 746}}";
 		};
@@ -1555,8 +1555,8 @@
 	E1BF166A03DBE27000050002 /* ICeCoffEEWebKit.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {629, 1440}}";
-			sepNavSelRange = "{555, 0}";
-			sepNavVisRect = "{{0, 174}, {629, 384}}";
-			sepNavWindowFrame = "{{293, 103}, {867, 906}}";
+			sepNavIntBoundsRect = "{{0, 0}, {828, 1404}}";
+			sepNavSelRange = "{2692, 14}";
+			sepNavVisRect = "{{0, 556}, {828, 848}}";
+			sepNavWindowFrame = "{{293, 96}, {867, 906}}";
 		};
 	};
@@ -1648,7 +1648,7 @@
 	F5CD5EAA02DAE61A01AA4DA5 /* Exports.exp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {625, 220}}";
+			sepNavIntBoundsRect = "{{0, 0}, {711, 444}}";
 			sepNavSelRange = "{65, 0}";
-			sepNavVisRect = "{{0, 0}, {625, 220}}";
+			sepNavVisRect = "{{0, 0}, {711, 444}}";
 			sepNavWindowFrame = "{{107, 241}, {750, 502}}";
 		};
Index: trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/project.pbxproj
===================================================================
--- trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/project.pbxproj	(revision 271)
+++ trunk/ICeCoffEE/ICeCoffEE/ICeCoffEE.xcodeproj/project.pbxproj	(revision 272)
@@ -96,4 +96,6 @@
 		E1ABAEDE0812F4B2007C5427 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E19EB50303DD36E600050002 /* Foundation.framework */; };
 		E1ABAEF90812F4B3007C5427 /* APEManagerPrefPane.plugin in CopyFiles */ = {isa = PBXBuildFile; fileRef = E1ABAED50812F4B2007C5427 /* APEManagerPrefPane.plugin */; };
+		E1F84A480A7165B800D1FBA1 /* UI_SCRInstall.plugin in CopyFiles */ = {isa = PBXBuildFile; fileRef = E1F84A360A7165B800D1FBA1 /* UI_SCRInstall.plugin */; };
+		E1F84A6D0A7165D400D1FBA1 /* Smart Crash Reports in CopyFiles */ = {isa = PBXBuildFile; fileRef = E1F84A490A7165D400D1FBA1 /* Smart Crash Reports */; };
 /* End PBXBuildFile section */
 
@@ -149,4 +151,6 @@
 			dstSubfolderSpec = 16;
 			files = (
+				E1F84A480A7165B800D1FBA1 /* UI_SCRInstall.plugin in CopyFiles */,
+				E1F84A6D0A7165D400D1FBA1 /* Smart Crash Reports in CopyFiles */,
 				E120DF1608141DBD00BF8DDC /* KillPrefpanesCache.sh in CopyFiles */,
 				E120DF1908141DBD00BF8DDC /* ui.plist in CopyFiles */,
@@ -171,4 +175,5 @@
 		E11854F703F2709E00050002 /* CPS.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CPS.h; sourceTree = "<group>"; };
 		E120DF0C08141D5100BF8DDC /* ICeCoffEE Installer.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; name = "ICeCoffEE Installer.app"; path = "Installer components/ICeCoffEE Installer.app"; sourceTree = "<group>"; };
+		E1240CA10A7150E400886FB4 /* German */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = German; path = "German.lproj/Select services.nib"; sourceTree = "<group>"; };
 		E128636008381A34009C048B /* French */ = {isa = PBXFileReference; lastKnownFileType = wrapper.rtfd; name = French; path = French.lproj/APEInfo.rtfd; sourceTree = "<group>"; };
 		E128636B08381AB5009C048B /* French */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = "French.lproj/APE Manager plugin.nib"; sourceTree = "<group>"; };
@@ -239,4 +244,6 @@
 		E1CBC99803E7602700050002 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
 		E1F6E3AC040BCC5700050002 /* Japanese */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = Japanese; path = Japanese.lproj/Localizable.strings; sourceTree = "<group>"; };
+		E1F84A360A7165B800D1FBA1 /* UI_SCRInstall.plugin */ = {isa = PBXFileReference; lastKnownFileType = folder; path = UI_SCRInstall.plugin; sourceTree = "<group>"; };
+		E1F84A490A7165D400D1FBA1 /* Smart Crash Reports */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "Smart Crash Reports"; sourceTree = "<group>"; };
 		F56276B903796C8B01AA4DA5 /* CFPreferencesWrapper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CFPreferencesWrapper.h; sourceTree = "<group>"; };
 		F56276BA03796C8B01AA4DA5 /* CFPreferencesWrapper.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CFPreferencesWrapper.m; sourceTree = "<group>"; };
@@ -469,4 +476,6 @@
 			isa = PBXGroup;
 			children = (
+				E1F84A360A7165B800D1FBA1 /* UI_SCRInstall.plugin */,
+				E1F84A490A7165D400D1FBA1 /* Smart Crash Reports */,
 				E1BF15A403DBAA5600050002 /* KillPrefpanesCache.sh */,
 				E1BF15A503DBAA5600050002 /* ui.plist */,
@@ -770,4 +779,5 @@
 			children = (
 				E12FEC6204959FB800AEFBF9 /* Select services.nib */,
+				E1240CA10A7150E400886FB4 /* German */,
 			);
 			name = "Select services.nib";
