Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3	(revision 363)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.mode2v3	(revision 364)
@@ -230,4 +230,6 @@
 					<array>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -259,5 +261,11 @@
 										<string>29B97314FDCFA39411CA2CEA</string>
 										<string>080E96DDFE201D6D7F000001</string>
+										<string>F560E311035787D501A4E466</string>
+										<string>F560E314035787F901A4E466</string>
+										<string>F59E47AF036AAC31016B311C</string>
+										<string>F560E312035787E001A4E466</string>
 										<string>29B97317FDCFA39411CA2CEA</string>
+										<string>E10E71F3040C335800050002</string>
+										<string>E19DCBE503BE516000B934BF</string>
 										<string>E17562BC0CF8E7A800FC5057</string>
 									</array>
@@ -265,10 +273,11 @@
 									<array>
 										<array>
-											<integer>1</integer>
+											<integer>110</integer>
+											<integer>108</integer>
 											<integer>0</integer>
 										</array>
 									</array>
 									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-									<string>{{0, 0}, {334, 441}}</string>
+									<string>{{0, 1497}, {334, 441}}</string>
 								</dict>
 								<key>PBXTopSmartGroupGIDs</key>
@@ -289,5 +298,5 @@
 								</array>
 								<key>RubberWindowFrame</key>
-								<string>1570 651 351 527 0 0 1920 1178 </string>
+								<string>1570 647 351 527 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
@@ -329,5 +338,5 @@
 									<array>
 										<array>
-											<integer>2</integer>
+											<integer>0</integer>
 										</array>
 									</array>
@@ -429,6 +438,6 @@
 			<key>TableOfContents</key>
 			<array>
-				<string>E1F961A10CF9F8E70087C980</string>
-				<string>E1F961A20CF9F8E70087C980</string>
+				<string>E15045D00CFCF47100DE47E9</string>
+				<string>E15045D10CFCF47100DE47E9</string>
 				<string>1C9437FD063B20B00039CFAC</string>
 				<string>1C9437FE063B20B00039CFAC</string>
@@ -463,9 +472,9 @@
 	<key>WindowOrderList</key>
 	<array>
+		<string>E1B123120CF664D6004975AA</string>
 		<string>/Users/nicholas/Documents/Development/Pester/Source/Pester.xcodeproj</string>
-		<string>E1B123120CF664D6004975AA</string>
 	</array>
 	<key>WindowString</key>
-	<string>1570 651 351 527 0 0 1920 1178 </string>
+	<string>1570 647 351 527 0 0 1920 1178 </string>
 	<key>WindowToolsV3</key>
 	<array>
@@ -620,4 +629,6 @@
 					<array>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -625,5 +636,5 @@
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string></string>
+								<string>NJRValidatingField.h</string>
 								<key>StatusBarVisibility</key>
 								<true/>
@@ -642,6 +653,4 @@
 						</dict>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -683,5 +692,5 @@
 			<array>
 				<string>1C530D52069F1CE1000CFCEE</string>
-				<string>E175647E0CF9EA4700FC5057</string>
+				<string>E15043790CFB91AF00DE47E9</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
@@ -725,6 +734,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {445, 380}}</string>
-											<string>{{445, 0}, {536, 380}}</string>
+											<string>{{0, 0}, {445, 368}}</string>
+											<string>{{445, 0}, {536, 368}}</string>
 										</array>
 									</dict>
@@ -741,6 +750,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {981, 380}}</string>
-											<string>{{0, 380}, {981, 338}}</string>
+											<string>{{0, 0}, {981, 368}}</string>
+											<string>{{0, 368}, {981, 350}}</string>
 										</array>
 									</dict>
@@ -775,10 +784,10 @@
 									</array>
 									<key>Frame</key>
-									<string>{{445, 0}, {536, 380}}</string>
+									<string>{{445, 0}, {536, 368}}</string>
 									<key>RubberWindowFrame</key>
-									<string>491 171 981 759 0 0 1920 1178 </string>
+									<string>843 200 981 759 0 0 1920 1178 </string>
 								</dict>
 								<key>RubberWindowFrame</key>
-								<string>491 171 981 759 0 0 1920 1178 </string>
+								<string>843 200 981 759 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
@@ -803,16 +812,16 @@
 			<array>
 				<string>1C530D54069F1CE1000CFCEE</string>
-				<string>E17564230CF9EA2400FC5057</string>
+				<string>E15043670CFB8D4800DE47E9</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>E17564240CF9EA2400FC5057</string>
-				<string>E17564250CF9EA2400FC5057</string>
-				<string>E17564260CF9EA2400FC5057</string>
-				<string>E17564270CF9EA2400FC5057</string>
-				<string>E17564280CF9EA2400FC5057</string>
+				<string>E15043680CFB8D4800DE47E9</string>
+				<string>E15043690CFB8D4800DE47E9</string>
+				<string>E150436A0CFB8D4800DE47E9</string>
+				<string>E150436B0CFB8D4800DE47E9</string>
+				<string>E150436C0CFB8D4800DE47E9</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
 			<key>WindowString</key>
-			<string>491 171 981 759 0 0 1920 1178 </string>
+			<string>843 200 981 759 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>1C530D54069F1CE1000CFCEE</string>
@@ -841,5 +850,5 @@
 										<string>1CDD528C0622207200134675</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>&lt;No Editor&gt;</string>
