diff --git a/HTMLKit.xcodeproj/project.pbxproj b/HTMLKit.xcodeproj/project.pbxproj
index 06c7aec..d3de318 100644
--- a/HTMLKit.xcodeproj/project.pbxproj
+++ b/HTMLKit.xcodeproj/project.pbxproj
@@ -11,6 +11,10 @@
62132E5D1C021FF200084175 /* css-tests in Resources */ = {isa = PBXBuildFile; fileRef = 62132E5B1C021FF200084175 /* css-tests */; };
6216ACFD1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6216ACFC1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m */; };
6216ACFE1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6216ACFC1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m */; };
+ 621CC4911DEA704000D1992A /* HTMLDocument+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 621CC4921DEA704000D1992A /* HTMLDocument+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 621CC4931DEA704000D1992A /* HTMLDocument+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 621CC4941DEA704000D1992A /* HTMLDocument+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
621FBE5B1BDAD68700BC9555 /* CSSSelectorParserTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 621FBE591BDAD68700BC9555 /* CSSSelectorParserTests.m */; };
621FBE5E1BDAD90200BC9555 /* CSSCombinatorSelectorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 621FBE5C1BDAD90200BC9555 /* CSSCombinatorSelectorTests.m */; };
6236738F1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m in Sources */ = {isa = PBXBuildFile; fileRef = 6236738D1AC0CE2500FF89B3 /* HTMLKitTokenizerPerformance.m */; };
@@ -558,6 +562,7 @@
62132E581C01F83200084175 /* CSSSelectorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSSelectorTest.m; sourceTree = ""; };
62132E5B1C021FF200084175 /* css-tests */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "css-tests"; sourceTree = ""; };
6216ACFC1C28DCC80074CAB4 /* CSSExtensionSelectorsParsingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSExtensionSelectorsParsingTests.m; sourceTree = ""; };
+ 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "HTMLDocument+Private.h"; sourceTree = ""; };
621FBE591BDAD68700BC9555 /* CSSSelectorParserTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSSelectorParserTests.m; sourceTree = ""; };
621FBE5C1BDAD90200BC9555 /* CSSCombinatorSelectorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSSCombinatorSelectorTests.m; sourceTree = ""; };
6223211D1A969B9300BACED5 /* HTMLElementTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HTMLElementTypes.h; path = include/HTMLElementTypes.h; sourceTree = ""; };
@@ -970,6 +975,7 @@
625D0F071C2717E400D7BEB0 /* Private */ = {
isa = PBXGroup;
children = (
+ 621CC48F1DEA704000D1992A /* HTMLDocument+Private.h */,
625D0F011C2717DE00D7BEB0 /* HTMLNode+Private.h */,
626679CD1DEA3DAF004353E7 /* HTMLCharacterData+Private.h */,
);
@@ -1126,6 +1132,7 @@
62ECBEEE1C0B69FD00AF847B /* HTMLEOFToken.h in Headers */,
62567F501C0CB5750025D458 /* HTMLDOMTokenList.h in Headers */,
626679CF1DEA3DAF004353E7 /* HTMLCharacterData+Private.h in Headers */,
+ 621CC4911DEA704000D1992A /* HTMLDocument+Private.h in Headers */,
62ECBEEF1C0B69FD00AF847B /* HTMLParser.h in Headers */,
62ECBEF01C0B69FD00AF847B /* HTMLStackOfOpenElements.h in Headers */,
62ECBEF11C0B69FD00AF847B /* HTMLListOfActiveFormattingElements.h in Headers */,
@@ -1194,6 +1201,7 @@
62857CC51D3989AB008DC254 /* CSSStructuralPseudoSelectors.h in Headers */,
62857CDE1D3989CE008DC254 /* CSSPseudoFunctionSelector.h in Headers */,
626679D21DEA3DAF004353E7 /* HTMLCharacterData+Private.h in Headers */,
+ 621CC4941DEA704000D1992A /* HTMLDocument+Private.h in Headers */,
62857CAB1D398973008DC254 /* HTMLNodeFilter.h in Headers */,
62857CA61D398973008DC254 /* HTMLText.h in Headers */,
62857C751D398907008DC254 /* HTMLCommentToken.h in Headers */,
@@ -1262,6 +1270,7 @@
62857D571D39A411008DC254 /* HTMLEOFToken.h in Headers */,
62857D8E1D39A47F008DC254 /* CSSPseudoFunctionSelector.h in Headers */,
626679D11DEA3DAF004353E7 /* HTMLCharacterData+Private.h in Headers */,
+ 621CC4931DEA704000D1992A /* HTMLDocument+Private.h in Headers */,
62857D511D39A411008DC254 /* HTMLToken.h in Headers */,
62857D531D39A411008DC254 /* HTMLCommentToken.h in Headers */,
62857D741D39A44E008DC254 /* HTMLText.h in Headers */,
@@ -1330,6 +1339,7 @@
62ECBFB31C0B6D3C00AF847B /* HTMLKitDOMExceptions.h in Headers */,
62ECBFB41C0B6D3D00AF847B /* HTMLNamespaces.h in Headers */,
626679D01DEA3DAF004353E7 /* HTMLCharacterData+Private.h in Headers */,
+ 621CC4921DEA704000D1992A /* HTMLDocument+Private.h in Headers */,
62ECBFB51C0B6D3D00AF847B /* HTMLQuirksMode.h in Headers */,
62ECBFB61C0B6D3D00AF847B /* NSString+HTMLKit.h in Headers */,
62ECBFB71C0B6D3D00AF847B /* NSCharacterSet+HTMLKit.h in Headers */,
diff --git a/Sources/HTMLDocument+Private.h b/Sources/HTMLDocument+Private.h
new file mode 100644
index 0000000..c66c926
--- /dev/null
+++ b/Sources/HTMLDocument+Private.h
@@ -0,0 +1,26 @@
+//
+// HTMLDocument+Private.h
+// HTMLKit
+//
+// Created by Iska on 27/11/16.
+// Copyright © 2016 BrainCookie. All rights reserved.
+//
+
+#import "HTMLDocument.h"
+#import "HTMLNode.h"
+#import "HTMLNodeIterator.h"
+#import "HTMLRange.h"
+
+@interface HTMLDocument ()
+
+@property (nonatomic, assign) HTMLDocumentReadyState readyState;
+
+- (void)runRemovingStepsForNode:(HTMLNode *)oldNode
+ withOldParent:(HTMLNode *)oldParent
+ andOldPreviousSibling:(HTMLNode *)oldPreviousSibling;
+
+- (void)attachNodeIterator:(HTMLNodeIterator *)iterator;
+- (void)detachNodeIterator:(HTMLNodeIterator *)iterator;
+
+
+@end
diff --git a/Sources/HTMLNode.m b/Sources/HTMLNode.m
index 45ff5a5..c2aecba 100644
--- a/Sources/HTMLNode.m
+++ b/Sources/HTMLNode.m
@@ -16,12 +16,7 @@
#import "HTMLKitDOMExceptions.h"
#import "HTMLNodeFilter.h"
#import "CSSSelector.h"
-
-@interface HTMLDocument (Private)
-- (void)runRemovingStepsForNode:(HTMLNode *)oldNode
- withOldParent:(HTMLNode *)oldParent
- andOldPreviousSibling:(HTMLNode *)oldPreviousSibling;
-@end
+#import "HTMLDocument+Private.h"
@interface HTMLNode ()
{
diff --git a/Sources/HTMLNodeIterator.m b/Sources/HTMLNodeIterator.m
index 5e71387..7c0937e 100644
--- a/Sources/HTMLNodeIterator.m
+++ b/Sources/HTMLNodeIterator.m
@@ -11,6 +11,7 @@
#import "HTMLNode.h"
#import "HTMLNodeFilter.h"
#import "HTMLNodeTraversal.h"
+#import "HTMLDocument+Private.h"
typedef NS_ENUM(short, TraverseDirection)
{
@@ -18,11 +19,6 @@ typedef NS_ENUM(short, TraverseDirection)
TraverseDirectionPrevious
};
-@interface HTMLDocument (Private)
-- (void)attachNodeIterator:(HTMLNodeIterator *)iterator;
-- (void)detachNodeIterator:(HTMLNodeIterator *)iterator;
-@end
-
@interface HTMLNodeIterator ()
{
HTMLNode *_root;
diff --git a/Sources/HTMLParser.m b/Sources/HTMLParser.m
index 5311c1d..dd1714c 100644
--- a/Sources/HTMLParser.m
+++ b/Sources/HTMLParser.m
@@ -18,15 +18,12 @@
#import "HTMLMarker.h"
#import "NSString+HTMLKit.h"
#import "CSSSelectors.h"
+#import "HTMLDocument+Private.h"
@interface HTMLTokenizer (Private)
@property (nonatomic, weak) HTMLParser *parser;
@end
-@interface HTMLDocument (Private)
-@property (nonatomic, assign) HTMLDocumentReadyState readyState;
-@end
-
@interface HTMLParser ()
{
HTMLTokenizer *_tokenizer;
diff --git a/Sources/HTMLTemplate.m b/Sources/HTMLTemplate.m
index 9eebbc0..aa6fe59 100644
--- a/Sources/HTMLTemplate.m
+++ b/Sources/HTMLTemplate.m
@@ -8,10 +8,7 @@
#import "HTMLTemplate.h"
#import "HTMLDocument.h"
-
-@interface HTMLNode (Private)
-@property (nonatomic, weak) HTMLDocument *ownerDocument;
-@end
+#import "HTMLNode+Private.h"
@implementation HTMLTemplate