diff --git a/Classes/GTAxe.h b/Classes/GTAxe.h
deleted file mode 100644
index f4b5f02..0000000
--- a/Classes/GTAxe.h
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// Copyright 2018 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-/**
- *  Umbrella header for public GTX APIs.
- */
-#import <UIKit/UIKit.h>
-
-//! Project version number for GTAxe.
-FOUNDATION_EXPORT double GTAxeVersionNumber;
-
-//! Project version string for GTAxe.
-FOUNDATION_EXPORT const unsigned char GTAxeVersionString[];
-
-#import <GTAxe/GTXAccessibilityTree.h>
-#import <GTAxe/GTXAnalytics.h>
-#import <GTAxe/GTXAnalyticsUtils.h>
-#import <GTAxe/GTXAssertions.h>
-#import <GTAxe/GTXAxeCore.h>
-#import <GTAxe/GTXCheckBlock.h>
-#import <GTAxe/GTXChecksCollection.h>
-#import <GTAxe/GTXCommon.h>
-#import <GTAxe/GTXElementBlacklist.h>
-#import <GTAxe/GTXErrorReporter.h>
-#import <GTAxe/GTXImageRGBAData.h>
-#import <GTAxe/GTXImageAndColorUtils.h>
-#import <GTAxe/GTXLogging.h>
-#import <GTAxe/GTXPluginXCTestCase.h>
-#import <GTAxe/GTXToolKit.h>
-#import <GTAxe/GTXTestSuite.h>
-#import <GTAxe/NSError+GTXAdditions.h>
diff --git a/Classes/GTXAnalytics.h b/Classes/GTXAnalytics.h
index 76a683d..8732834 100644
--- a/Classes/GTXAnalytics.h
+++ b/Classes/GTXAnalytics.h
@@ -23,16 +23,16 @@
 
 
 /**
- Enum of all possible analytics events handleed by GTAxe.
+ Enum of all possible analytics events handleed by GTXiLib.
  */
 typedef NS_ENUM(NSUInteger, GTXAnalyticsEvent) {
   /**
-   Enum for GTAxe checks being invoked.
+   Enum for GTXiLib checks being invoked.
    */
   GTXAnalyticsEventChecksPerformed,
 
   /**
-   Enum for GTAxe checks failure detection.
+   Enum for GTXiLib checks failure detection.
    */
   GTXAnalyticsEventChecksFailed,
 };
@@ -47,7 +47,7 @@
 
 
 /**
- Class that handles all analytics in GTAxe.
+ Class that handles all analytics in GTXiLib.
  */
 @interface GTXAnalytics : NSObject
 
diff --git a/Classes/GTXAnalytics.m b/Classes/GTXAnalytics.m
index 28972bf..00cf525 100644
--- a/Classes/GTXAnalytics.m
+++ b/Classes/GTXAnalytics.m
@@ -29,7 +29,7 @@
 static GTXAnalyticsHandlerBlock gHandler;
 
 /**
- The Analytics tracking ID that receives GTAxe usage data.
+ The Analytics tracking ID that receives GTXiLib usage data.
  */
 static NSString *const kGTXAnalyticsTrackingID = @"UA-113761703-1";
 
@@ -42,7 +42,7 @@
     GTX_ASSERT(gEnabled, @"Invoking default handler when analytics is enabled!");
     [GTXAnalyticsUtils sendEventHitWithTrackingID:kGTXAnalyticsTrackingID
                                          clientID:[GTXAnalyticsUtils clientID]
-                                         category:@"GTAxeLib"
+                                         category:@"GTXiLibLib"
                                            action:[self _NSStringFromAnalyticsEvent:event]
                                             value:@"1"];
   };
diff --git a/Classes/GTXAnalyticsUtils.h b/Classes/GTXAnalyticsUtils.h
index 878468e..864318a 100644
--- a/Classes/GTXAnalyticsUtils.h
+++ b/Classes/GTXAnalyticsUtils.h
@@ -19,7 +19,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 /**
- Class that provides analytics utils for GTAxe analytics.
+ Class that provides analytics utils for GTXiLib analytics.
  */
 @interface GTXAnalyticsUtils : NSObject
 
diff --git a/Classes/GTXAnalyticsUtils.m b/Classes/GTXAnalyticsUtils.m
index 93deea0..cb16b33 100644
--- a/Classes/GTXAnalyticsUtils.m
+++ b/Classes/GTXAnalyticsUtils.m
@@ -20,7 +20,7 @@
 #import <CommonCrypto/CommonDigest.h>
 
 /**
- The endpoint that receives GTAxe usage data.
+ The endpoint that receives GTXiLib usage data.
  */
 static NSString *const kGTXTrackingEndPoint = @"https://ssl.google-analytics.com/collect";
 