+										<string>PSApplication.m</string>
 										<key>StatusBarVisibility</key>
 										<true/>
@@ -848,7 +857,7 @@
 									<dict>
 										<key>Frame</key>
-										<string>{{0, 0}, {878, 347}}</string>
+										<string>{{0, 0}, {878, 241}}</string>
 										<key>RubberWindowFrame</key>
-										<string>47 178 878 716 0 0 1920 1178 </string>
+										<string>619 85 878 716 0 0 1920 1178 </string>
 									</dict>
 									<key>Module</key>
@@ -859,7 +868,9 @@
 							</array>
 							<key>Proportion</key>
-							<string>347pt</string>
-						</dict>
-						<dict>
+							<string>241pt</string>
+						</dict>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -872,12 +883,12 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 352}, {878, 323}}</string>
+								<string>{{0, 246}, {878, 429}}</string>
 								<key>RubberWindowFrame</key>
-								<string>47 178 878 716 0 0 1920 1178 </string>
+								<string>619 85 878 716 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXProjectFindModule</string>
 							<key>Proportion</key>
-							<string>323pt</string>
+							<string>429pt</string>
 						</dict>
 					</array>
@@ -897,11 +908,11 @@
 			<array>
 				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>E17564860CF9F5F400FC5057</string>
-				<string>E17564870CF9F5F400FC5057</string>
+				<string>E15043970CFBA77500DE47E9</string>
+				<string>E15043980CFBA77500DE47E9</string>
 				<string>1CDD528C0622207200134675</string>
 				<string>1CD0528E0623707200166675</string>
 			</array>
 			<key>WindowString</key>
-			<string>47 178 878 716 0 0 1920 1178 </string>
+			<string>619 85 878 716 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>1C530D57069F1CE1000CFCEE</string>
@@ -938,16 +949,16 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {915, 284}}</string>
+								<string>{{0, 0}, {1144, 216}}</string>
 								<key>RubberWindowFrame</key>
-								<string>447 136 915 325 0 0 1920 1178 </string>
+								<string>677 91 1144 257 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXDebugCLIModule</string>
 							<key>Proportion</key>
-							<string>284pt</string>
+							<string>216pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>284pt</string>
+					<string>216pt</string>
 				</dict>
 			</array>
@@ -963,5 +974,5 @@
 			<array>
 				<string>1C530D5B069F1CE1000CFCEE</string>
-				<string>E17564290CF9EA2400FC5057</string>
+				<string>E150436D0CFB8D4800DE47E9</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
@@ -969,5 +980,5 @@
 			<string>xcode.toolbar.config.consoleV3</string>
 			<key>WindowString</key>
-			<string>447 136 915 325 0 0 1920 1178 </string>
+			<string>677 91 1144 257 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>1C530D5B069F1CE1000CFCEE</string>
@@ -1034,7 +1045,7 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {545, 0}}</string>
+								<string>{{0, 0}, {586, 0}}</string>
 								<key>RubberWindowFrame</key>
-								<string>934 569 545 283 0 0 1920 1178 </string>
+								<string>960 488 586 680 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
@@ -1054,5 +1065,5 @@
 									<key>PBXCVSModuleTreeModuleColumnWidthsKey</key>
 									<array>
-										<real>216</real>
+										<real>257</real>
 										<real>40.66162109375</real>
 										<real>53</real>
@@ -1075,22 +1086,20 @@
 								<key>PBXProjectModuleLabel</key>
 								<string>SCM Results</string>
-								<key>SCMActivityViewerShowingDefaultKey</key>
-								<string>{{0, 237}, {545, 0}}</string>
 							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 5}, {545, 237}}</string>
+								<string>{{0, 5}, {586, 634}}</string>
 								<key>RubberWindowFrame</key>
-								<string>934 569 545 283 0 0 1920 1178 </string>
+								<string>960 488 586 680 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXCVSModule</string>
 							<key>Proportion</key>
-							<string>237pt</string>
+							<string>634pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>242pt</string>
+					<string>639pt</string>
 				</dict>
 			</array>
@@ -1106,5 +1115,5 @@
 			<array>
 				<string>E1B123120CF664D6004975AA</string>
-				<string>E1F961A30CF9F8E70087C980</string>
+				<string>E150465E0CFCFB0200DE47E9</string>
 				<string>1C78EAB2065D492600B07095</string>
 				<string>1CD052920623707200166675</string>
@@ -1113,5 +1122,5 @@
 			<string>xcode.toolbar.config.scm</string>
 			<key>WindowString</key>
-			<string>934 569 545 283 0 0 1920 1178 </string>
+			<string>960 488 586 680 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>E1B123120CF664D6004975AA</string>
@@ -1234,6 +1243,6 @@
 			<key>TableOfContents</key>
 			<array>
-				<string>E1B1236F0CF67A4B004975AA</string>
-				<string>E1B123700CF67A4B004975AA</string>
+				<string>E15043BB0CFCC31200DE47E9</string>
+				<string>E15043BC0CFCC31200DE47E9</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
 				<string>1CA1AED706398EBD00589147</string>
@@ -1244,5 +1253,5 @@
 			<string>290 117 744 409 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
-			<string>E1B1236F0CF67A4B004975AA</string>
+			<string>E15043BB0CFCC31200DE47E9</string>
 			<key>WindowToolIsVisible</key>
 			<false/>
