diff --git a/html-parser-api/build.gradle b/html-parser-api/build.gradle
index 53bc9eee..c533b985 100644
--- a/html-parser-api/build.gradle
+++ b/html-parser-api/build.gradle
@@ -18,6 +18,7 @@ dependencies {
 }
 
 afterEvaluate {
+    generateDebugBuildConfig.enabled = false
     generateReleaseBuildConfig.enabled = false
 }
 
diff --git a/html-parser-api/src/main/AndroidManifest.xml b/html-parser-api/src/main/AndroidManifest.xml
index 6d886e0e..872543b3 100644
--- a/html-parser-api/src/main/AndroidManifest.xml
+++ b/html-parser-api/src/main/AndroidManifest.xml
@@ -1 +1 @@
-<manifest package="ru.noties.markwon.html" />
+<manifest package="ru.noties.markwon.html.api" />
diff --git a/html-parser-api/src/main/java/ru/noties/markwon/html/HtmlTag.java b/html-parser-api/src/main/java/ru/noties/markwon/html/api/HtmlTag.java
similarity index 97%
rename from html-parser-api/src/main/java/ru/noties/markwon/html/HtmlTag.java
rename to html-parser-api/src/main/java/ru/noties/markwon/html/api/HtmlTag.java
index 06712012..e28f99b8 100644
--- a/html-parser-api/src/main/java/ru/noties/markwon/html/HtmlTag.java
+++ b/html-parser-api/src/main/java/ru/noties/markwon/html/api/HtmlTag.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.api;
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
diff --git a/html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParser.java b/html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParser.java
similarity index 96%
rename from html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParser.java
rename to html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParser.java
index cc168b87..33a041f5 100644
--- a/html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParser.java
+++ b/html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParser.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.api;
 
 import android.support.annotation.NonNull;
 
diff --git a/html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserNoOp.java b/html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParserNoOp.java
similarity index 93%
rename from html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserNoOp.java
rename to html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParserNoOp.java
index 56926d12..fb55c5f8 100644
--- a/html-parser-api/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserNoOp.java
+++ b/html-parser-api/src/main/java/ru/noties/markwon/html/api/MarkwonHtmlParserNoOp.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.api;
 
 import android.support.annotation.NonNull;
 
diff --git a/html-parser-impl/build.gradle b/html-parser-impl/build.gradle
index f8a446d5..8e2fd5f1 100644
--- a/html-parser-impl/build.gradle
+++ b/html-parser-impl/build.gradle
@@ -23,6 +23,7 @@ dependencies {
 }
 
 afterEvaluate {
+    generateDebugBuildConfig.enabled = false
     generateReleaseBuildConfig.enabled = false
 }
 