@@ -29,7 +29,7 @@
 @implementation GTXAnalyticsUtils
 
 /**
- @return The clientID to be used by GTAxe analytics, this is a hash of App's bundle ID.
+ @return The clientID to be used by GTXiLib analytics, this is a hash of App's bundle ID.
  */
 + (NSString *)clientID {
   static NSString *clientID;
diff --git a/Classes/GTXPluginXCTestCase.m b/Classes/GTXPluginXCTestCase.m
index e5425cb..a0b25bf 100644
--- a/Classes/GTXPluginXCTestCase.m
+++ b/Classes/GTXPluginXCTestCase.m
@@ -16,7 +16,7 @@
 
 #import "GTXPluginXCTestCase.h"
 
-#import "GTXAxeCore.h"
+#import "GTXiLibCore.h"
 #import "GTXAssertions.h"
 
 #import <objc/runtime.h>
diff --git a/Classes/GTXToolKit.h b/Classes/GTXToolKit.h
index ca799f2..6f20081 100644
--- a/Classes/GTXToolKit.h
+++ b/Classes/GTXToolKit.h
@@ -22,7 +22,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 /**
- GTXToolKit can be used for custom implementation of a checking mechanism, @class GTAxe uses
+ GTXToolKit can be used for custom implementation of a checking mechanism, @class GTXiLib uses
  GTXToolKit for performing the checks.
  */
 @interface GTXToolKit : NSObject
diff --git a/Classes/GTXiLib.h b/Classes/GTXiLib.h
new file mode 100644
index 0000000..4a84dee
--- /dev/null
+++ b/Classes/GTXiLib.h
@@ -0,0 +1,44 @@
+//
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ *  Umbrella header for public GTX APIs.
+ */
+#import <UIKit/UIKit.h>
+
+//! Project version number for GTXiLib.
+FOUNDATION_EXPORT double GTXiLibVersionNumber;
+
+//! Project version string for GTXiLib.
+FOUNDATION_EXPORT const unsigned char GTXiLibVersionString[];
+
+#import <GTXiLib/GTXAccessibilityTree.h>
+#import <GTXiLib/GTXAnalytics.h>
+#import <GTXiLib/GTXAnalyticsUtils.h>
+#import <GTXiLib/GTXAssertions.h>
+#import <GTXiLib/GTXiLibCore.h>
+#import <GTXiLib/GTXCheckBlock.h>
+#import <GTXiLib/GTXChecksCollection.h>
+#import <GTXiLib/GTXCommon.h>
+#import <GTXiLib/GTXElementBlacklist.h>
+#import <GTXiLib/GTXErrorReporter.h>
+#import <GTXiLib/GTXImageRGBAData.h>
+#import <GTXiLib/GTXImageAndColorUtils.h>
+#import <GTXiLib/GTXLogging.h>
+#import <GTXiLib/GTXPluginXCTestCase.h>
+#import <GTXiLib/GTXToolKit.h>
+#import <GTXiLib/GTXTestSuite.h>
+#import <GTXiLib/NSError+GTXAdditions.h>
diff --git a/Classes/GTXAxeCore.h b/Classes/GTXiLibCore.h
similarity index 93%
rename from Classes/GTXAxeCore.h
rename to Classes/GTXiLibCore.h
index 50a6753..56ea83b 100644
--- a/Classes/GTXAxeCore.h
+++ b/Classes/GTXiLibCore.h
@@ -60,14 +60,14 @@
 extern NSString *const gtxTestInvocationUserInfoKey;
 
 /**
- *  Block type for GTAxe failure handlers, this is invoked with the error detected.
+ *  Block type for GTXiLib failure handlers, this is invoked with the error detected.
  */
-typedef void(^GTAxeFailureHandler)(NSError *error);
+typedef void(^GTXiLibFailureHandler)(NSError *error);
 
 /**
  *  Primary class that allows for installing checks, creating checks and blacklists etc.
  */
-@interface GTAxe : NSObject
+@interface GTXiLib : NSObject
 
 /**
  Install checks on all test cases of a given test suite.
@@ -112,7 +112,7 @@
  The failure handler to be invoked when checks fail, by default if checks fail an Assertion is
  raised.
  */
-@property (class, nonatomic, strong) GTAxeFailureHandler failureHandler;
+@property (class, nonatomic, strong) GTXiLibFailureHandler failureHandler;
 
 @end
 
diff --git a/Classes/GTXAxeCore.m b/Classes/GTXiLibCore.m
similarity index 95%
rename from Classes/GTXAxeCore.m
rename to Classes/GTXiLibCore.m
index 56c16cd..763ac29 100644
--- a/Classes/GTXAxeCore.m
+++ b/Classes/GTXiLibCore.m
@@ -14,7 +14,7 @@
 // limitations under the License.
 //
 
-#import "GTXAxeCore.h"
+#import "GTXiLibCore.h"
 
 #import "GTXToolKit.h"
 #import "GTXAssertions.h"
@@ -45,7 +45,7 @@
 @end
 
 /**
- The GTXToolKit instance used to handle accessibility checking in GTAxe class.
+ The GTXToolKit instance used to handle accessibility checking in GTXiLib class.
  */
 static GTXToolKit *gToolkit;
 
@@ -55,29 +55,29 @@
 static NSMutableArray *gIntsallOptions;
 
 /**
- The pointer to current options being used by GTAxe.
+ The pointer to current options being used by GTXiLib.
  */
 static GTXInstallOptions *gCurrentOptions;
 
 /**
  The failure handler block.
  */
-static GTAxeFailureHandler gFailureHandler;
+static GTXiLibFailureHandler gFailureHandler;
 
 /**
- Boolean that indicates if GTAxe has detected an on-going interaction.
+ Boolean that indicates if GTXiLib has detected an on-going interaction.
  */
 static BOOL gIsInInteraction;
 
 /**
- Boolean that indicates if GTAxe has detected a test case tearDown.
+ Boolean that indicates if GTXiLib has detected a test case tearDown.
  */
 static BOOL gIsInTearDown;
 
 
 #pragma mark - Implementation
 
-@implementation GTAxe
+@implementation GTXiLib
 
 + (void)installOnTestSuite:(GTXTestSuite *)suite
                     checks:(NSArray<id<GTXChecking>> *)checks
@@ -122,11 +122,11 @@
   });
 }
 
-+ (void)setFailureHandler:(GTAxeFailureHandler)handler {
++ (void)setFailureHandler:(GTXiLibFailureHandler)handler {
   gFailureHandler = handler;
 }
 
-+ (GTAxeFailureHandler)failureHandler {
++ (GTXiLibFailureHandler)failureHandler {
   return gFailureHandler ?: ^(NSError *error) {
     NSString *formattedError =
         [NSString stringWithFormat:@"\n\n%@\n\n",
diff --git a/FrameworkFiles/Info.plist b/FrameworkFiles/Info.plist
index c4c0fdd..1007fd9 100644
--- a/FrameworkFiles/Info.plist
+++ b/FrameworkFiles/Info.plist
@@ -2,23 +2,23 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-  <key>CFBundleDevelopmentRegion</key>
-  <string>$(DEVELOPMENT_LANGUAGE)</string>
-  <key>CFBundleExecutable</key>
-  <string>$(EXECUTABLE_NAME)</string>
-  <key>CFBundleIdentifier</key>
-  <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-  <key>CFBundleInfoDictionaryVersion</key>
-  <string>6.0</string>
-  <key>CFBundleName</key>
-  <string>$(PRODUCT_NAME)</string>
-  <key>CFBundlePackageType</key>
-  <string>FMWK</string>
-  <key>CFBundleShortVersionString</key>
-  <string>1.0</string>
-  <key>CFBundleVersion</key>
-  <string>$(CURRENT_PROJECT_VERSION)</string>
-  <key>NSPrincipalClass</key>
-  <string></string>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
 </dict>
 </plist>
diff --git a/GTAxe.xcodeproj/project.pbxproj b/GTXiLib.xcodeproj/project.pbxproj
similarity index 91%
rename from GTAxe.xcodeproj/project.pbxproj
rename to GTXiLib.xcodeproj/project.pbxproj
index 212385f..33f7a2c 100644
--- a/GTAxe.xcodeproj/project.pbxproj
+++ b/GTXiLib.xcodeproj/project.pbxproj
@@ -9,9 +9,7 @@
 /* Begin PBXBuildFile section */
 		610CA3FD204DFC76008BAAA1 /* GTXPluginXCTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = 610CA3FB204DFC76008BAAA1 /* GTXPluginXCTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		610CA3FE204DFC76008BAAA1 /* GTXPluginXCTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 610CA3FC204DFC76008BAAA1 /* GTXPluginXCTestCase.m */; };
-		610CA405204E04AC008BAAA1 /* GTXAxeCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 610CA403204E04AB008BAAA1 /* GTXAxeCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		610CA406204E04AC008BAAA1 /* GTXAxeCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 610CA404204E04AB008BAAA1 /* GTXAxeCore.m */; };
-		6115E78B204F5BA3003E32F9 /* GTAxe.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 613C3F41204A09E8007D44A8 /* GTAxe.framework */; };
+		6115E78B204F5BA3003E32F9 /* GTXiLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 613C3F41204A09E8007D44A8 /* GTXiLib.framework */; };
 		6115E79B204F5BC9003E32F9 /* GTXToolKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E791204F5BC6003E32F9 /* GTXToolKitTests.m */; };
 		6115E79C204F5BC9003E32F9 /* GTXTestSuiteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E792204F5BC6003E32F9 /* GTXTestSuiteTests.m */; };
 		6115E79D204F5BC9003E32F9 /* GTXChecksCollectionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E793204F5BC7003E32F9 /* GTXChecksCollectionTests.m */; };