@@ -1427,8 +1436,12 @@
 		</dict>
 		<dict>
+			<key>FirstTimeWindowDisplayed</key>
+			<false/>
 			<key>Identifier</key>
 			<string>windowTool.refactoring</string>
 			<key>IncludeInToolsMenu</key>
 			<integer>0</integer>
+			<key>IsVertical</key>
+			<true/>
 			<key>Layout</key>
 			<array>
@@ -1437,21 +1450,28 @@
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<integer>1</integer>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>E15044550CFCDC1D00DE47E9</string>
+							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{0, 0}, {500, 335}</string>
+								<string>{{0, 0}, {891, 710}}</string>
 								<key>RubberWindowFrame</key>
-								<string>{0, 0}, {500, 335}</string>
+								<string>371 185 891 751 0 0 1920 1178 </string>
+								<key>XCRefactoringSplitViewLowerHeight</key>
+								<real>310</real>
+								<key>XCRefactoringSplitViewTotalHeight</key>
+								<real>627</real>
 							</dict>
 							<key>Module</key>
 							<string>XCRefactoringModule</string>
 							<key>Proportion</key>
-							<string>100%</string>
+							<string>710pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>100%</string>
+					<string>710pt</string>
 				</dict>
 			</array>
@@ -1462,6 +1482,18 @@
 				<string>XCRefactoringModule</string>
 			</array>
+			<key>StatusbarIsVisible</key>
+			<true/>
+			<key>TableOfContents</key>
+			<array>
+				<string>E15044560CFCDC1D00DE47E9</string>
+				<string>E15044570CFCDC1D00DE47E9</string>
+				<string>E15044550CFCDC1D00DE47E9</string>
+			</array>
 			<key>WindowString</key>
-			<string>200 200 500 356 0 0 1920 1200 </string>
+			<string>371 185 891 751 0 0 1920 1178 </string>
+			<key>WindowToolGUID</key>
+			<string>E15044560CFCDC1D00DE47E9</string>
+			<key>WindowToolIsVisible</key>
+			<false/>
 		</dict>
 	</array>
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser	(revision 363)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/nicholas.pbxuser	(revision 364)
@@ -3,6 +3,6 @@
 	089C165DFE840E0CC02AAC07 /* English */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {813, 876}}";
-			sepNavSelRange = "{145, 0}";
+			sepNavIntBoundsRect = "{{0, 0}, {813, 899}}";
+			sepNavSelRange = "{105, 0}";
 			sepNavVisRange = "{0, 229}";
 			sepNavWindowFrame = "{{15, 238}, {872, 935}}";
@@ -19,8 +19,7 @@
 			F596730D0355CFA301407038 /* -[_NSZombie methodSignatureForSelector:] */,
 			F500E5370359719B01AEEDB1 /* szone_error */,
-			F5B15F74037E42EB01AEEDB1 /* -[NSException raise] */,
 			E1A9DEE703BF3C110089E8B2 /* -[_NSZombie release] */,
-			E145384C043A31D900050002 /* NJRHotKeyManager.m:158 */,
 			E17CA6640CF697FE00018B34 /* SetPortRGBForeColor */,
+			E15043CF0CFCC41500DE47E9 /* objc_exception_throw */,
 		);
 		codeSenseManager = E1B11EDD0CF5F2EB004975AA /* Code sense */;
@@ -60,5 +59,5 @@
 					315,
 					20,
-					48.16259765625,
+					48,
 					43,
 					43,
@@ -75,5 +74,5 @@
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 217708774;
+			PBXPerProjectTemplateStateSaveDate = 217904241;
 			"PBXTemplateGeometry-F5314676015831810DCA290F" = {
 				ContentSize = "{618, 257}";
@@ -794,5 +793,5 @@
 				},
 			);
-			PBXWorkspaceStateSaveDate = 217708774;
+			PBXWorkspaceStateSaveDate = 217904241;
 		};
 		sourceControlManager = E1B11EDC0CF5F2EB004975AA /* Source Control */;
@@ -806,4 +805,12 @@
 			sepNavSelRange = "{208, 0}";
 			sepNavVisRange = "{0, 252}";
+		};
+	};
+	E10E71F4040C335800050002 /* English */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 1503}}";
+			sepNavSelRange = "{1411, 0}";
+			sepNavVisRange = "{0, 3709}";
+			sepNavWindowFrame = "{{61, 198}, {1052, 933}}";
 		};
 	};
