diff --git a/.bazelproject b/.bazelproject
index 03a69f4..73d0819 100644
--- a/.bazelproject
+++ b/.bazelproject
@@ -17,6 +17,7 @@
   .
 
 targets:
+  -//docs/...
   //kotlin/builder:for_ide
   //:all_tests
   //examples/...
diff --git a/README.md b/README.md
index 9bfe029..2c8f572 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@
 [Skydoc documentation](https://bazelbuild.github.io/rules_kotlin)
 
 # Announcements
+* <b>Jun 29, 2018.</b> The commits from this date forward are compatible with bazel `>=0.14`. JDK9 host issues were 
+  fixed as well some other deprecations. I recommend skipping `0.15.0` if you   are on a Mac. 
 * <b>May 25, 2018.</b> Test "friend" support. A single friend dep can be provided to `kt_jvm_test` which allows the test
   to access internal members of the module under test.
 * <b>February 15, 2018.</b> Toolchains for the JVM rules. Currently this allow tweaking: 
diff --git a/WORKSPACE b/WORKSPACE
index f7146f8..c69d24f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -14,11 +14,11 @@
 workspace(name="io_bazel_rules_kotlin")
 load("//kotlin/internal:bootstrap.bzl",github_archive="github_archive")
 
-github_archive(
-    name = "com_google_protobuf",
-    repo = "google/protobuf",
-    commit = "106ffc04be1abf3ff3399f54ccf149815b287dd9",
-)
+#github_archive(
+#    name = "com_google_protobuf",
+#    repo = "google/protobuf",
+#    commit = "106ffc04be1abf3ff3399f54ccf149815b287dd9",
+#)
 
 github_archive(
     name = "build_bazel_rules_nodejs",
diff --git a/kotlin/builder/BUILD b/kotlin/builder/BUILD
index a268bbf..b14900b 100644
--- a/kotlin/builder/BUILD
+++ b/kotlin/builder/BUILD
@@ -23,7 +23,9 @@
 
 # Common depset for the builder.
 _COMMON_DEPS = [
-    "//kotlin/builder/proto",
+    "//kotlin/builder/proto:deps",
+    "//kotlin/builder/proto:kotlin_model",
+    "//kotlin/builder/proto:worker",
     "@com_github_jetbrains_kotlin//:preloader",
     "@io_bazel_rules_kotlin_com_google_protobuf_protobuf_java//jar",
     "@io_bazel_rules_kotlin_com_google_protobuf_protobuf_java_util//jar",
diff --git a/kotlin/builder/proto/BUILD b/kotlin/builder/proto/BUILD
index 5d5550f..8bc369b 100644
--- a/kotlin/builder/proto/BUILD
+++ b/kotlin/builder/proto/BUILD
@@ -12,45 +12,45 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
-proto_library(
-    name = "kotlin_model_proto",
-    srcs = [":kotlin_model.proto"],
-    visibility=["//visibility:public"]
-)
-
-java_proto_library(
-    name = "kotlin_model_java_proto",
-    deps = [":kotlin_model_proto"]
-)
-
-_PROTO_LIBS=["deps", "worker_protocol"]
-
-[proto_library(
-    name="%s_proto" % lib,
-    srcs=["%s.proto" % lib]
-    ) for lib in _PROTO_LIBS]
-
-[java_proto_library(
-    name="%s_java_proto" % lib,
-    deps=["%s_proto" % lib],
-    ) for lib in _PROTO_LIBS]
+# commented out till 0.16 is released. We aren't  prebuilding the libraries at the moment so it's fine.
+#proto_library(
+#    name = "kotlin_model_proto",
+#    srcs = [":kotlin_model.proto"],
+#    visibility=["//visibility:public"]
+#)
+#
+#java_proto_library(
+#    name = "kotlin_model_java_proto",
+#    deps = [":kotlin_model_proto"]
+#)
+#
+#_PROTO_LIBS=["deps", "worker_protocol"]
+#
+#[proto_library(
+#    name="%s_proto" % lib,
+#    srcs=["%s.proto" % lib]
+#    ) for lib in _PROTO_LIBS]
+#
+#[java_proto_library(
+#    name="%s_java_proto" % lib,
+#    deps=["%s_proto" % lib],
+#    ) for lib in _PROTO_LIBS]
+#
 
 java_import(
-    name = "proto",
-    jars = [
-        "jars/libdeps_proto-speed.jar",
-        "jars/libworker_protocol_proto-speed.jar",
-        "jars/libkotlin_model_proto-speed.jar"
-    ],
+    name = "deps",
+    jars = ["jars/libdeps_proto-speed.jar"],
     visibility = ["//kotlin/builder:__subpackages__"]
 )
 
-filegroup(
-    name = "files",
-    srcs = [
-        "jars/libdeps_proto-speed.jar",
-        "jars/libworker_protocol_proto-speed.jar"
-    ],
+java_import(
+    name = "worker",
+    jars = ["jars/libworker_protocol_proto-speed.jar"],
+    visibility = ["//kotlin/builder:__subpackages__"]
+)
+
+java_import(
+    name = "kotlin_model",
+    jars = ["jars/libkotlin_model_proto-speed.jar"],
     visibility = ["//kotlin/builder:__subpackages__"]
 )
\ No newline at end of file
diff --git a/kotlin/internal/compile.bzl b/kotlin/internal/compile.bzl
index b444c16..e08429a 100644
--- a/kotlin/internal/compile.bzl
+++ b/kotlin/internal/compile.bzl
@@ -18,7 +18,7 @@
 def _declare_output_directory(ctx, aspect, dir_name):
     return ctx.actions.declare_directory("_kotlinc/%s_%s/%s_%s" % (ctx.label.name, aspect, ctx.label.name, dir_name))
 
-def _kotlin_do_compile_action(ctx, rule_kind, output_jar, compile_jars, module_name, friend_paths, srcs, src_jars):
+def _kotlin_do_compile_action(ctx, rule_kind, output_jar, compile_jars, module_name, friend_paths, srcs):
     """Internal macro that sets up a Kotlin compile action.
 
     This macro only supports a single Kotlin compile operation for a rule.
@@ -35,8 +35,7 @@
     sourcegen_directory=_declare_output_directory(ctx, "jvm", "sourcegenfiles")
     temp_directory=_declare_output_directory(ctx, "jvm", "temp")
 
-
-    tc=ctx.toolchains[kt.defs.TOOLCHAIN_TYPE]
+    toolchain=ctx.toolchains[kt.defs.TOOLCHAIN_TYPE]
 
     args = [
         "--target_label", ctx.label,
@@ -51,21 +50,18 @@
         "--output_jdeps", ctx.outputs.jdeps.path,
         "--classpath", "\n".join([f.path for f in compile_jars.to_list()]),
         "--kotlin_friend_paths", "\n".join(friend_paths.to_list()),
-        "--kotlin_jvm_target", tc.jvm_target,
-        "--kotlin_api_version", tc.api_version,
-        "--kotlin_language_version", tc.language_version,
+        "--kotlin_jvm_target", toolchain.jvm_target,
+        "--kotlin_api_version", toolchain.api_version,
+        "--kotlin_language_version", toolchain.language_version,
         "--kotlin_module_name", module_name,
-        "--kotlin_passthrough_flags", "-Xcoroutines=%s" % tc.coroutines
+        "--kotlin_passthrough_flags", "-Xcoroutines=%s" % toolchain.coroutines
     ]
 
-    if len(srcs) == 0 and len(src_jars) == 0:
-        fail("srcs did not contain kotlin/java files or any srcjars")
+    if (len(srcs.kt) + len(srcs.java)) > 0:
+        args += ["--sources", "\n".join([s.path for s in (srcs.kt + srcs.java)])]
 
-    if len(srcs) > 0:
-        args += ["--sources", "\n".join(srcs)]
-
-    if len(src_jars) > 0:
-        args += ["--source_jars", "\n".join([sj.path for sj in src_jars])]
+    if len(srcs.src_jars) > 0:
+        args += ["--source_jars", "\n".join([sj.path for sj in srcs.src_jars])]
 
     # Collect and prepare plugin descriptor for the worker.
     plugin_info=plugins.merge_plugin_infos(ctx.attr.plugins + ctx.attr.deps)
@@ -76,19 +72,17 @@
     args_file = ctx.actions.declare_file(ctx.label.name + ".jar-2.params")
     ctx.actions.write(args_file, "\n".join(args))
 
-    # When a stratetegy isn't provided for the worker and the workspace is fresh then certain deps are not available under
-    # external/@com_github_jetbrains_kotlin/... that is why the classpath is added explicetly.
-    compile_inputs = (
-      depset([args_file]) +
-      ctx.files.srcs +
-      compile_jars +
-      ctx.files._kotlin_compiler_classpath +
-      ctx.files._kotlin_home +
-      ctx.files._jdk)
+    progress_message = "Compiling Kotlin %s { kt: %d, java: %d, srcjars: %d }" % (
+        ctx.label,
+        len(srcs.kt),
+        len(srcs.java),
+        len(srcs.src_jars)
+    )
 
-    ctx.action(
+    inputs, _, input_manifests = ctx.resolve_command(tools = [toolchain.kotlinbuilder])
+    ctx.actions.run(
         mnemonic = "KotlinCompile",
-        inputs = compile_inputs,
+        inputs = depset([args_file]) + inputs + ctx.files.srcs + compile_jars,
         outputs = [
             output_jar,
             ctx.outputs.jdeps,
@@ -97,16 +91,17 @@
             temp_directory,
             generated_classes_directory
         ],
-        executable = ctx.executable._kotlinw,
+        executable = toolchain.kotlinbuilder.files_to_run.executable,
         execution_requirements = {"supports-workers": "1"},
         arguments = ["@" + args_file.path],
-        progress_message="Compiling %d Kotlin source files to %s" % (len(ctx.files.srcs), output_jar.short_path),
+        progress_message = progress_message,
+        input_manifests = input_manifests
     )
 
 def _select_std_libs(ctx):
-    return ctx.files._kotlin_std
+    return ctx.toolchains[kt.defs.TOOLCHAIN_TYPE].jvm_stdlibs
 
-def _make_java_provider(ctx, input_deps=[], auto_deps=[], src_jars=[]):
+def _make_java_provider(ctx, srcs, input_deps=[], auto_deps=[]):
     """Creates the java_provider for a Kotlin target.
 
     This macro is distinct from the kotlin_make_providers as collecting the java_info is useful before the DefaultInfo is
@@ -122,6 +117,7 @@
     Returns:
     A JavaInfo provider.
     """
+    runtime = ctx.toolchains[kt.defs.TOOLCHAIN_TYPE].jvm_runtime
     deps=utils.collect_all_jars(input_deps)
     exported_deps=utils.collect_all_jars(getattr(ctx.attr, "exports", []))
 
@@ -129,7 +125,7 @@
     my_runtime_jars = exported_deps.transitive_runtime_jars + [ctx.outputs.jar]
 
     my_transitive_compile_jars = my_compile_jars + deps.transitive_compile_time_jars + exported_deps.transitive_compile_time_jars + auto_deps
-    my_transitive_runtime_jars = my_runtime_jars + deps.transitive_runtime_jars + exported_deps.transitive_runtime_jars + [ctx.file._kotlin_runtime] + auto_deps
+    my_transitive_runtime_jars = my_runtime_jars + deps.transitive_runtime_jars + exported_deps.transitive_runtime_jars + runtime + auto_deps
 
     # collect the runtime jars from the runtime_deps attribute.
     for jar in ctx.attr.runtime_deps:
@@ -139,13 +135,13 @@
         use_ijar = False,
         # A list or set of output source jars that contain the uncompiled source files including the source files
         # generated by annotation processors if the case.
-        source_jars= src_jars + utils.actions.maybe_make_srcsjar(ctx),
+        source_jars = utils.actions.maybe_make_srcsjar(ctx, srcs),
         # A list or a set of jars that should be used at compilation for a given target.
         compile_time_jars = my_compile_jars,
         # A list or a set of jars that should be used at runtime for a given target.
-        runtime_jars=my_runtime_jars,
-        transitive_compile_time_jars= my_transitive_compile_jars,
-        transitive_runtime_jars=my_transitive_runtime_jars
+        runtime_jars = my_runtime_jars,
+        transitive_compile_time_jars = my_transitive_compile_jars,
+        transitive_runtime_jars = my_transitive_runtime_jars
     )
 
 def _make_providers(ctx, java_info, module_name, transitive_files=depset(order="default")):
@@ -207,13 +203,10 @@
 
     deps = ctx.attr.deps + getattr(ctx.attr, "friends", [])
 
-    srcs = []
-    src_jars = []
-    for f in ctx.files.srcs:
-        if f.path.endswith(".kt") or f.path.endswith(".java"):
-            srcs.append(f.path)
-        elif f.path.endswith(".srcjar"):
-            src_jars.append(f)
+    srcs = utils.partition_srcs(ctx.files.srcs)
+
+    if (len(srcs.kt) + len(srcs.java) == 0) and len(srcs.src_jars) == 0:
+        fail("no sources provided")
 
     # setup the compile action.
     _kotlin_do_compile_action(
@@ -223,8 +216,7 @@
         compile_jars = utils.collect_jars_for_compile(deps) + kotlin_auto_deps,
         module_name = module_name,
         friend_paths = friend_paths,
-        srcs = srcs,
-        src_jars = src_jars
+        srcs = srcs
     )
 
     # setup the merge action if needed.
@@ -232,7 +224,7 @@
         utils.actions.fold_jars(ctx, output_jar, output_merge_list)
 
     # create the java provider but the kotlin and default provider cannot be created here.
-    return _make_java_provider(ctx, deps, kotlin_auto_deps, src_jars)
+    return _make_java_provider(ctx, srcs, deps, kotlin_auto_deps)
 
 compile = struct(
     compile_action = _compile_action,
diff --git a/kotlin/internal/utils.bzl b/kotlin/internal/utils.bzl
index d7890a4..fd34a66 100644
--- a/kotlin/internal/utils.bzl
+++ b/kotlin/internal/utils.bzl
@@ -30,6 +30,25 @@
         module_name = (ctx.label.package.lstrip("/").replace("/","_") + "-" + ctx.label.name.replace("/", "_"))
     return module_name
 
+def _partition_srcs(srcs):
+    kt_srcs = []
+    java_srcs = []
+    src_jars = []
+
+    for f in srcs:
+        if f.path.endswith(".kt"):
+            kt_srcs.append(f)
+        elif f.path.endswith(".java"):
+            java_srcs.append(f)
+        elif f.path.endswith(".srcjar"):
+            src_jars.append(f)
+
+    return struct (
+        kt = kt_srcs,
+        java = java_srcs,
+        src_jars = src_jars
+    )
+
 # DEPSET UTILS #################################################################################################################################################
 def _select_compile_jars(dep):
     """selects the correct compile time jar from a java provider"""
@@ -141,25 +160,32 @@
     return resources_jar_output
 
 # SRC JARS #####################################################################################################################################################
-def _maybe_make_srcsjar_action(ctx):
-    if len(ctx.files.srcs) > 0:
+def _maybe_make_srcsjar_action(ctx, srcs):
+    source_files = srcs.kt + srcs.java
+    if (len(source_files) + len(srcs.src_jars)) > 0:
         output_srcjar = ctx.actions.declare_file(ctx.label.name + "-sources.jar")
+
         args = ["--output", output_srcjar.path]
-        for i in ctx.files.srcs:
-            args += ["--resources", i.path]
+
+        for sj in srcs.src_jars:
+            args += ["--sources", sj.path]
+
+        for sf in source_files:
+            args += ["--resources", sf.path]
 
         ctx.action(
             mnemonic = "KotlinPackageSources",
-            inputs = ctx.files.srcs,
+            inputs = source_files + srcs.src_jars,
             outputs = [output_srcjar],
             executable = ctx.executable._singlejar,
             arguments = args,
-            progress_message="Creating Kotlin srcjar from %d srcs" % len(ctx.files.srcs),
+            progress_message="Creating Kotlin srcjar from %d srcs" % len(source_files),
         )
         return [output_srcjar]
     else:
         return []
 
+
 # PACKAGE JARS #################################################################################################################################################
 def _fold_jars_action(ctx, output_jar, input_jars):
     args=["--output", output_jar.path]
@@ -213,5 +239,6 @@
     collect_all_jars = _collect_all_jars,
     collect_jars_for_compile = _collect_jars_for_compile,
     restore_label = _restore_label,
-    derive_module_name = _derive_module_name
+    derive_module_name = _derive_module_name,
+    partition_srcs = _partition_srcs
 )
diff --git a/kotlin/kotlin.bzl b/kotlin/kotlin.bzl
index 91da083..2ecd9a5 100644
--- a/kotlin/kotlin.bzl
+++ b/kotlin/kotlin.bzl
@@ -119,52 +119,17 @@
 )
 load("//third_party/jvm:workspace.bzl", _maven_dependencies="maven_dependencies")
 
-# _kt.defs.KT_COMPILER_REPO can't be used till skydoc is removed
-KT_COMPILER_REPO="com_github_jetbrains_kotlin"
-
-
 ########################################################################################################################
 # Rule Attributes
 ########################################################################################################################
 _implicit_deps = {
-    "_kotlin_compiler_classpath": attr.label_list(
-        allow_files = True,
-        default = [
-            Label("@" + KT_COMPILER_REPO + "//:compiler"),
-            Label("@" + KT_COMPILER_REPO + "//:reflect"),
-            Label("@" + KT_COMPILER_REPO + "//:script-runtime"),
-        ],
-    ),
-    "_kotlin_home": attr.label(
-        default = Label("@" + KT_COMPILER_REPO + "//:home"),
-        allow_files = True,
-        cfg = "host",
-    ),
-    "_kotlinw": attr.label(
-        default = Label("//kotlin/builder"),
-        executable = True,
-        cfg = "host",
-    ),
-    "_kotlin_runtime": attr.label(
-        single_file = True,
-        default = Label("@" + KT_COMPILER_REPO + "//:runtime"),
-    ),
-    "_kotlin_std": attr.label_list(default = [
-        Label("@" + KT_COMPILER_REPO + "//:stdlib"),
-        Label("@" + KT_COMPILER_REPO + "//:stdlib-jdk7"),
-        Label("@" + KT_COMPILER_REPO + "//:stdlib-jdk8"),
-    ]),
     "_kotlin_toolchain": attr.label_list(
         default = [
             Label("@io_bazel_rules_kotlin//kotlin:kt_toolchain_ide_info"),
         ],
+        cfg="host",
         allow_files = False,
     ),
-    "_kotlin_reflect": attr.label(
-        single_file = True,
-        default =
-            Label("@" + KT_COMPILER_REPO + "//:reflect"),
-    ),
     "_singlejar": attr.label(
         executable = True,
         cfg = "host",
@@ -183,12 +148,10 @@
         default = Label("@bazel_tools//tools/jdk:java"),
         allow_files = True,
     ),
-    "_jdk": attr.label(
-        default = Label("@bazel_tools//tools/jdk"),
+    "_java_stub_template": attr.label(
         cfg = "host",
-        allow_files = True,
+        default = Label("@kt_java_stub_template//file"),
     ),
-    "_java_stub_template": attr.label(default = Label("@kt_java_stub_template//file")),
 }
 
 _common_attr = dict(_implicit_deps.items() + {
diff --git a/kotlin/toolchains.bzl b/kotlin/toolchains.bzl
index 9666b88..64359ab 100644
--- a/kotlin/toolchains.bzl
+++ b/kotlin/toolchains.bzl
@@ -43,8 +43,21 @@
 ```
 """
 
+_KT_COMPILER_REPO="com_github_jetbrains_kotlin"
+
 # The toolchain rules are not made private, at least the jvm ones so that they may be introspected in Intelij.
 _common_attrs = {
+    "kotlin_home": attr.label(
+        default = Label("@" + _KT_COMPILER_REPO + "//:home"),
+        allow_files = True,
+        cfg = "host"
+    ),
+    "kotlinbuilder": attr.label(
+        default = Label("//kotlin/builder"),
+        executable = True,
+        allow_files = True,
+        cfg = "host",
+    ),
     "language_version": attr.string(
         default = "1.2",
         values = [
@@ -70,6 +83,17 @@
 }
 
 _kt_jvm_attrs = dict(_common_attrs.items() + {
+    "jvm_runtime": attr.label(
+        single_file = True,
+        default = Label("@" + _KT_COMPILER_REPO + "//:runtime"),
+    ),
+    "jvm_stdlibs": attr.label_list(
+        default = [
+            Label("@" + _KT_COMPILER_REPO + "//:stdlib"),
+            Label("@" + _KT_COMPILER_REPO + "//:stdlib-jdk7"),
+            Label("@" + _KT_COMPILER_REPO + "//:stdlib-jdk8"),
+        ]
+    ),
     "jvm_target": attr.string(
         default = "1.8",
         values = [
@@ -84,8 +108,16 @@
         label = _utils.restore_label(ctx.label),
         language_version = ctx.attr.language_version,
         api_version = ctx.attr.api_version,
+        coroutines = ctx.attr.coroutines,
+
         jvm_target = ctx.attr.jvm_target,
-        coroutines = ctx.attr.coroutines
+
+
+        kotlinbuilder = ctx.attr.kotlinbuilder,
+        kotlin_home = ctx.files.kotlin_home,
+
+        jvm_runtime = ctx.files.jvm_runtime,
+        jvm_stdlibs = ctx.files.jvm_stdlibs
     )
     return struct(providers=[toolchain])
 