@@ -20,6 +18,9 @@
 		6115E7A0204F5BC9003E32F9 /* GTXTestAccessibilityElements.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E798204F5BC8003E32F9 /* GTXTestAccessibilityElements.m */; };
 		6115E7A1204F5BC9003E32F9 /* GTXImageAndColorUtilsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E799204F5BC8003E32F9 /* GTXImageAndColorUtilsTests.m */; };
 		6115E7A2204F5BC9003E32F9 /* GTXBaseTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 6115E79A204F5BC9003E32F9 /* GTXBaseTestCase.m */; };
+		61A0C4DE2061896300DF0169 /* GTXiLibCore.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A0C4DB2061896300DF0169 /* GTXiLibCore.m */; };
+		61A0C4DF2061896300DF0169 /* GTXiLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 61A0C4DC2061896300DF0169 /* GTXiLib.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		61A0C4E02061896300DF0169 /* GTXiLibCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 61A0C4DD2061896300DF0169 /* GTXiLibCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		61ABAEB0204A0B0B006DBF0A /* GTXAnalyticsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAE8E204A0B02006DBF0A /* GTXAnalyticsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		61ABAEB1204A0B0B006DBF0A /* GTXAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAE8F204A0B02006DBF0A /* GTXAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		61ABAEB2204A0B0B006DBF0A /* GTXErrorReporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAE90204A0B02006DBF0A /* GTXErrorReporter.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -49,7 +50,6 @@
 		61ABAECC204A0B0B006DBF0A /* GTXErrorReporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 61ABAEAA204A0B09006DBF0A /* GTXErrorReporter.m */; };
 		61ABAECD204A0B0B006DBF0A /* GTXToolKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAEAB204A0B09006DBF0A /* GTXToolKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		61ABAECE204A0B0B006DBF0A /* GTXImageRGBAData.m in Sources */ = {isa = PBXBuildFile; fileRef = 61ABAEAC204A0B0A006DBF0A /* GTXImageRGBAData.m */; };
-		61ABAECF204A0B0B006DBF0A /* GTAxe.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAEAD204A0B0A006DBF0A /* GTAxe.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		61ABAED1204A0B0B006DBF0A /* GTXElementBlacklist.h in Headers */ = {isa = PBXBuildFile; fileRef = 61ABAEAF204A0B0A006DBF0A /* GTXElementBlacklist.h */; settings = {ATTRIBUTES = (Public, ); }; };
 /* End PBXBuildFile section */
 
@@ -66,9 +66,7 @@
 /* Begin PBXFileReference section */
 		610CA3FB204DFC76008BAAA1 /* GTXPluginXCTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXPluginXCTestCase.h; path = Classes/GTXPluginXCTestCase.h; sourceTree = SOURCE_ROOT; };
 		610CA3FC204DFC76008BAAA1 /* GTXPluginXCTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXPluginXCTestCase.m; path = Classes/GTXPluginXCTestCase.m; sourceTree = SOURCE_ROOT; };
-		610CA403204E04AB008BAAA1 /* GTXAxeCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXAxeCore.h; path = Classes/GTXAxeCore.h; sourceTree = SOURCE_ROOT; };
-		610CA404204E04AB008BAAA1 /* GTXAxeCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXAxeCore.m; path = Classes/GTXAxeCore.m; sourceTree = SOURCE_ROOT; };
-		6115E786204F5BA2003E32F9 /* GTAxeUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GTAxeUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		6115E786204F5BA2003E32F9 /* GTXiUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GTXiUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		6115E791204F5BC6003E32F9 /* GTXToolKitTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXToolKitTests.m; path = Tests/UnitTests/GTXToolKitTests.m; sourceTree = SOURCE_ROOT; };
 		6115E792204F5BC6003E32F9 /* GTXTestSuiteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXTestSuiteTests.m; path = Tests/UnitTests/GTXTestSuiteTests.m; sourceTree = SOURCE_ROOT; };
 		6115E793204F5BC7003E32F9 /* GTXChecksCollectionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXChecksCollectionTests.m; path = Tests/UnitTests/GTXChecksCollectionTests.m; sourceTree = SOURCE_ROOT; };
@@ -79,7 +77,10 @@
 		6115E798204F5BC8003E32F9 /* GTXTestAccessibilityElements.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXTestAccessibilityElements.m; path = Tests/UnitTests/GTXTestAccessibilityElements.m; sourceTree = SOURCE_ROOT; };
 		6115E799204F5BC8003E32F9 /* GTXImageAndColorUtilsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXImageAndColorUtilsTests.m; path = Tests/UnitTests/GTXImageAndColorUtilsTests.m; sourceTree = SOURCE_ROOT; };
 		6115E79A204F5BC9003E32F9 /* GTXBaseTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXBaseTestCase.m; path = Tests/UnitTests/GTXBaseTestCase.m; sourceTree = SOURCE_ROOT; };
-		613C3F41204A09E8007D44A8 /* GTAxe.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GTAxe.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		613C3F41204A09E8007D44A8 /* GTXiLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = GTXiLib.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		61A0C4DB2061896300DF0169 /* GTXiLibCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXiLibCore.m; path = Classes/GTXiLibCore.m; sourceTree = SOURCE_ROOT; };
+		61A0C4DC2061896300DF0169 /* GTXiLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXiLib.h; path = Classes/GTXiLib.h; sourceTree = SOURCE_ROOT; };
+		61A0C4DD2061896300DF0169 /* GTXiLibCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXiLibCore.h; path = Classes/GTXiLibCore.h; sourceTree = SOURCE_ROOT; };
 		61ABAE8A204A0AA3006DBF0A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = FrameworkFiles/Info.plist; sourceTree = SOURCE_ROOT; };
 		61ABAE8E204A0B02006DBF0A /* GTXAnalyticsUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXAnalyticsUtils.h; path = Classes/GTXAnalyticsUtils.h; sourceTree = SOURCE_ROOT; };
 		61ABAE8F204A0B02006DBF0A /* GTXAnalytics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXAnalytics.h; path = Classes/GTXAnalytics.h; sourceTree = SOURCE_ROOT; };
@@ -110,7 +111,6 @@
 		61ABAEAA204A0B09006DBF0A /* GTXErrorReporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXErrorReporter.m; path = Classes/GTXErrorReporter.m; sourceTree = SOURCE_ROOT; };
 		61ABAEAB204A0B09006DBF0A /* GTXToolKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXToolKit.h; path = Classes/GTXToolKit.h; sourceTree = SOURCE_ROOT; };
 		61ABAEAC204A0B0A006DBF0A /* GTXImageRGBAData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GTXImageRGBAData.m; path = Classes/GTXImageRGBAData.m; sourceTree = SOURCE_ROOT; };
-		61ABAEAD204A0B0A006DBF0A /* GTAxe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTAxe.h; path = Classes/GTAxe.h; sourceTree = SOURCE_ROOT; };
 		61ABAEAF204A0B0A006DBF0A /* GTXElementBlacklist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTXElementBlacklist.h; path = Classes/GTXElementBlacklist.h; sourceTree = SOURCE_ROOT; };
 		61B7F4A2204A15D30062DF65 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
 /* End PBXFileReference section */