@@ -818,7 +825,7 @@
 	E11373150439FCC700050002 /* NJRHotKey.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {830, 1287}}";
-			sepNavSelRange = "{1856, 46}";
-			sepNavVisRange = "{1263, 1577}";
+			sepNavIntBoundsRect = "{{0, 0}, {830, 1298}}";
+			sepNavSelRange = "{2509, 35}";
+			sepNavVisRange = "{1321, 1515}";
 			sepNavWindowFrame = "{{199, 307}, {889, 698}}";
 		};
@@ -854,16 +861,24 @@
 	E130B9AD03B7C59700000028 /* PSPowerManager.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 1045}}";
-			sepNavSelRange = "{386, 27}";
-			sepNavVisRange = "{24, 683}";
+			sepNavIntBoundsRect = "{{0, 0}, {817, 1078}}";
+			sepNavSelRange = "{387, 16}";
+			sepNavVisRange = "{180, 425}";
 			sepNavWindowFrame = "{{153, 349}, {889, 698}}";
 		};
 	};
+	E13919E203B9E4E100000028 /* NJRIntervalField.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {761, 780}}";
+			sepNavSelRange = "{419, 0}";
+			sepNavVisRange = "{0, 425}";
+			sepNavWindowFrame = "{{15, 49}, {834, 1124}}";
+		};
+	};
 	E13919E303B9E4E100000028 /* NJRIntervalField.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 1980}}";
-			sepNavSelRange = "{3944, 0}";
-			sepNavVisRange = "{2218, 3841}";
-			sepNavWindowFrame = "{{15, 334}, {820, 839}}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 946}}";
+			sepNavSelRange = "{2674, 0}";
+			sepNavVisRange = "{329, 2345}";
+			sepNavWindowFrame = "{{364, 159}, {820, 839}}";
 		};
 	};
@@ -876,19 +891,33 @@
 		};
 	};
-	E145384C043A31D900050002 /* NJRHotKeyManager.m:158 */ = {
-		isa = PBXFileBreakpoint;
+	E15043CF0CFCC41500DE47E9 /* objc_exception_throw */ = {
+		isa = PBXSymbolicBreakpoint;
 		actions = (
 		);
-		breakpointStyle = 0;
+		breakpointStyle = 1;
 		continueAfterActions = 0;
 		countType = 0;
 		delayBeforeContinue = 0;
-		fileReference = E145383F043A1DB200050002 /* NJRHotKeyManager.m */;
-		hitCount = 0;
+		hitCount = 1;
 		ignoreCount = 0;
-		lineNumber = 158;
-		location = Pester;
-		modificationTime = 217621338.571945;
-		state = 1;
+		location = libobjc.A.dylib;
+		modificationTime = 217892071.677906;
+		state = 2;
+		symbolName = objc_exception_throw;
+	};
+	E15044650CFCDC7E00DE47E9 /* NJRValidatingField.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {869, 213}}";
+			sepNavSelRange = "{170, 0}";
+			sepNavVisRange = "{0, 344}";
+		};
+	};
+	E15044660CFCDC7E00DE47E9 /* NJRValidatingField.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {775, 1122}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 4696}";
+			sepNavWindowFrame = "{{15, 49}, {834, 1124}}";
+		};
 	};
 	E162698303B6189000000028 /* NSTableView-NJRExtensions.m */ = {
@@ -933,7 +962,7 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {993, 897}}";
-			sepNavSelRange = "{419, 0}";
-			sepNavVisRange = "{0, 471}";
-			sepNavWindowFrame = "{{222, 51}, {1052, 933}}";
+			sepNavSelRange = "{369, 87}";
+			sepNavVisRange = "{0, 952}";
+			sepNavWindowFrame = "{{560, 24}, {1052, 933}}";
 		};
 	};
@@ -949,6 +978,6 @@
 		ignoreCount = 0;
 		location = "";
-		modificationTime = 217621338.896014;
-		state = 0;
+		modificationTime = 217892051.042254;
+		state = 2;
 		symbolName = SetPortRGBForeColor;
 	};
@@ -962,7 +991,7 @@
 	E18DA4090442C56D00050002 /* PSMediaAlert.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 792}}";
-			sepNavSelRange = "{618, 0}";
-			sepNavVisRange = "{3, 1720}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 847}}";
+			sepNavSelRange = "{643, 0}";
+			sepNavVisRange = "{0, 1827}";
 			sepNavWindowFrame = "{{153, 208}, {820, 839}}";
 		};
@@ -970,7 +999,7 @@
 	E18DAAEB0442CC3E00050002 /* NJRSoundManager.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 1254}}";
-			sepNavSelRange = "{846, 134}";
-			sepNavVisRange = "{0, 2251}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 1210}}";
+			sepNavSelRange = "{576, 0}";
+			sepNavVisRange = "{0, 2216}";
 			sepNavWindowFrame = "{{61, 292}, {820, 839}}";
 		};
@@ -996,7 +1025,7 @@
 	E1A18CAC03B4344C00000028 /* PSAlerts.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {830, 1617}}";
-			sepNavSelRange = "{2194, 0}";
-			sepNavVisRange = "{1314, 2197}";
+			sepNavIntBoundsRect = "{{0, 0}, {830, 1672}}";
+			sepNavSelRange = "{3864, 7}";
+			sepNavVisRange = "{1868, 2150}";
 			sepNavWindowFrame = "{{528, 47}, {889, 698}}";
 		};
@@ -1013,6 +1042,6 @@
 		ignoreCount = 0;
 		location = "";
-		modificationTime = 217621338.880709;
-		state = 0;
+		modificationTime = 217892051.041767;
+		state = 2;
 		symbolName = "-[_NSZombie release]";
 	};
@@ -1037,6 +1066,6 @@
 	E1B11F8B0CF5F30F004975AA /* Info-Pester.plist */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {736, 865}}";
-			sepNavSelRange = "{981, 0}";
+			sepNavIntBoundsRect = "{{0, 0}, {736, 888}}";
+			sepNavSelRange = "{346, 0}";
 			sepNavVisRange = "{0, 2337}";
 			sepNavWindowFrame = "{{549, 47}, {795, 924}}";