diff --git a/html-parser-impl/src/main/AndroidManifest.xml b/html-parser-impl/src/main/AndroidManifest.xml
index 6d886e0e..14bee867 100644
--- a/html-parser-impl/src/main/AndroidManifest.xml
+++ b/html-parser-impl/src/main/AndroidManifest.xml
@@ -1 +1 @@
-<manifest package="ru.noties.markwon.html" />
+<manifest package="ru.noties.markwon.html.impl" />
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlEmptyTagReplacement.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlEmptyTagReplacement.java
similarity index 94%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlEmptyTagReplacement.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlEmptyTagReplacement.java
index 75f1184b..08128b62 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlEmptyTagReplacement.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlEmptyTagReplacement.java
@@ -1,9 +1,9 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.impl;
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
-import ru.noties.markwon.html.jsoup.parser.Token;
+import ru.noties.markwon.html.impl.jsoup.parser.Token;
 
 /**
  * This class will be used to append some text to output in order to
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlTagImpl.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlTagImpl.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlTagImpl.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlTagImpl.java
index 83a77173..1b652ebe 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/HtmlTagImpl.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/HtmlTagImpl.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.impl;
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -7,6 +7,8 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import ru.noties.markwon.html.api.HtmlTag;
+
 abstract class HtmlTagImpl implements HtmlTag {
 
     private static final int NO_VALUE = -1;
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserImpl.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/MarkwonHtmlParserImpl.java
similarity index 87%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserImpl.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/MarkwonHtmlParserImpl.java
index 72aefad6..f024c62e 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/MarkwonHtmlParserImpl.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/MarkwonHtmlParserImpl.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html;
+package ru.noties.markwon.html.impl;
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -14,16 +14,15 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
-import ru.noties.markwon.html.HtmlTag.Block;
-import ru.noties.markwon.html.HtmlTag.Inline;
-import ru.noties.markwon.html.HtmlTagImpl.BlockImpl;
-import ru.noties.markwon.html.HtmlTagImpl.InlineImpl;
-import ru.noties.markwon.html.jsoup.nodes.Attribute;
-import ru.noties.markwon.html.jsoup.nodes.Attributes;
-import ru.noties.markwon.html.jsoup.parser.CharacterReader;
-import ru.noties.markwon.html.jsoup.parser.ParseErrorList;
-import ru.noties.markwon.html.jsoup.parser.Token;
-import ru.noties.markwon.html.jsoup.parser.Tokeniser;
+import ru.noties.markwon.html.api.HtmlTag.Block;
+import ru.noties.markwon.html.api.HtmlTag.Inline;
+import ru.noties.markwon.html.api.MarkwonHtmlParser;
+import ru.noties.markwon.html.impl.jsoup.nodes.Attribute;
+import ru.noties.markwon.html.impl.jsoup.nodes.Attributes;
+import ru.noties.markwon.html.impl.jsoup.parser.CharacterReader;
+import ru.noties.markwon.html.impl.jsoup.parser.ParseErrorList;
+import ru.noties.markwon.html.impl.jsoup.parser.Token;
+import ru.noties.markwon.html.impl.jsoup.parser.Tokeniser;
 
 public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
 
@@ -108,9 +107,9 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
 
     private final HtmlEmptyTagReplacement emptyTagReplacement;
 
-    private final List<InlineImpl> inlineTags = new ArrayList<>(0);
+    private final List<HtmlTagImpl.InlineImpl> inlineTags = new ArrayList<>(0);
 
-    private BlockImpl currentBlock = BlockImpl.root();
+    private HtmlTagImpl.BlockImpl currentBlock = HtmlTagImpl.BlockImpl.root();
 
     MarkwonHtmlParserImpl(@NonNull HtmlEmptyTagReplacement replacement) {
         this.emptyTagReplacement = replacement;
@@ -174,7 +173,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
     @Override
     public void flushInlineTags(int documentLength, @NonNull FlushAction<Inline> action) {
         if (inlineTags.size() > 0) {
-            for (InlineImpl inline : inlineTags) {
+            for (HtmlTagImpl.InlineImpl inline : inlineTags) {
                 inline.closeAt(documentLength);
             }
             //noinspection unchecked
@@ -186,7 +185,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
     @Override
     public void flushBlockTags(int documentLength, @NonNull FlushAction<Block> action) {
 
-        BlockImpl block = currentBlock;
+        HtmlTagImpl.BlockImpl block = currentBlock;
         while (!block.isRoot()) {
             block = block.parent;
         }
@@ -198,13 +197,13 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
             action.apply(children);
         }
 
-        currentBlock = BlockImpl.root();
+        currentBlock = HtmlTagImpl.BlockImpl.root();
     }
 
     @Override
     public void reset() {
         inlineTags.clear();
-        currentBlock = BlockImpl.root();
+        currentBlock = HtmlTagImpl.BlockImpl.root();
     }
 
 
@@ -214,7 +213,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
 
         final String name = startTag.normalName;
 
-        final InlineImpl inline = new InlineImpl(name, output.length(), extractAttributes(startTag));
+        final HtmlTagImpl.InlineImpl inline = new HtmlTagImpl.InlineImpl(name, output.length(), extractAttributes(startTag));
 
         if (isVoidTag(name)
                 || startTag.selfClosing) {
@@ -239,7 +238,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
             @NonNull Token.EndTag endTag) {
 
         // try to find it, if none found -> ignore
-        final InlineImpl openInline = findOpenInlineTag(endTag.normalName);
+        final HtmlTagImpl.InlineImpl openInline = findOpenInlineTag(endTag.normalName);
         if (openInline != null) {
             // close open inline tag
             openInline.closeAt(output.length());
@@ -276,7 +275,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
 
         final int start = output.length();
 
-        final BlockImpl block = BlockImpl.create(name, start, extractAttributes(startTag), currentBlock);
+        final HtmlTagImpl.BlockImpl block = HtmlTagImpl.BlockImpl.create(name, start, extractAttributes(startTag), currentBlock);
 
         final boolean isVoid = isVoidTag(name) || startTag.selfClosing;
         if (isVoid) {
@@ -303,7 +302,7 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
 
         final String name = endTag.normalName;
 
-        final BlockImpl block = findOpenBlockTag(endTag.normalName);
+        final HtmlTagImpl.BlockImpl block = findOpenBlockTag(endTag.normalName);
         if (block != null) {
 
             block.closeAt(output.length());
@@ -334,8 +333,8 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
         append(output, character.getData());
     }
 
-    protected void appendBlockChild(@NonNull BlockImpl parent, @NonNull BlockImpl child) {
-        List<BlockImpl> children = parent.children;
+    protected void appendBlockChild(@NonNull HtmlTagImpl.BlockImpl parent, @NonNull HtmlTagImpl.BlockImpl child) {
+        List<HtmlTagImpl.BlockImpl> children = parent.children;
         if (children == null) {
             children = new ArrayList<>(2);
             parent.children = children;
@@ -344,9 +343,9 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
     }
 
     @Nullable
-    protected InlineImpl findOpenInlineTag(@NonNull String name) {
+    protected HtmlTagImpl.InlineImpl findOpenInlineTag(@NonNull String name) {
 
-        InlineImpl inline;
+        HtmlTagImpl.InlineImpl inline;
 
         for (int i = inlineTags.size() - 1; i > -1; i--) {
             inline = inlineTags.get(i);
@@ -360,9 +359,9 @@ public class MarkwonHtmlParserImpl extends MarkwonHtmlParser {
     }
 
     @Nullable
-    protected BlockImpl findOpenBlockTag(@NonNull String name) {
+    protected HtmlTagImpl.BlockImpl findOpenBlockTag(@NonNull String name) {
 
-        BlockImpl blockTag = currentBlock;
+        HtmlTagImpl.BlockImpl blockTag = currentBlock;
 
         while (blockTag != null
                 && !name.equals(blockTag.name) && !blockTag.isClosed()) {
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/UncheckedIOException.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/UncheckedIOException.java
similarity index 85%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/UncheckedIOException.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/UncheckedIOException.java
index 9548bdf4..c59b725b 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/UncheckedIOException.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/UncheckedIOException.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup;
+package ru.noties.markwon.html.impl.jsoup;
 
 import java.io.IOException;
 
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Normalizer.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Normalizer.java
similarity index 89%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Normalizer.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Normalizer.java
index a0df7dd4..024e5350 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Normalizer.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Normalizer.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.helper;
+package ru.noties.markwon.html.impl.jsoup.helper;
 
 import java.util.Locale;
 
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Validate.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Validate.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Validate.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Validate.java
index 0d00249b..e8effd8c 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/helper/Validate.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/helper/Validate.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.helper;
+package ru.noties.markwon.html.impl.jsoup.helper;
 
 /**
  * Simple validation methods. Designed for jsoup internal use
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attribute.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attribute.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attribute.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attribute.java
index 934dc364..3ece793d 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attribute.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attribute.java
@@ -1,8 +1,8 @@
-package ru.noties.markwon.html.jsoup.nodes;
+package ru.noties.markwon.html.impl.jsoup.nodes;
 
 import java.util.Map;
 
-import ru.noties.markwon.html.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
 
 /**
  A single key + value attribute. (Only used for presentation.)
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attributes.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attributes.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attributes.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attributes.java
index d91033e5..9735e8f4 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Attributes.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Attributes.java
@@ -1,18 +1,14 @@
-package ru.noties.markwon.html.jsoup.nodes;
+package ru.noties.markwon.html.impl.jsoup.nodes;
 
-import java.util.AbstractMap;
-import java.util.AbstractSet;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
-import ru.noties.markwon.html.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
 
-import static ru.noties.markwon.html.jsoup.helper.Normalizer.lowerCase;
+import static ru.noties.markwon.html.impl.jsoup.helper.Normalizer.lowerCase;
 
 /**
  * The attributes of an Element.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/DocumentType.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/DocumentType.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/DocumentType.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/DocumentType.java
index dc11e537..0b1240df 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/DocumentType.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/DocumentType.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.nodes;
+package ru.noties.markwon.html.impl.jsoup.nodes;
 
 /**
  * A {@code <!DOCTYPE>} node.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Entities.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Entities.java
similarity index 97%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Entities.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Entities.java
index c6c8d829..5c9481c9 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/Entities.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/Entities.java
@@ -1,14 +1,14 @@
-package ru.noties.markwon.html.jsoup.nodes;
+package ru.noties.markwon.html.impl.jsoup.nodes;
 
 import java.nio.charset.CharsetEncoder;
 import java.util.Arrays;
 import java.util.HashMap;
 
-import ru.noties.markwon.html.jsoup.helper.Validate;
-import ru.noties.markwon.html.jsoup.parser.CharacterReader;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.parser.CharacterReader;
 
-import static ru.noties.markwon.html.jsoup.nodes.Entities.EscapeMode.base;
-import static ru.noties.markwon.html.jsoup.nodes.Entities.EscapeMode.extended;
+import static ru.noties.markwon.html.impl.jsoup.nodes.Entities.EscapeMode.base;
+import static ru.noties.markwon.html.impl.jsoup.nodes.Entities.EscapeMode.extended;
 
 /**
  * HTML entities, and escape routines. Source: <a href="http://www.w3.org/TR/html5/named-character-references.html#named-character-references">W3C
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/EntitiesData.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/EntitiesData.java
similarity index 99%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/EntitiesData.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/EntitiesData.java
index 036c712f..1c984cb7 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/nodes/EntitiesData.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/nodes/EntitiesData.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.nodes;
+package ru.noties.markwon.html.impl.jsoup.nodes;
 
 /**
  * Holds packed data that represents Entity name=value pairs. Parsed by Entities, created by BuildEntities.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/CharacterReader.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/CharacterReader.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/CharacterReader.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/CharacterReader.java
index c29b4454..0ae673a9 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/CharacterReader.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/CharacterReader.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -6,8 +6,8 @@ import java.io.StringReader;
 import java.util.Arrays;
 import java.util.Locale;
 
-import ru.noties.markwon.html.jsoup.UncheckedIOException;
-import ru.noties.markwon.html.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.UncheckedIOException;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
 
 /**
  CharacterReader consumes tokens off a string. Used internally by jsoup. API subject to changes.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseError.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseError.java
similarity index 94%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseError.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseError.java
index 533f9aee..f43c3007 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseError.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseError.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
 /**
  * A Parse Error records an error in the input HTML that occurs in either the tokenisation or the tree building phase.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseErrorList.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseErrorList.java
similarity index 93%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseErrorList.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseErrorList.java
index a3e42a08..032b7571 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/ParseErrorList.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/ParseErrorList.java
@@ -1,4 +1,4 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
 import java.util.ArrayList;
 
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Token.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Token.java
similarity index 97%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Token.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Token.java
index 0b157d07..db321233 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Token.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Token.java
@@ -1,11 +1,11 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
 import android.support.annotation.NonNull;
 
-import ru.noties.markwon.html.jsoup.helper.Validate;
-import ru.noties.markwon.html.jsoup.nodes.Attributes;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.nodes.Attributes;
 
-import static ru.noties.markwon.html.jsoup.helper.Normalizer.lowerCase;
+import static ru.noties.markwon.html.impl.jsoup.helper.Normalizer.lowerCase;
 
 /**
  * Parse tokens for the Tokeniser.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Tokeniser.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Tokeniser.java
similarity index 98%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Tokeniser.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Tokeniser.java
index 3d5284bd..da7c4236 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/Tokeniser.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/Tokeniser.java
@@ -1,9 +1,9 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
 import java.util.Arrays;
 
-import ru.noties.markwon.html.jsoup.helper.Validate;
-import ru.noties.markwon.html.jsoup.nodes.Entities;
+import ru.noties.markwon.html.impl.jsoup.helper.Validate;
+import ru.noties.markwon.html.impl.jsoup.nodes.Entities;
 
 /**
  * Readers the input stream into tokens.
diff --git a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/TokeniserState.java b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/TokeniserState.java
similarity index 99%
rename from html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/TokeniserState.java
rename to html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/TokeniserState.java
index 01a98958..4c3e4405 100644
--- a/html-parser-impl/src/main/java/ru/noties/markwon/html/jsoup/parser/TokeniserState.java
+++ b/html-parser-impl/src/main/java/ru/noties/markwon/html/impl/jsoup/parser/TokeniserState.java
@@ -1,6 +1,6 @@
-package ru.noties.markwon.html.jsoup.parser;
+package ru.noties.markwon.html.impl.jsoup.parser;
 
-import ru.noties.markwon.html.jsoup.nodes.DocumentType;
+import ru.noties.markwon.html.impl.jsoup.nodes.DocumentType;
 
 /**
  * States and transition activations for the Tokeniser.
diff --git a/html-parser-impl/src/test/java/ru/noties/markwon/html/MarkwonHtmlParserImplTest.java b/html-parser-impl/src/test/java/ru/noties/markwon/html/MarkwonHtmlParserImplTest.java
index f61d697b..9c9b6c87 100644
--- a/html-parser-impl/src/test/java/ru/noties/markwon/html/MarkwonHtmlParserImplTest.java
+++ b/html-parser-impl/src/test/java/ru/noties/markwon/html/MarkwonHtmlParserImplTest.java
@@ -14,7 +14,11 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import ru.noties.markwon.html.jsoup.parser.Token;
+import ru.noties.markwon.html.api.HtmlTag;
+import ru.noties.markwon.html.api.MarkwonHtmlParser;
+import ru.noties.markwon.html.impl.HtmlEmptyTagReplacement;
+import ru.noties.markwon.html.impl.MarkwonHtmlParserImpl;
+import ru.noties.markwon.html.impl.jsoup.parser.Token;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;