@@ -120,7 +120,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				6115E78B204F5BA3003E32F9 /* GTAxe.framework in Frameworks */,
+				6115E78B204F5BA3003E32F9 /* GTXiLib.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -137,8 +137,8 @@
 		613C3F37204A09E7007D44A8 = {
 			isa = PBXGroup;
 			children = (
-				613C3F43204A09E8007D44A8 /* GTAxe */,
-				61BC5526204E2736004D2FB9 /* GTAxeUnitTests */,
+				613C3F43204A09E8007D44A8 /* GTXiLib */,
+				61BC5526204E2736004D2FB9 /* GTXiUnitTests */,
 				613C3F42204A09E8007D44A8 /* Products */,
 				61B7F4A1204A15D30062DF65 /* Frameworks */,
 			);
@@ -147,27 +147,27 @@
 		613C3F42204A09E8007D44A8 /* Products */ = {
 			isa = PBXGroup;
 			children = (
-				613C3F41204A09E8007D44A8 /* GTAxe.framework */,
-				6115E786204F5BA2003E32F9 /* GTAxeUnitTests.xctest */,
+				613C3F41204A09E8007D44A8 /* GTXiLib.framework */,
+				6115E786204F5BA2003E32F9 /* GTXiUnitTests.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
-		613C3F43204A09E8007D44A8 /* GTAxe */ = {
+		613C3F43204A09E8007D44A8 /* GTXiLib */ = {
 			isa = PBXGroup;
 			children = (
 				61ABAE8D204A0AF1006DBF0A /* Classes */,
 				61ABAE8A204A0AA3006DBF0A /* Info.plist */,
 			);
-			path = GTAxe;
+			path = GTXiLib;
 			sourceTree = "<group>";
 		};
 		61ABAE8D204A0AF1006DBF0A /* Classes */ = {
 			isa = PBXGroup;
 			children = (
-				61ABAEAD204A0B0A006DBF0A /* GTAxe.h */,
-				610CA403204E04AB008BAAA1 /* GTXAxeCore.h */,
-				610CA404204E04AB008BAAA1 /* GTXAxeCore.m */,
+				61A0C4DC2061896300DF0169 /* GTXiLib.h */,
+				61A0C4DD2061896300DF0169 /* GTXiLibCore.h */,
+				61A0C4DB2061896300DF0169 /* GTXiLibCore.m */,
 				61ABAE93204A0B03006DBF0A /* GTXAccessibilityTree.h */,
 				61ABAE9A204A0B04006DBF0A /* GTXAccessibilityTree.m */,
 				61ABAE8F204A0B02006DBF0A /* GTXAnalytics.h */,
@@ -212,7 +212,7 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
-		61BC5526204E2736004D2FB9 /* GTAxeUnitTests */ = {
+		61BC5526204E2736004D2FB9 /* GTXiUnitTests */ = {
 			isa = PBXGroup;
 			children = (
 				6115E794204F5BC7003E32F9 /* GTXAccessibilityTreeTests.m */,
@@ -226,7 +226,7 @@
 				6115E792204F5BC6003E32F9 /* GTXTestSuiteTests.m */,
 				6115E791204F5BC6003E32F9 /* GTXToolKitTests.m */,
 			);
-			path = GTAxeUnitTests;
+			path = GTXiUnitTests;
 			sourceTree = "<group>";
 		};
 /* End PBXGroup section */
@@ -236,12 +236,10 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				610CA405204E04AC008BAAA1 /* GTXAxeCore.h in Headers */,
 				61ABAEB5204A0B0B006DBF0A /* GTXAccessibilityTree.h in Headers */,
 				61ABAED1204A0B0B006DBF0A /* GTXElementBlacklist.h in Headers */,
 				61ABAECD204A0B0B006DBF0A /* GTXToolKit.h in Headers */,
 				61ABAEC8204A0B0B006DBF0A /* NSError+GTXAdditions.h in Headers */,
-				61ABAECF204A0B0B006DBF0A /* GTAxe.h in Headers */,
 				61ABAEC4204A0B0B006DBF0A /* GTXImageAndColorUtils.h in Headers */,
 				61ABAEB6204A0B0B006DBF0A /* GTXCommon.h in Headers */,
 				61ABAEBD204A0B0B006DBF0A /* GTXAssertions.h in Headers */,
@@ -252,6 +250,8 @@
 				61ABAEB2204A0B0B006DBF0A /* GTXErrorReporter.h in Headers */,
 				61ABAEC3204A0B0B006DBF0A /* GTXTestCase.h in Headers */,
 				61ABAEB1204A0B0B006DBF0A /* GTXAnalytics.h in Headers */,
+				61A0C4E02061896300DF0169 /* GTXiLibCore.h in Headers */,
+				61A0C4DF2061896300DF0169 /* GTXiLib.h in Headers */,
 				61ABAECA204A0B0B006DBF0A /* GTXChecksCollection.h in Headers */,
 				61ABAEC1204A0B0B006DBF0A /* GTXTestSuite.h in Headers */,
 				61ABAEB7204A0B0B006DBF0A /* GTXLogging.h in Headers */,
@@ -262,9 +262,9 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
-		6115E785204F5BA2003E32F9 /* GTAxeUnitTests */ = {
+		6115E785204F5BA2003E32F9 /* GTXiUnitTests */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = 6115E78E204F5BA3003E32F9 /* Build configuration list for PBXNativeTarget "GTAxeUnitTests" */;
+			buildConfigurationList = 6115E78E204F5BA3003E32F9 /* Build configuration list for PBXNativeTarget "GTXiUnitTests" */;
 			buildPhases = (
 				6115E782204F5BA2003E32F9 /* Sources */,
 				6115E783204F5BA2003E32F9 /* Frameworks */,
@@ -275,14 +275,14 @@
 			dependencies = (
 				6115E78D204F5BA3003E32F9 /* PBXTargetDependency */,
 			);
-			name = GTAxeUnitTests;
+			name = GTXiUnitTests;
 			productName = GTAxeUnitTests;
-			productReference = 6115E786204F5BA2003E32F9 /* GTAxeUnitTests.xctest */;
+			productReference = 6115E786204F5BA2003E32F9 /* GTXiUnitTests.xctest */;
 			productType = "com.apple.product-type.bundle.unit-test";
 		};
-		613C3F40204A09E7007D44A8 /* GTAxe */ = {
+		613C3F40204A09E7007D44A8 /* GTXiLib */ = {
 			isa = PBXNativeTarget;
-			buildConfigurationList = 613C3F49204A09E8007D44A8 /* Build configuration list for PBXNativeTarget "GTAxe" */;
+			buildConfigurationList = 613C3F49204A09E8007D44A8 /* Build configuration list for PBXNativeTarget "GTXiLib" */;
 			buildPhases = (
 				613C3F3C204A09E7007D44A8 /* Sources */,
 				613C3F3D204A09E7007D44A8 /* Frameworks */,
@@ -293,9 +293,9 @@
 			);
 			dependencies = (
 			);
-			name = GTAxe;
+			name = GTXiLib;
 			productName = GTAxe;
-			productReference = 613C3F41204A09E8007D44A8 /* GTAxe.framework */;
+			productReference = 613C3F41204A09E8007D44A8 /* GTXiLib.framework */;
 			productType = "com.apple.product-type.framework";
 		};
 /* End PBXNativeTarget section */
@@ -317,7 +317,7 @@
 					};
 				};
 			};
-			buildConfigurationList = 613C3F3B204A09E7007D44A8 /* Build configuration list for PBXProject "GTAxe" */;
+			buildConfigurationList = 613C3F3B204A09E7007D44A8 /* Build configuration list for PBXProject "GTXiLib" */;
 			compatibilityVersion = "Xcode 8.0";
 			developmentRegion = en;
 			hasScannedForEncodings = 0;
@@ -329,8 +329,8 @@
 			projectDirPath = "";
 			projectRoot = "";
 			targets = (
-				613C3F40204A09E7007D44A8 /* GTAxe */,
-				6115E785204F5BA2003E32F9 /* GTAxeUnitTests */,
+				613C3F40204A09E7007D44A8 /* GTXiLib */,
+				6115E785204F5BA2003E32F9 /* GTXiUnitTests */,
 			);
 		};
 /* End PBXProject section */
@@ -382,11 +382,11 @@
 				610CA3FE204DFC76008BAAA1 /* GTXPluginXCTestCase.m in Sources */,
 				61ABAEB8204A0B0B006DBF0A /* GTXAnalyticsUtils.m in Sources */,
 				61ABAEBF204A0B0B006DBF0A /* NSError+GTXAdditions.m in Sources */,
-				610CA406204E04AC008BAAA1 /* GTXAxeCore.m in Sources */,
 				61ABAEBC204A0B0B006DBF0A /* GTXAccessibilityTree.m in Sources */,
 				61ABAEC0204A0B0B006DBF0A /* GTXCheckBlock.m in Sources */,
 				61ABAEBB204A0B0B006DBF0A /* GTXTestCase.m in Sources */,
 				61ABAECE204A0B0B006DBF0A /* GTXImageRGBAData.m in Sources */,
+				61A0C4DE2061896300DF0169 /* GTXiLibCore.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -395,7 +395,7 @@
 /* Begin PBXTargetDependency section */
 		6115E78D204F5BA3003E32F9 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = 613C3F40204A09E7007D44A8 /* GTAxe */;
+			target = 613C3F40204A09E7007D44A8 /* GTXiLib */;
 			targetProxy = 6115E78C204F5BA3003E32F9 /* PBXContainerItemProxy */;
 		};
 /* End PBXTargetDependency section */
@@ -547,7 +547,7 @@
 				INFOPLIST_FILE = FrameworkFiles/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
-				PRODUCT_BUNDLE_IDENTIFIER = com.test.google.GTAxe;
+				PRODUCT_BUNDLE_IDENTIFIER = com.test.google.GTXi;
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
 				SKIP_INSTALL = YES;
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -566,7 +566,7 @@
 				INFOPLIST_FILE = FrameworkFiles/Info.plist;
 				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
-				PRODUCT_BUNDLE_IDENTIFIER = com.test.google.GTAxe;
+				PRODUCT_BUNDLE_IDENTIFIER = com.test.google.GTXi;
 				PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
 				SKIP_INSTALL = YES;
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -576,7 +576,7 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		6115E78E204F5BA3003E32F9 /* Build configuration list for PBXNativeTarget "GTAxeUnitTests" */ = {
+		6115E78E204F5BA3003E32F9 /* Build configuration list for PBXNativeTarget "GTXiUnitTests" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				6115E78F204F5BA3003E32F9 /* Debug */,
@@ -585,7 +585,7 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		613C3F3B204A09E7007D44A8 /* Build configuration list for PBXProject "GTAxe" */ = {
+		613C3F3B204A09E7007D44A8 /* Build configuration list for PBXProject "GTXiLib" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				613C3F47204A09E8007D44A8 /* Debug */,
@@ -594,7 +594,7 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		613C3F49204A09E8007D44A8 /* Build configuration list for PBXNativeTarget "GTAxe" */ = {
+		613C3F49204A09E8007D44A8 /* Build configuration list for PBXNativeTarget "GTXiLib" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				613C3F4A204A09E8007D44A8 /* Debug */,
diff --git a/README.md b/README.md
index 94ac754..3cf7175 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,18 @@
-## What is GTAxe?
-GTAxe is library of APIs for iOS accessibility testing that can be easily
-embedded into any test framework or tool, for example it has XCTest integration
-and can be used with EarlGrey. GTAxe works by installing "checks" on your
-existing test cases so that before test teardown the checks are evaluated on
-your app to look for accessibility issues such as missing labels.
+## What is GTXiLib?
+GTXiLib (spelled GTX eye lib) is library of APIs for iOS accessibility testing
+that can be easily embedded into any test framework or tool, for example it has
+XCTest integration and can be used with EarlGrey. GTXiLib works by installing
+"checks" on your existing test cases so that before test teardown the checks are
+evaluated on your app to look for accessibility issues such as missing labels.
 
 ## Getting Started
 
-To install GTAxe on all the tests of a specific test class add the following
+To install GTXiLib on all the tests of a specific test class add the following
 snippet of code to it.
 
 ```
-// Include the GTAxe umbrella header.
-#import "GTAxe.h"
+// Include the GTXiLib umbrella header.
+#import <GTXiLib/GTXiLib.h>
 
 + (void)setUp {
   [super setUp];
@@ -20,9 +20,9 @@
   // ... your other setup code (if any) comes here.
 
   // Install GTX on all tests in *this* test class.
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:[GTXChecksCollection allGTXChecks]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:[GTXChecksCollection allGTXChecks]
+            elementBlacklists:@[]];
 }
 ```
 
@@ -33,20 +33,20 @@
 
 ## Incremental Accessibility
 
-GTAxe APIs support a practical solution for improving accessibility of large
+GTXiLib APIs support a practical solution for improving accessibility of large
 projects which may not have included accessibility from the get go - incremental
-accessibility. Adding GTAxe to a project that is already halfway through
+accessibility. Adding GTXiLib to a project that is already halfway through
 development may leads to several test failures and fixing them at once can be
 time consuming and tedious. To solve this problem incrementally:
 
-+ Use above snippet to add GTAxe to all test cases but fix errors in a small
++ Use above snippet to add GTXiLib to all test cases but fix errors in a small
   subset of them.
-  + Blacklist elements that you don't control using GTAxe's blacklist APIs.
+  + Blacklist elements that you don't control using GTXiLib's blacklist APIs.
 + Then use `GTXTestSuite's` `suiteWithClass:andTests:` method to
   create a test suite with only the tests cases that have been fixed and add
-  GTAxe only to that suite.
+  GTXiLib only to that suite.
 
-Once the code is checked into your repo GTAxe will catch any new failures in
+Once the code is checked into your repo GTXiLib will catch any new failures in
 those tests. From this point:
 
 + Every new test being added must be added it to the suite.
@@ -58,22 +58,22 @@
 ensures that new methods added to the class are automatically under
 accessibility checking.
 
-If GTAxe is installed on every test in your project, use
+If GTXiLib is installed on every test in your project, use
 `suiteWithAllTestsFromAllClassesInheritedFromClass:` to automatically add
 accessibility checking to any test case added.
 
 ## Authoring your own checks
 
-GTAxe has APIs that allow for creation of your own accessibility checks (in fact
+GTXiLib has APIs that allow for creation of your own accessibility checks (in fact
 it does not have to be related to accessibility, for example i18n layout checks
-or even memory usage checks). To create new checks use `GTAxe's`
+or even memory usage checks). To create new checks use `GTXiLib's`
 `checkWithName:block:` API and provide a unique name and block that evaluates
 the check and returns YES/NO for success/failure. Add the newly created check
-to the array of checks being passed on to GTAxe via the install API call.
+to the array of checks being passed on to GTXiLib via the install API call.
 
-## Dealing with GTAxe Failures
+## Dealing with GTXiLib Failures
 
-When GTAxe fails it has most likely found an accessibility bug and you must fix
+When GTXiLib fails it has most likely found an accessibility bug and you must fix
 it. But due to various team priorities it may not be possible to do so right
 away in which case you have the following options at your disposal:
 
@@ -81,15 +81,15 @@
   `suiteWithAllTestsInClass:exceptTests:`.
 + Temporarily blacklist the offending element using element blacklist APIs
 
-But if you believe GTAxe has caught a bug that is not an accessibility issue
+But if you believe GTXiLib has caught a bug that is not an accessibility issue
 please let us know by [filing a bug](TODO) or better [fix it](TODO) for
 everyone.
 
 ## Analytics
 
-To prioritize and improve GTAxe, the framework collects usage data and uploads
+To prioritize and improve GTXiLib, the framework collects usage data and uploads
 it to Google Analytics. More specifically, the framework collects the MD5 hash
-of the test app's Bundle ID and pass/fail status of GTAxe checks. This
+of the test app's Bundle ID and pass/fail status of GTXiLib checks. This
 information allows us to measure the volume of usage. For more detailed
 information about our analytics collection, please peruse the `GTXAnalytics.m`
 file which contains the implementation details. If they wish, users can choose
@@ -97,7 +97,7 @@
 test’s `+(void) setUp` method:
 
 ```
-// Disable GTAxe analytics.
+// Disable GTXiLib analytics.
 [GTXAnalytics setEnabled:NO];
 ```
 
diff --git a/Tests/FunctionalTests/TestApp/Sources/GTXTestViewController.h b/Tests/FunctionalTests/TestApp/Sources/GTXTestViewController.h
index 0351f03..8db5588 100644
--- a/Tests/FunctionalTests/TestApp/Sources/GTXTestViewController.h
+++ b/Tests/FunctionalTests/TestApp/Sources/GTXTestViewController.h
@@ -87,7 +87,7 @@
  */
 FOUNDATION_EXTERN NSString *const kAddHighContrastBackground;
 
-// The view controller for testing GTAxe's Accessibility Checker.
+// The view controller for testing GTXiLib's Accessibility Checker.
 @interface GTXTestViewController : UIViewController
 
 
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestAnalyticsBaseTest.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestAnalyticsBaseTest.m
index fbf5ec1..85dfe2e 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestAnalyticsBaseTest.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestAnalyticsBaseTest.m
@@ -25,9 +25,9 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[checkFailsIfFailingClass]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[checkFailsIfFailingClass]
+            elementBlacklists:@[]];
   [GTXTestViewController addElementToTestArea:
       [[GTXTestFailingClass alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.h b/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.h
index cd871a9..fec8e1a 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.h
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.h
@@ -18,7 +18,7 @@
 #import <QuartzCore/QuartzCore.h>
 #import <XCTest/XCTest.h>
 
-#import "GTAxe.h"
+#import "GTXiLib.h"
 #import "GTXTestViewController.h"
 
 /**
@@ -37,7 +37,7 @@
 id<GTXChecking> alwaysPass;
 
 /**
- Base test for all GTAxe functional/integration tests used to setup GTAxe and capture check
+ Base test for all GTXiLib functional/integration tests used to setup GTXiLib and capture check
  failures.
  */
 @interface GTXTestBaseTest : XCTestCase
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.m
index 1675294..d0665a3 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestBaseTest.m
@@ -25,17 +25,17 @@
 + (void)setUp {
   [super setUp];
 
-  checkFailsIfFailingClass = [GTAxe checkWithName:@"checkFailsIfFailingClass"
-                                            block:^BOOL(id element, GTXErrorRefType errorOrNil) {
+  checkFailsIfFailingClass = [GTXiLib checkWithName:@"checkFailsIfFailingClass"
+                                              block:^BOOL(id element, GTXErrorRefType errorOrNil) {
     return ![element isKindOfClass:[GTXTestFailingClass class]];
   }];
 
-  alwaysFail = [GTAxe checkWithName:@"AlwaysFail"
-                              block:^BOOL(id element, GTXErrorRefType errorOrNil) {
+  alwaysFail = [GTXiLib checkWithName:@"AlwaysFail"
+                                block:^BOOL(id element, GTXErrorRefType errorOrNil) {
     return NO;
   }];
-  alwaysPass = [GTAxe checkWithName:@"AlwaysPass"
-                              block:^BOOL(id element, GTXErrorRefType errorOrNil) {
+  alwaysPass = [GTXiLib checkWithName:@"AlwaysPass"
+                                block:^BOOL(id element, GTXErrorRefType errorOrNil) {
     return YES;
   }];
 
@@ -51,7 +51,7 @@
   }
 
   gFailureCount = 0;
-  [GTAxe setFailureHandler:^(NSError * error) {
+  [GTXiLib setFailureHandler:^(NSError * error) {
     gFailureCount += 1;
   }];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestFailingClassFailCheck.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestFailingClassFailCheck.m
index f90476f..246512b 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestFailingClassFailCheck.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestFailingClassFailCheck.m
@@ -23,9 +23,9 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[checkFailsIfFailingClass]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[checkFailsIfFailingClass]
+            elementBlacklists:@[]];
   [GTXTestViewController addElementToTestArea:
       [[GTXTestFailingClass alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanBlacklistTestCases.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanBlacklistTestCases.m
index f571a21..375857c 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanBlacklistTestCases.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanBlacklistTestCases.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxCanBlacklistTestCases : GTXTestBaseTest
 @end
@@ -25,10 +25,10 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithClass:self
-                                                andTests:@selector(testMiddle), nil]
-                     checks:@[alwaysFail]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithClass:self
+                                                  andTests:@selector(testMiddle), nil]
+                       checks:@[alwaysFail]
+            elementBlacklists:@[]];
 }
 
 - (void)tearDown {
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailures.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailures.m
index b96ef47..1ec9b03 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailures.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailures.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxCanDetectFailures : GTXTestBaseTest
 @end
@@ -24,9 +24,9 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[alwaysFail]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[alwaysFail]
+            elementBlacklists:@[]];
 }
 
 - (void)tearDown {
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailuresInInheritedTests.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailuresInInheritedTests.m
index 91e5d1f..eb88ce2 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailuresInInheritedTests.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanDetectFailuresInInheritedTests.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 /**
  A global boolean that is used to ensure that at least one test is run.
@@ -44,9 +44,9 @@
   [super setUp];
   GTXTestSuite *suite = [GTXTestSuite suiteWithAllTestsFromAllClassesInheritedFromClass:
       [GTXTestSuperClassWithATestMethod class]];
-  [GTAxe installOnTestSuite:suite
-                     checks:@[alwaysFail]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:suite
+                       checks:@[alwaysFail]
+            elementBlacklists:@[]];
   gTeardownCalledAtleastOnce = NO;
 }
 
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElements.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElements.m
index 42cdd3b..e3dc768 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElements.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElements.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxCanIgnoreElements : GTXTestBaseTest
 @end
@@ -25,10 +25,10 @@
 + (void)setUp {
   [super setUp];
   NSArray *blacklist =
-      @[[GTAxe blacklistForElementsOfClassNamed:NSStringFromClass([GTXTestFailingClass class])]];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[checkFailsIfFailingClass]
-          elementBlacklists:blacklist];
+      @[[GTXiLib blacklistForElementsOfClassNamed:NSStringFromClass([GTXTestFailingClass class])]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[checkFailsIfFailingClass]
+            elementBlacklists:blacklist];
   [GTXTestViewController addElementToTestArea:
       [[GTXTestFailingClass alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElementsOnSpecificCheck.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElementsOnSpecificCheck.m
index eaf8251..fafe612 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElementsOnSpecificCheck.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanIgnoreElementsOnSpecificCheck.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxCanIgnoreElementsOnSpecificCheck : GTXTestBaseTest
 @end
@@ -25,15 +25,15 @@
 + (void)setUp {
   [super setUp];
   NSArray *blacklist =
-      @[[GTAxe blacklistForElementsOfClassNamed:NSStringFromClass([GTXTestFailingClass class])
-                                  forCheckNamed:checkFailsIfFailingClass.name]];
-  id<GTXChecking> secondFailingCheck = [GTAxe checkWithName:@"secondFailingCheck"
+      @[[GTXiLib blacklistForElementsOfClassNamed:NSStringFromClass([GTXTestFailingClass class])
+                                    forCheckNamed:checkFailsIfFailingClass.name]];
+  id<GTXChecking> secondFailingCheck = [GTXiLib checkWithName:@"secondFailingCheck"
                                             block:^BOOL(id element, GTXErrorRefType errorOrNil) {
     return ![element isKindOfClass:[GTXTestFailingClass class]];
   }];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[checkFailsIfFailingClass, secondFailingCheck]
-          elementBlacklists:blacklist];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[checkFailsIfFailingClass, secondFailingCheck]
+            elementBlacklists:blacklist];
   [GTXTestViewController addElementToTestArea:
       [[GTXTestFailingClass alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanWhitelistTestCases.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanWhitelistTestCases.m
index c2fc4af..f6df136 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanWhitelistTestCases.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxCanWhitelistTestCases.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 static BOOL shouldDetectFailure = NO;
 
@@ -26,10 +26,10 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithClass:self
-                                                andTests:@selector(testMiddle), nil]
-                     checks:@[alwaysFail]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithClass:self
+                                                  andTests:@selector(testMiddle), nil]
+                       checks:@[alwaysFail]
+            elementBlacklists:@[]];
 }
 
 - (void)tearDown {
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWithDefaultChecks.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWithDefaultChecks.m
index 833a327..534d00d 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWithDefaultChecks.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWithDefaultChecks.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxWithDefaultChecks : GTXTestBaseTest
 @end
@@ -29,9 +29,9 @@
   [super setUp];
 
   // Install all the default checks on the current test class.
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:[GTXChecksCollection allGTXChecks]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:[GTXChecksCollection allGTXChecks]
+            elementBlacklists:@[]];
 }
 
 - (void)setUp {
@@ -43,7 +43,7 @@
   // Set up failure handler to simple detect if errors were found.
   _expectErrors = NO;
   _foundErrors = NO;
-  [GTAxe setFailureHandler:^(NSError * _Nonnull error) {
+  [GTXiLib setFailureHandler:^(NSError * _Nonnull error) {
     _foundErrors = YES;
   }];
 }
diff --git a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWorksForPassingTests.m b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWorksForPassingTests.m
index 6b58a4d..e32aaef 100644
--- a/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWorksForPassingTests.m
+++ b/Tests/FunctionalTests/TestApp/TestSources/GTXTestGtxWorksForPassingTests.m
@@ -15,7 +15,7 @@
 //
 
 #import "GTXTestBaseTest.h"
-#import "GTAxe.h"
+#import "GTXiLib.h"
 
 @interface GTXTestGtxWorksForPassingTests : GTXTestBaseTest
 @end
@@ -24,9 +24,9 @@
 
 + (void)setUp {
   [super setUp];
-  [GTAxe installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
-                     checks:@[alwaysPass]
-          elementBlacklists:@[]];
+  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
+                       checks:@[alwaysPass]
+            elementBlacklists:@[]];
 }
 
 - (void)tearDown {
diff --git a/Tests/UnitTests/GTXImageAndColorUtilsTests.m b/Tests/UnitTests/GTXImageAndColorUtilsTests.m
index c18702b..fedb2d6 100644
--- a/Tests/UnitTests/GTXImageAndColorUtilsTests.m
+++ b/Tests/UnitTests/GTXImageAndColorUtilsTests.m
@@ -136,7 +136,7 @@
  *  Create an image with the given color and draws a rect filled with the given fill color.
  *
  *  @param backgroundColor Background color on the image.
- *  @param size            Image size.
+ *  @param imageSize       Image size.
  *  @param rectColor       Fill color for @c rect.
  *  @param rect            Rectangle to be filled with @c rectColor.
  *
diff --git a/g3doc/features.md b/g3doc/features.md
deleted file mode 100644
index 26af1c5..0000000
--- a/g3doc/features.md
+++ /dev/null
@@ -1,61 +0,0 @@
-GtxChecker is the entry point for running accessibility checks. Understand some
-of its features can help you write your own tools or test frameworks that make
-use of it. In some situations you may want to disable some checks or add some
-of your own, here is how you do it.
-
-
-### Disabling a *single* check for all elements
-
-```
-// 1. Create a settings object with appropriate settings.
-GTXSettings *settings = [[GTXSettings alloc] init];
-[settings disableCheckWithName:<the check's name> reason:<a reason>];
-
-// 2. Create a checker with the settings object.
-GTXChecker *checker = [[GTXChecker alloc] initWithSettings:settings];
-
-// This checker will not check the disabled checks.
-```
-
-
-### Disabling a check for a *single* element
-
-This is currently not supported in Gtx but if think you have a good use case or
-are in need of a workaround, please ask on g/ios-accessibility
-
-
-### Adding custom checks
-
-```
-// 1. Create a custom check using GTXCheckBlock
-GTXCheckBlock *customCheck =
-    [GTXCheckBlock GTXCheckWithName:<unique check name>
-                              block:^BOOL(id  _Nonnull element, GTXErrorRefType errorOrNil) {
-    // perform checks on the element here...
-    // return YES if checks passed NO for failure.
-  }];
-
-// 2. Register the new check.
-[GTXChecksCollection registerCheck:customCheck];
-
-// 3. Any checkers created next will include the newly registered check.
-GTXChecker *checker = [[GTXChecker alloc] initWithSettings:settings];
-```
-
-
-### Custom error reporting
-
-If you use any APIs that take an NSError object and pass nil for the error,
-the errors are automatically logged and failures are asserted, to customize the
-error reporting simply pass an NSError object and assert on it.
-
-```
-NSError *errorObj;
-// Assume checker is a valid GTXChecker object.
-[checker checkAllElementsFromRootElements:<some root elements> error:&errorObj];
-if (errorObj) {
-  // Error(s) have occurred process/log errorObj.
-} else {
-  // All checks have passed
-}
-```
diff --git a/g3doc/gtxchecks.md b/g3doc/gtxchecks.md
deleted file mode 100644
index 406fded..0000000
--- a/g3doc/gtxchecks.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# Gtx Checks
-This doc is go/all-gtx-checks.
-
-All Gtx checks are designed with the following constraints:
-
-* Gtx check failures are 100% repeatable.
-* Fixing Gtx checks will lead to better GAR score.
-* Fixing Gtx checks will lead to a more accessible iOS App.
-* All failing Gtx checks will log helpful info on how to fix it.
-
-If you find an Gtx check that does not satisfy the above please notify us at
-ios-accessibility@google.com
-
-Currently Gtx has support for the following checks:
-
-## 1. kGTXCheckNameAccessibilityLabelPresent
-This check verifies that all the accessibility elements in the UI have a non-nil accessibility
-label.
-
-## 2. kGTXCheckNameAccessibilityLabelNotPunctuated
-This check that verifies that the accessibility labels on non-text elements are not punctuated
-(i.e. they do not end with a period). A good example of non-text element is a button.
-
-## 3. kGTXCheckNameAccessibilityTraitsDontConflict
-This check that verifies that the accessibility elements in the UI do not have any
-accessibilityTraits that conflict with each other. The following sets traits are mutually exclusive
-and cannot be used together:
-
-* Set 1
-  * UIAccessibilityTraitButton
-  * UIAccessibilityTraitLink
-  * UIAccessibilityTraitSearchField
-  * UIAccessibilityTraitKeyboardKey
-* Set 2
-  * UIAccessibilityTraitButton
-  * UIAccessibilityTraitAdjustable
-
-## 4. kGTXCheckNameMinimumTappableArea
-This check that verifies that the accessibility elements have a minimum tappabel area (as defined
-by accessibility frame) of 48X48. NOTE that this check is available under GTXSystemVersionLatest not
-GTXSystemVersionStable.
-
-## 5. kGTXCheckNameMinimumContrastRatio
-This check that verifies that text elements have a minimum contrast ratio of 1:3 against their
-background. NOTE that this check is available under GTXSystemVersionLatest not
-GTXSystemVersionStable.
-
-## Other Checks
-While Gtx is scanning the UI it also verifies if the the App uses `accessibilityElements` selector
-and `accessibilityElementAtIndex` consistently, i.e. any given element must either use only one
-of the APIs to provide accessibility children or must provide the same set of elements from both
-the APIs.