@@ -1113,8 +1142,24 @@
 	E1BF6E9103C928D200050002 /* PSTimer.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {940, 2908}}";
-			sepNavSelRange = "{5491, 0}";
-			sepNavVisRange = "{0, 3062}";
+			sepNavIntBoundsRect = "{{0, 0}, {920, 2842}}";
+			sepNavSelRange = "{4580, 0}";
+			sepNavVisRange = "{409, 1359}";
 			sepNavWindowFrame = "{{38, 50}, {999, 1128}}";
+		};
+	};
+	E1CDEC3D0444053F00AEEDB1 /* NJRNonCenteringWindow.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 874}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 242}";
+			sepNavWindowFrame = "{{176, 93}, {1052, 933}}";
+		};
+	};
+	E1CDEC3E0444053F00AEEDB1 /* NJRNonCenteringWindow.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 874}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 261}";
+			sepNavWindowFrame = "{{153, 114}, {1052, 933}}";
 		};
 	};
@@ -1142,10 +1187,10 @@
 		};
 	};
-	E1E9A33903C8EF6700050002 /* SUSpeaker.m */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {869, 3234}}";
-			sepNavSelRange = "{1839, 122}";
-			sepNavVisRange = "{1660, 639}";
-			sepNavWindowFrame = "{{314, 202}, {889, 698}}";
+	E1ECA00703C002B300F54C66 /* PSError.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 874}}";
+			sepNavSelRange = "{254, 0}";
+			sepNavVisRange = "{0, 1270}";
+			sepNavWindowFrame = "{{153, 114}, {1052, 933}}";
 		};
 	};
@@ -1215,29 +1260,43 @@
 		ignoreCount = 0;
 		location = libSystem.B.dylib;
-		modificationTime = 217621338.572037;
-		state = 1;
+		modificationTime = 217892051.041262;
+		state = 2;
 		symbolName = szone_error;
 	};
 	F517D63E0356B80C016D68B9 /* PSAlarmsController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {830, 2057}}";
-			sepNavSelRange = "{3828, 50}";
-			sepNavVisRange = "{2755, 1818}";
-			sepNavWindowFrame = "{{360, 160}, {889, 698}}";
+			sepNavIntBoundsRect = "{{0, 0}, {817, 2123}}";
+			sepNavSelRange = "{2816, 14}";
+			sepNavVisRange = "{2384, 686}";
+			sepNavWindowFrame = "{{744, 79}, {889, 698}}";
+		};
+	};
+	F517D63F0356B80C016D68B9 /* PSAlarmsController.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {830, 639}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 460}";
 		};
 	};
 	F517D6420356B8CC016D68B9 /* PSAlarms.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {920, 3619}}";
-			sepNavSelRange = "{8316, 0}";
-			sepNavVisRange = "{7670, 1218}";
-			sepNavWindowFrame = "{{176, 187}, {820, 839}}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 3737}}";
+			sepNavSelRange = "{9736, 0}";
+			sepNavVisRange = "{7626, 2401}";
+			sepNavWindowFrame = "{{938, 170}, {820, 839}}";
+		};
+	};
+	F517D6430356B8CC016D68B9 /* PSAlarms.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {761, 780}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 953}";
 		};
 	};
 	F560E2F10357506401A4E466 /* PSApplication.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 3157}}";
-			sepNavSelRange = "{1549, 0}";
-			sepNavVisRange = "{0, 1956}";
+			sepNavIntBoundsRect = "{{0, 0}, {817, 2772}}";
+			sepNavSelRange = "{9502, 21}";
+			sepNavVisRange = "{8732, 887}";
 			sepNavWindowFrame = "{{586, 75}, {820, 839}}";
 		};
@@ -1268,7 +1327,7 @@
 	F589C9C6035AA12B0155F4B2 /* Read Me.rtfd */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {960, 4459}}";
-			sepNavSelRange = "{14260, 0}";
-			sepNavVisRect = "{{0, 2212}, {960, 1091}}";
+			sepNavIntBoundsRect = "{{0, 0}, {960, 4408}}";
+			sepNavSelRange = "{16, 0}";
+			sepNavVisRect = "{{0, 199}, {960, 1091}}";
 			sepNavWindowFrame = "{{15, 50}, {999, 1128}}";
 		};
@@ -1285,13 +1344,13 @@
 		ignoreCount = 0;
 		location = "";
