diff --git a/classlib/pom.xml b/classlib/pom.xml
index 95ff26998..02aa83c16 100644
--- a/classlib/pom.xml
+++ b/classlib/pom.xml
@@ -54,6 +54,11 @@
teavm-jso
${project.version}
+
+ org.teavm
+ teavm-jso-apis
+ ${project.version}
+
org.teavm
teavm-jso-impl
diff --git a/jso/apis/pom.xml b/jso/apis/pom.xml
new file mode 100644
index 000000000..fe2ced996
--- /dev/null
+++ b/jso/apis/pom.xml
@@ -0,0 +1,82 @@
+
+
+ 4.0.0
+
+
+ org.teavm
+ teavm
+ 0.4.0-SNAPSHOT
+
+ teavm-jso-apis
+
+ TeaVM JavaScript APIs
+ Set of JavaScript API wrappers for JSO
+
+
+
+ org.teavm
+ teavm-jso
+ ${project.version}
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ test-jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+ ../../checkstyle.xml
+ config_loc=${basedir}/../..
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
+
+
+
diff --git a/jso/core/src/main/java/org/teavm/jso/ajax/ReadyStateChangeHandler.java b/jso/apis/src/main/java/org/teavm/jso/ajax/ReadyStateChangeHandler.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/ajax/ReadyStateChangeHandler.java
rename to jso/apis/src/main/java/org/teavm/jso/ajax/ReadyStateChangeHandler.java
diff --git a/jso/core/src/main/java/org/teavm/jso/ajax/XMLHttpRequest.java b/jso/apis/src/main/java/org/teavm/jso/ajax/XMLHttpRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/ajax/XMLHttpRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/ajax/XMLHttpRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/Performance.java b/jso/apis/src/main/java/org/teavm/jso/browser/Performance.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/Performance.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/Performance.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/Screen.java b/jso/apis/src/main/java/org/teavm/jso/browser/Screen.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/Screen.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/Screen.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/Storage.java b/jso/apis/src/main/java/org/teavm/jso/browser/Storage.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/Storage.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/Storage.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/StorageProvider.java b/jso/apis/src/main/java/org/teavm/jso/browser/StorageProvider.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/StorageProvider.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/StorageProvider.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/TimerHandler.java b/jso/apis/src/main/java/org/teavm/jso/browser/TimerHandler.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/TimerHandler.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/TimerHandler.java
diff --git a/jso/core/src/main/java/org/teavm/jso/browser/Window.java b/jso/apis/src/main/java/org/teavm/jso/browser/Window.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/browser/Window.java
rename to jso/apis/src/main/java/org/teavm/jso/browser/Window.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/CanvasGradient.java b/jso/apis/src/main/java/org/teavm/jso/canvas/CanvasGradient.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/CanvasGradient.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/CanvasGradient.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/CanvasImageSource.java b/jso/apis/src/main/java/org/teavm/jso/canvas/CanvasImageSource.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/CanvasImageSource.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/CanvasImageSource.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/CanvasPattern.java b/jso/apis/src/main/java/org/teavm/jso/canvas/CanvasPattern.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/CanvasPattern.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/CanvasPattern.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/CanvasRenderingContext2D.java b/jso/apis/src/main/java/org/teavm/jso/canvas/CanvasRenderingContext2D.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/CanvasRenderingContext2D.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/CanvasRenderingContext2D.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/ImageData.java b/jso/apis/src/main/java/org/teavm/jso/canvas/ImageData.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/ImageData.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/ImageData.java
diff --git a/jso/core/src/main/java/org/teavm/jso/canvas/TextMetrics.java b/jso/apis/src/main/java/org/teavm/jso/canvas/TextMetrics.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/canvas/TextMetrics.java
rename to jso/apis/src/main/java/org/teavm/jso/canvas/TextMetrics.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSArray.java b/jso/apis/src/main/java/org/teavm/jso/core/JSArray.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSArray.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSArray.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSArrayReader.java b/jso/apis/src/main/java/org/teavm/jso/core/JSArrayReader.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSArrayReader.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSArrayReader.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSBoolean.java b/jso/apis/src/main/java/org/teavm/jso/core/JSBoolean.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSBoolean.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSBoolean.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSDate.java b/jso/apis/src/main/java/org/teavm/jso/core/JSDate.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSDate.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSDate.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSFunction.java b/jso/apis/src/main/java/org/teavm/jso/core/JSFunction.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSFunction.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSFunction.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSNumber.java b/jso/apis/src/main/java/org/teavm/jso/core/JSNumber.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSNumber.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSNumber.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSRegExp.java b/jso/apis/src/main/java/org/teavm/jso/core/JSRegExp.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSRegExp.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSRegExp.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSRegExpFlag.java b/jso/apis/src/main/java/org/teavm/jso/core/JSRegExpFlag.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSRegExpFlag.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSRegExpFlag.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSReplaceFunction.java b/jso/apis/src/main/java/org/teavm/jso/core/JSReplaceFunction.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSReplaceFunction.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSReplaceFunction.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSSortFunction.java b/jso/apis/src/main/java/org/teavm/jso/core/JSSortFunction.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSSortFunction.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSSortFunction.java
diff --git a/jso/core/src/main/java/org/teavm/jso/core/JSString.java b/jso/apis/src/main/java/org/teavm/jso/core/JSString.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/core/JSString.java
rename to jso/apis/src/main/java/org/teavm/jso/core/JSString.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/css/CSSStyleDeclaration.java b/jso/apis/src/main/java/org/teavm/jso/dom/css/CSSStyleDeclaration.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/css/CSSStyleDeclaration.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/css/CSSStyleDeclaration.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/css/ElementCSSInlineStyle.java b/jso/apis/src/main/java/org/teavm/jso/dom/css/ElementCSSInlineStyle.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/css/ElementCSSInlineStyle.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/css/ElementCSSInlineStyle.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/DocumentEvent.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/DocumentEvent.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/DocumentEvent.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/DocumentEvent.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/Event.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/Event.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/Event.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/Event.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/EventListener.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/EventListener.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/EventListener.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/EventListener.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/EventTarget.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/EventTarget.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/EventTarget.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/EventTarget.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/KeyboardEvent.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/KeyboardEvent.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/KeyboardEvent.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/KeyboardEvent.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/MouseEvent.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/MouseEvent.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/MouseEvent.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/MouseEvent.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/events/StorageEvent.java b/jso/apis/src/main/java/org/teavm/jso/dom/events/StorageEvent.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/events/StorageEvent.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/events/StorageEvent.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLAudioElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLAudioElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLAudioElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLAudioElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLBaseElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLBaseElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLBaseElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLBaseElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLBodyElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLBodyElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLBodyElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLBodyElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLButtonElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLButtonElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLButtonElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLButtonElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLCanvasElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLCanvasElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLCanvasElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLCanvasElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLCollection.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLCollection.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLCollection.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLCollection.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLDocument.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLDocument.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLDocument.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLDocument.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLHeadElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLHeadElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLHeadElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLHeadElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLHtmlElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLHtmlElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLHtmlElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLHtmlElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLImageElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLImageElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLImageElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLImageElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLInputElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLInputElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLInputElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLInputElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLLinkElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLLinkElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLLinkElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLLinkElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLMediaElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLMediaElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLMediaElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLMediaElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLMetaElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLMetaElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLMetaElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLMetaElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLOptionElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLOptionElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLOptionElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLOptionElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLOptionsCollection.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLOptionsCollection.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLOptionsCollection.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLOptionsCollection.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLSelectElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLSelectElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLSelectElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLSelectElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLSourceElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLSourceElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLSourceElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLSourceElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLTitleElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLTitleElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLTitleElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLTitleElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/HTMLVideoElement.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLVideoElement.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/HTMLVideoElement.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/HTMLVideoElement.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/html/TextRectangle.java b/jso/apis/src/main/java/org/teavm/jso/dom/html/TextRectangle.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/html/TextRectangle.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/html/TextRectangle.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Attr.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Attr.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Attr.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Attr.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/CDATASection.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/CDATASection.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/CDATASection.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/CDATASection.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/CharacterData.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/CharacterData.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/CharacterData.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/CharacterData.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Comment.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Comment.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Comment.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Comment.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/DOMImplementation.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/DOMImplementation.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/DOMImplementation.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/DOMImplementation.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Document.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Document.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Document.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Document.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/DocumentFragment.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/DocumentFragment.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/DocumentFragment.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/DocumentFragment.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/DocumentType.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/DocumentType.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/DocumentType.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/DocumentType.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Element.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Element.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Element.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Element.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Entity.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Entity.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Entity.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Entity.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/EntityReference.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/EntityReference.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/EntityReference.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/EntityReference.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/NamedNodeMap.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/NamedNodeMap.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/NamedNodeMap.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/NamedNodeMap.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Node.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Node.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Node.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Node.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/NodeList.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/NodeList.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/NodeList.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/NodeList.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Notation.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Notation.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Notation.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Notation.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/ProcessingInstruction.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/ProcessingInstruction.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/ProcessingInstruction.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/ProcessingInstruction.java
diff --git a/jso/core/src/main/java/org/teavm/jso/dom/xml/Text.java b/jso/apis/src/main/java/org/teavm/jso/dom/xml/Text.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/dom/xml/Text.java
rename to jso/apis/src/main/java/org/teavm/jso/dom/xml/Text.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/EventHandler.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/EventHandler.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/EventHandler.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/EventHandler.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCountRequest.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCountRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCountRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCountRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursor.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursor.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursor.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursor.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursorRequest.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursorRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursorRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursorRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursorSource.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursorSource.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBCursorSource.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBCursorSource.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBDatabase.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBDatabase.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBDatabase.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBDatabase.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBError.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBError.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBError.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBError.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBFactory.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBFactory.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBFactory.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBFactory.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBGetRequest.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBGetRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBGetRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBGetRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBIndex.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBIndex.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBIndex.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBIndex.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBKeyRange.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBKeyRange.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBKeyRange.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBKeyRange.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBObjectStore.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBObjectStore.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBObjectStore.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBObjectStore.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBObjectStoreParameters.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBObjectStoreParameters.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBObjectStoreParameters.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBObjectStoreParameters.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBOpenDBRequest.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBOpenDBRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBOpenDBRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBOpenDBRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBRequest.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBRequest.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBRequest.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBRequest.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBRequestSource.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBRequestSource.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBRequestSource.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBRequestSource.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBTransaction.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBTransaction.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBTransaction.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBTransaction.java
diff --git a/jso/core/src/main/java/org/teavm/jso/indexeddb/IDBVersionChangeEvent.java b/jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBVersionChangeEvent.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/indexeddb/IDBVersionChangeEvent.java
rename to jso/apis/src/main/java/org/teavm/jso/indexeddb/IDBVersionChangeEvent.java
diff --git a/jso/core/src/main/java/org/teavm/jso/json/JSON.java b/jso/apis/src/main/java/org/teavm/jso/json/JSON.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/json/JSON.java
rename to jso/apis/src/main/java/org/teavm/jso/json/JSON.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/AudioTrack.java b/jso/apis/src/main/java/org/teavm/jso/media/AudioTrack.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/AudioTrack.java
rename to jso/apis/src/main/java/org/teavm/jso/media/AudioTrack.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/AudioTrackList.java b/jso/apis/src/main/java/org/teavm/jso/media/AudioTrackList.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/AudioTrackList.java
rename to jso/apis/src/main/java/org/teavm/jso/media/AudioTrackList.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/MediaController.java b/jso/apis/src/main/java/org/teavm/jso/media/MediaController.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/MediaController.java
rename to jso/apis/src/main/java/org/teavm/jso/media/MediaController.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/MediaError.java b/jso/apis/src/main/java/org/teavm/jso/media/MediaError.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/MediaError.java
rename to jso/apis/src/main/java/org/teavm/jso/media/MediaError.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/MediaSource.java b/jso/apis/src/main/java/org/teavm/jso/media/MediaSource.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/MediaSource.java
rename to jso/apis/src/main/java/org/teavm/jso/media/MediaSource.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/SourceBuffer.java b/jso/apis/src/main/java/org/teavm/jso/media/SourceBuffer.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/SourceBuffer.java
rename to jso/apis/src/main/java/org/teavm/jso/media/SourceBuffer.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/TextTrack.java b/jso/apis/src/main/java/org/teavm/jso/media/TextTrack.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/TextTrack.java
rename to jso/apis/src/main/java/org/teavm/jso/media/TextTrack.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/TextTrackCue.java b/jso/apis/src/main/java/org/teavm/jso/media/TextTrackCue.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/TextTrackCue.java
rename to jso/apis/src/main/java/org/teavm/jso/media/TextTrackCue.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/TextTrackCueList.java b/jso/apis/src/main/java/org/teavm/jso/media/TextTrackCueList.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/TextTrackCueList.java
rename to jso/apis/src/main/java/org/teavm/jso/media/TextTrackCueList.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/TextTrackList.java b/jso/apis/src/main/java/org/teavm/jso/media/TextTrackList.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/TextTrackList.java
rename to jso/apis/src/main/java/org/teavm/jso/media/TextTrackList.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/TimeRanges.java b/jso/apis/src/main/java/org/teavm/jso/media/TimeRanges.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/TimeRanges.java
rename to jso/apis/src/main/java/org/teavm/jso/media/TimeRanges.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/VideoTrack.java b/jso/apis/src/main/java/org/teavm/jso/media/VideoTrack.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/VideoTrack.java
rename to jso/apis/src/main/java/org/teavm/jso/media/VideoTrack.java
diff --git a/jso/core/src/main/java/org/teavm/jso/media/VideoTrackList.java b/jso/apis/src/main/java/org/teavm/jso/media/VideoTrackList.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/media/VideoTrackList.java
rename to jso/apis/src/main/java/org/teavm/jso/media/VideoTrackList.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/ArrayBuffer.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/ArrayBuffer.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/ArrayBuffer.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/ArrayBuffer.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/ArrayBufferView.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/ArrayBufferView.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/ArrayBufferView.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/ArrayBufferView.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Float32Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Float32Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Float32Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Float32Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Float64Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Float64Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Float64Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Float64Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Int16Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Int16Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Int16Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Int16Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Int32Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Int32Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Int32Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Int32Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Int8Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Int8Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Int8Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Int8Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Uint16Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint16Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Uint16Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint16Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Uint8Array.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint8Array.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Uint8Array.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint8Array.java
diff --git a/jso/core/src/main/java/org/teavm/jso/typedarrays/Uint8ClampedArray.java b/jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint8ClampedArray.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/typedarrays/Uint8ClampedArray.java
rename to jso/apis/src/main/java/org/teavm/jso/typedarrays/Uint8ClampedArray.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLActiveInfo.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLActiveInfo.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLActiveInfo.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLActiveInfo.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLBuffer.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLBuffer.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLBuffer.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLBuffer.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLContextAttributes.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLContextAttributes.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLContextAttributes.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLContextAttributes.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLFramebuffer.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLFramebuffer.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLFramebuffer.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLFramebuffer.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLProgram.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLProgram.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLProgram.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLProgram.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLRenderbuffer.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLRenderbuffer.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLRenderbuffer.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLRenderbuffer.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLRenderingContext.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLRenderingContext.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLRenderingContext.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLRenderingContext.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLShader.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLShader.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLShader.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLShader.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLShaderPrecisionFormat.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLShaderPrecisionFormat.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLShaderPrecisionFormat.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLShaderPrecisionFormat.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLTexture.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLTexture.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLTexture.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLTexture.java
diff --git a/jso/core/src/main/java/org/teavm/jso/webgl/WebGLUniformLocation.java b/jso/apis/src/main/java/org/teavm/jso/webgl/WebGLUniformLocation.java
similarity index 100%
rename from jso/core/src/main/java/org/teavm/jso/webgl/WebGLUniformLocation.java
rename to jso/apis/src/main/java/org/teavm/jso/webgl/WebGLUniformLocation.java
diff --git a/jso/core/src/test/java/org/teavm/jso/test/AnnotationsTest.java b/jso/apis/src/test/java/org/teavm/jso/test/AnnotationsTest.java
similarity index 100%
rename from jso/core/src/test/java/org/teavm/jso/test/AnnotationsTest.java
rename to jso/apis/src/test/java/org/teavm/jso/test/AnnotationsTest.java
diff --git a/jso/core/src/test/java/org/teavm/jso/test/ConversionTest.java b/jso/apis/src/test/java/org/teavm/jso/test/ConversionTest.java
similarity index 100%
rename from jso/core/src/test/java/org/teavm/jso/test/ConversionTest.java
rename to jso/apis/src/test/java/org/teavm/jso/test/ConversionTest.java
diff --git a/jso/core/src/test/java/org/teavm/jso/test/FunctorTest.java b/jso/apis/src/test/java/org/teavm/jso/test/FunctorTest.java
similarity index 100%
rename from jso/core/src/test/java/org/teavm/jso/test/FunctorTest.java
rename to jso/apis/src/test/java/org/teavm/jso/test/FunctorTest.java
diff --git a/jso/core/src/test/java/org/teavm/jso/test/JavaInvocationTest.java b/jso/apis/src/test/java/org/teavm/jso/test/JavaInvocationTest.java
similarity index 100%
rename from jso/core/src/test/java/org/teavm/jso/test/JavaInvocationTest.java
rename to jso/apis/src/test/java/org/teavm/jso/test/JavaInvocationTest.java
diff --git a/jso/impl/pom.xml b/jso/impl/pom.xml
index ae7de9d90..f2c9e9bf3 100644
--- a/jso/impl/pom.xml
+++ b/jso/impl/pom.xml
@@ -35,7 +35,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs
org.teavm
- teavm-jso
+ teavm-jso-apis
${project.version}
diff --git a/platform/pom.xml b/platform/pom.xml
index 55be15bc3..6299a95bc 100644
--- a/platform/pom.xml
+++ b/platform/pom.xml
@@ -37,7 +37,7 @@
org.teavm
- teavm-jso
+ teavm-jso-apis
${project.version}
diff --git a/pom.xml b/pom.xml
index a5e460bf3..e10fe10f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,7 @@
core
classlib
jso/core
+ jso/apis
jso/impl
html4j
samples
diff --git a/tests/pom.xml b/tests/pom.xml
index 1e69e489d..f7a6d202d 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -45,12 +45,12 @@
org.teavm
- teavm-jso
+ teavm-jso-apis
${project.version}
org.teavm
- teavm-jso
+ teavm-jso-apis
${project.version}
tests
compile
@@ -68,13 +68,6 @@
org.teavm
teavm-maven-plugin
${project.version}
-
-
- org.teavm
- teavm-platform
- ${project.version}
-
-
generate-javascript-tests
diff --git a/tools/eclipse/plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java b/tools/eclipse/plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
index ef0db33ff..41c2184b7 100644
--- a/tools/eclipse/plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
+++ b/tools/eclipse/plugin/src/main/java/org/teavm/eclipse/TeaVMProjectBuilder.java
@@ -244,6 +244,9 @@ public class TeaVMProjectBuilder extends IncrementalProjectBuilder {
private void removeMarkers(TeaVMProfile profile) throws CoreException {
for (IProject project : getProject().getWorkspace().getRoot().getProjects()) {
+ if (!project.isOpen()) {
+ continue;
+ }
IMarker[] markers = project.findMarkers(TeaVMEclipsePlugin.PROBLEM_MARKER_ID, true,
IResource.DEPTH_INFINITE);
for (IMarker marker : markers) {