-		modificationTime = 217621338.862668;
-		state = 0;
+		modificationTime = 217892051.040556;
+		state = 2;
 		symbolName = "-[_NSZombie methodSignatureForSelector:]";
 	};
 	F59DC6D30353C9E601AEEDB1 /* PSAlarmSetController.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {940, 1092}}";
-			sepNavSelRange = "{945, 9}";
-			sepNavVisRange = "{0, 2347}";
+			sepNavIntBoundsRect = "{{0, 0}, {775, 1065}}";
+			sepNavSelRange = "{1563, 0}";
+			sepNavVisRange = "{0, 2381}";
 			sepNavWindowFrame = "{{23, 50}, {999, 1128}}";
 		};
@@ -1299,15 +1358,15 @@
 	F59DC6D40353C9E601AEEDB1 /* PSAlarmSetController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {940, 6539}}";
-			sepNavSelRange = "{4235, 0}";
-			sepNavVisRange = "{2184, 4891}";
-			sepNavWindowFrame = "{{507, 50}, {999, 1128}}";
+			sepNavIntBoundsRect = "{{0, 0}, {775, 7139}}";
+			sepNavSelRange = "{21486, 11}";
+			sepNavVisRange = "{18453, 3820}";
+			sepNavWindowFrame = "{{561, 54}, {834, 1124}}";
 		};
 	};
 	F59DC6DC0353DE5101AEEDB1 /* PSAlarmNotifierController.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {920, 2233}}";
-			sepNavSelRange = "{2975, 17}";
-			sepNavVisRange = "{2072, 999}";
+			sepNavIntBoundsRect = "{{0, 0}, {817, 2391}}";
+			sepNavSelRange = "{4583, 27}";
+			sepNavVisRange = "{4327, 730}";
 			sepNavWindowFrame = "{{613, 82}, {820, 839}}";
 		};
@@ -1344,8 +1403,8 @@
 	F59E47A7036AAA6D016B311C /* PSAlert.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 869}}";
-			sepNavSelRange = "{1016, 17}";
-			sepNavVisRange = "{0, 1813}";
-			sepNavWindowFrame = "{{469, -22}, {820, 839}}";
+			sepNavIntBoundsRect = "{{0, 0}, {761, 891}}";
+			sepNavSelRange = "{1898, 0}";
+			sepNavVisRange = "{145, 1875}";
+			sepNavWindowFrame = "{{641, 165}, {820, 839}}";
 		};
 	};
@@ -1360,6 +1419,14 @@
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {1297, 781}}";
-			sepNavSelRange = "{872, 0}";
-			sepNavVisRange = "{32, 1931}";
+			sepNavSelRange = "{1311, 0}";
+			sepNavVisRange = "{0, 1940}";
+			sepNavWindowFrame = "{{360, 78}, {1356, 780}}";
+		};
+	};
+	F59E47AC036AAC1E016B311C /* PSBeepAlert.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1297, 721}}";
+			sepNavSelRange = "{200, 12}";
+			sepNavVisRange = "{0, 370}";
 			sepNavWindowFrame = "{{360, 78}, {1356, 780}}";
 		};
@@ -1396,4 +1463,19 @@
 		};
 	};
+	F59E47BC036AB228016B311C /* PSMovieAlert.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 1522}}";
+			sepNavSelRange = "{1930, 0}";
+			sepNavVisRange = "{1829, 2467}";
+			sepNavWindowFrame = "{{84, 177}, {1052, 933}}";
+		};
+	};
+	F59E47BD036AB228016B311C /* PSMovieAlert.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 874}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 598}";
+		};
+	};
 	F59E4BE6036B2E5E016B311C /* PSScriptAlert.m */ = {
 		uiCtxt = {
@@ -1414,46 +1496,77 @@
 	F59F6CB40354E7DA01AEEDB1 /* PSAlarm.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {830, 924}}";
+			sepNavIntBoundsRect = "{{0, 0}, {993, 913}}";
 			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 1854}";
+			sepNavVisRange = "{0, 2636}";
+			sepNavWindowFrame = "{{15, 240}, {1052, 933}}";
 		};
 	};
 	F59F6CB50354E7DA01AEEDB1 /* PSAlarm.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {828, 6292}}";
-			sepNavSelRange = "{823, 0}";
-			sepNavVisRange = "{0, 2454}";
-			sepNavWindowFrame = "{{214, 23}, {887, 884}}";
-		};
-	};
-	F5B15F74037E42EB01AEEDB1 /* -[NSException raise] */ = {
-		isa = PBXSymbolicBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		hitCount = 0;
-		ignoreCount = 0;
-		location = CoreFoundation;
-		modificationTime = 217621338.572041;
-		state = 1;
-		symbolName = "-[NSException raise]";
+			sepNavIntBoundsRect = "{{0, 0}, {993, 6490}}";
+			sepNavSelRange = "{20070, 0}";
+			sepNavVisRange = "{17193, 2959}";
+			sepNavWindowFrame = "{{466, 241}, {1052, 933}}";
+		};
+	};
+	F5B79836035F64F80136A8DD /* NJRTableView.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 1210}}";
+			sepNavSelRange = "{899, 0}";
+			sepNavVisRange = "{0, 2747}";
+		};
+	};
+	F5B79837035F64F80136A8DD /* NJRTableView.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 897}}";
+			sepNavSelRange = "{646, 0}";
+			sepNavVisRange = "{0, 646}";
+			sepNavWindowFrame = "{{835, 245}, {1052, 933}}";
+		};
 	};
 	F5F1986C036B813101EB0372 /* PSSpeechAlert.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {761, 1078}}";
-			sepNavSelRange = "{932, 0}";
-			sepNavVisRange = "{177, 1917}";
-			sepNavWindowFrame = "{{533, 79}, {820, 839}}";
+			sepNavIntBoundsRect = "{{0, 0}, {920, 1056}}";
+			sepNavSelRange = "{1881, 0}";
+			sepNavVisRange = "{1560, 905}";
+			sepNavWindowFrame = "{{454, 61}, {1052, 933}}";
+		};
+	};
+	F5F1986D036B813101EB0372 /* PSSpeechAlert.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {817, 264}}";
+			sepNavSelRange = "{172, 0}";
+			sepNavVisRange = "{0, 264}";
 		};
 	};
 	F5F19870036B822E01EB0372 /* NJRVoicePopUpButton.m */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {869, 1496}}";
-			sepNavSelRange = "{514, 81}";
-			sepNavVisRange = "{226, 979}";
-			sepNavWindowFrame = "{{61, 433}, {889, 698}}";
+			sepNavIntBoundsRect = "{{0, 0}, {830, 1441}}";
+			sepNavSelRange = "{976, 0}";
+			sepNavVisRange = "{0, 1846}";
+			sepNavWindowFrame = "{{981, 73}, {889, 698}}";
+		};
+	};
+	F5F19871036B822E01EB0372 /* NJRVoicePopUpButton.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {830, 662}}";
+			sepNavSelRange = "{250, 0}";
+			sepNavVisRange = "{0, 583}";
+		};
+	};
+	F5F198D0036BE57401EB0372 /* NJRTableDelegate.m */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 2970}}";
+			sepNavSelRange = "{8161, 0}";
+			sepNavVisRange = "{6950, 2655}";
+			sepNavWindowFrame = "{{236, 118}, {1052, 933}}";
+		};
+	};
+	F5F198D1036BE57401EB0372 /* NJRTableDelegate.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {993, 897}}";
+			sepNavSelRange = "{495, 46}";
+			sepNavVisRange = "{0, 546}";
+			sepNavWindowFrame = "{{130, 135}, {1052, 933}}";
 		};
 	};
Index: trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj
===================================================================
--- trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 363)
+++ trunk/Cocoa/Pester/Source/Pester.xcodeproj/project.pbxproj	(revision 364)
@@ -8,8 +8,9 @@
 
 /* Begin PBXBuildFile section */
+		E15044670CFCDC7E00DE47E9 /* NJRValidatingField.m in Sources */ = {isa = PBXBuildFile; fileRef = E15044660CFCDC7E00DE47E9 /* NJRValidatingField.m */; };
 		E17562620CF8C50B00FC5057 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E17562610CF8C50B00FC5057 /* Sparkle.framework */; };
-		E17562720CF8C53F00FC5057 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = E17562610CF8C50B00FC5057 /* Sparkle.framework */; };
+		E17562720CF8C53F00FC5057 /* Sparkle.framework in Copy Sparkle.framework */ = {isa = PBXBuildFile; fileRef = E17562610CF8C50B00FC5057 /* Sparkle.framework */; };
 		E17CA7BB0CF7D08C00018B34 /* DynaLoader.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E17CA7BA0CF7D08C00018B34 /* DynaLoader.a */; };
-		E17CA9AB0CF7F8CB00018B34 /* Manip.pm in CopyFiles */ = {isa = PBXBuildFile; fileRef = E17CA9A90CF7F8C200018B34 /* Manip.pm */; };
+		E17CA9AB0CF7F8CB00018B34 /* Manip.pm in Copy Perl Modules */ = {isa = PBXBuildFile; fileRef = E17CA9A90CF7F8C200018B34 /* Manip.pm */; };
 		E1B11F270CF5F30F004975AA /* Notifier.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59DC6DF0353DF5E01AEEDB1 /* Notifier.nib */; };
 		E1B11F280CF5F30F004975AA /* Application icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = F59DC6E30353ED1201AEEDB1 /* Application icon.icns */; };
@@ -75,5 +76,4 @@
 		E1B11F660CF5F30F004975AA /* PSError.m in Sources */ = {isa = PBXBuildFile; fileRef = E1ECA00703C002B300F54C66 /* PSError.m */; };
 		E1B11F670CF5F30F004975AA /* NJRCenteringMovieView.m in Sources */ = {isa = PBXBuildFile; fileRef = E1D358BA03C60CE900C8A18E /* NJRCenteringMovieView.m */; };
-		E1B11F680CF5F30F004975AA /* SUSpeaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E1E9A33903C8EF6700050002 /* SUSpeaker.m */; };
 		E1B11F690CF5F30F004975AA /* PSTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E1BF6E9103C928D200050002 /* PSTimer.m */; };
 		E1B11F6A0CF5F30F004975AA /* PSWakeAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = E19FD39F03C98645001509F3 /* PSWakeAlert.m */; };
@@ -108,5 +108,5 @@
 
 /* Begin PBXCopyFilesBuildPhase section */
-		E17562730CF8C55D00FC5057 /* CopyFiles */ = {
+		E17562730CF8C55D00FC5057 /* Copy Sparkle.framework */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -114,9 +114,10 @@
 			dstSubfolderSpec = 10;
 			files = (
-				E17562720CF8C53F00FC5057 /* Sparkle.framework in CopyFiles */,
-			);
+				E17562720CF8C53F00FC5057 /* Sparkle.framework in Copy Sparkle.framework */,
+			);
+			name = "Copy Sparkle.framework";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		E17CA9A80CF7F89900018B34 /* CopyFiles */ = {
+		E17CA9A80CF7F89900018B34 /* Copy Perl Modules */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -124,6 +125,7 @@
 			dstSubfolderSpec = 7;
 			files = (
-				E17CA9AB0CF7F8CB00018B34 /* Manip.pm in CopyFiles */,
-			);
+				E17CA9AB0CF7F8CB00018B34 /* Manip.pm in Copy Perl Modules */,
+			);
+			name = "Copy Perl Modules";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -160,4 +162,6 @@
 		E14DEC820438969400050002 /* NJRHotKeyFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NJRHotKeyFieldCell.h; sourceTree = "<group>"; };
 		E14DEC830438969400050002 /* NJRHotKeyFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NJRHotKeyFieldCell.m; sourceTree = "<group>"; };
+		E15044650CFCDC7E00DE47E9 /* NJRValidatingField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NJRValidatingField.h; sourceTree = "<group>"; };
+		E15044660CFCDC7E00DE47E9 /* NJRValidatingField.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = NJRValidatingField.m; sourceTree = "<group>"; };
 		E162698303B6189000000028 /* NSTableView-NJRExtensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = "NSTableView-NJRExtensions.m"; sourceTree = "<group>"; };
 		E162698403B6189000000028 /* NSTableView-NJRExtensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "NSTableView-NJRExtensions.h"; sourceTree = "<group>"; };
@@ -221,6 +225,4 @@
 		E1DEF116040014EB00050002 /* PSTimeDateEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSTimeDateEditor.h; sourceTree = "<group>"; };
 		E1DEF117040014EB00050002 /* PSTimeDateEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSTimeDateEditor.m; sourceTree = "<group>"; };
-		E1E9A33903C8EF6700050002 /* SUSpeaker.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SUSpeaker.m; sourceTree = "<group>"; };
-		E1E9A33A03C8EF6700050002 /* SUSpeaker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SUSpeaker.h; sourceTree = "<group>"; };
 		E1ECA00603C002B300F54C66 /* PSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSError.h; sourceTree = SOURCE_ROOT; };
 		E1ECA00703C002B300F54C66 /* PSError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSError.m; sourceTree = SOURCE_ROOT; };
@@ -395,7 +397,7 @@
 			isa = PBXGroup;
 			children = (
-				F5243DA40378681101AEEDB1 /* Popup triangle.tiff */,
 				E18830410442B5FC00050002 /* Calendar icons */,
 				E18830420442B60000050002 /* Volume icons */,
+				F5243DA40378681101AEEDB1 /* Popup triangle.tiff */,
 				29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
 				F560E2EE03574F8A01A4E466 /* Alarms.nib */,
@@ -526,13 +528,4 @@
 			);
 			name = Documentation;
-			sourceTree = "<group>";
-		};
-		E1E9A33D03C8EF6800050002 /* SpeechUtilities */ = {
-			isa = PBXGroup;
-			children = (
-				E1E9A33903C8EF6700050002 /* SUSpeaker.m */,
-				E1E9A33A03C8EF6700050002 /* SUSpeaker.h */,
-			);
-			name = SpeechUtilities;
 			sourceTree = "<group>";
 		};
@@ -582,5 +575,4 @@
 			isa = PBXGroup;
 			children = (
-				E1E9A33D03C8EF6800050002 /* SpeechUtilities */,
 				F59E47A6036AA5FC016B311C /* BDAlias */,
 				E1DEF116040014EB00050002 /* PSTimeDateEditor.h */,
@@ -633,4 +625,6 @@
 				F5F240CD036A877301FE7503 /* NJRQTMediaPopUpButton.h */,
 				F5F240CC036A877301FE7503 /* NJRQTMediaPopUpButton.m */,
+				E15044650CFCDC7E00DE47E9 /* NJRValidatingField.h */,
+				E15044660CFCDC7E00DE47E9 /* NJRValidatingField.m */,
 				F5F19871036B822E01EB0372 /* NJRVoicePopUpButton.h */,
 				F5F19870036B822E01EB0372 /* NJRVoicePopUpButton.m */,
@@ -685,7 +679,6 @@
 				E1B11F7E0CF5F30F004975AA /* Frameworks */,
 				E1B11F260CF5F30F004975AA /* Resources */,
-				E17CA9A80CF7F89900018B34 /* CopyFiles */,
-				E17562730CF8C55D00FC5057 /* CopyFiles */,
-				E1B11F860CF5F30F004975AA /* ShellScript */,
+				E17CA9A80CF7F89900018B34 /* Copy Perl Modules */,
+				E17562730CF8C55D00FC5057 /* Copy Sparkle.framework */,
 			);
 			buildRules = (
@@ -749,16 +742,4 @@
 		};
 /* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
-		E1B11F860CF5F30F004975AA /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "/usr/bin/agvtool mvers -terse1 >| ${SRCROOT}/VERSION";
-		};
-/* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -806,5 +787,4 @@
 				E1B11F660CF5F30F004975AA /* PSError.m in Sources */,
 				E1B11F670CF5F30F004975AA /* NJRCenteringMovieView.m in Sources */,
-				E1B11F680CF5F30F004975AA /* SUSpeaker.m in Sources */,
 				E1B11F690CF5F30F004975AA /* PSTimer.m in Sources */,
 				E1B11F6A0CF5F30F004975AA /* PSWakeAlert.m in Sources */,
@@ -830,4 +810,5 @@
 				E1B121970CF62FD1004975AA /* NSMenuItem-NJRExtensions.m in Sources */,
 				E1B1219E0CF63858004975AA /* NSImage-NJRExtensions.m in Sources */,
+				E15044670CFCDC7E00DE47E9 /* NJRValidatingField.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -966,5 +947,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 21;
+				CURRENT_PROJECT_VERSION = 22;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
@@ -1004,5 +985,5 @@
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 21;
+				CURRENT_PROJECT_VERSION = 22;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
