diff --git a/src/graphics/lib/compute/BUILD.gn b/src/graphics/lib/compute/BUILD.gn
index a32869f644dc5169f46f62c44925ddf8daa70f2a..c7adb06899a70956451b76659629c0d730e61207 100644
--- a/src/graphics/lib/compute/BUILD.gn
+++ b/src/graphics/lib/compute/BUILD.gn
@@ -7,5 +7,6 @@ group("compute") {
     "common",
     "common/vk",
     "hotsort",
+    "spinel/platforms/vk",
   ]
 }
diff --git a/src/graphics/lib/compute/spinel/BUILD.gn b/src/graphics/lib/compute/spinel/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..3abee6ff08af727cde05ebb4eb5414688b1e682c
--- /dev/null
+++ b/src/graphics/lib/compute/spinel/BUILD.gn
@@ -0,0 +1,49 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("spinel") {
+  public = [
+    "spinel.h",
+    "spinel_types.h",
+    "spinel_result.h",
+    "spinel_assert.h",
+  ]
+  friend = [
+    "platforms/vk"
+  ]
+  sources = [
+    "allocator_host.c",
+    "allocator_host.h",
+    "composition.c",
+    "composition.h",
+    "context.c",
+    "context.h",
+    "core.h",
+    "core_c.h",
+    "handle.h",
+    "path_builder.c",
+    "path_builder.h",
+    "platforms",
+    "raster_builder.c",
+    "raster_builder.h",
+    "spinel.h",
+    "spinel_assert.c",
+    "spinel_assert.h",
+    "spinel_result.h",
+    "spinel_types.h",
+    "state_assert.h",
+    "styling.c",
+    "styling.h",
+    "suballocator.c",
+    "suballocator.h",
+    "weakref.c",
+    "weakref.h",
+  ]
+  include_dirs = [
+    "//src/graphics/lib/compute",
+  ]
+  deps = [
+    "//src/graphics/lib/compute/common",
+  ]
+}
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/BUILD.gn b/src/graphics/lib/compute/spinel/platforms/vk/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..2b2d6e5096aa7ec9cb0267faeedf8a38960cc38e
--- /dev/null
+++ b/src/graphics/lib/compute/spinel/platforms/vk/BUILD.gn
@@ -0,0 +1,61 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("vk") {
+  public = [
+    "spinel_vk.h",
+    "spinel_vk_types.h",
+  ]
+  sources = [
+    "allocator_device.c",
+    "allocator_device.h",
+    "block_pool.c",
+    "block_pool.h",
+    "cb_pool.c",
+    "cb_pool.h",
+    "composition_impl.c",
+    "composition_impl.h",
+    "device.c",
+    "device.h",
+    "expand_x.h",
+    "extent.c",
+    "extent.h",
+    "fence_pool.c",
+    "fence_pool.h",
+    "handle_pool.c",
+    "handle_pool.h",
+    "path_builder_impl.c",
+    "path_builder_impl.h",
+    "queue_pool.c",
+    "queue_pool.h",
+    "raster_builder_impl.c",
+    "raster_builder_impl.h",
+    "render_impl.c",
+    "render_impl.h",
+    "ring.c",
+    "ring.h",
+    "semaphore_pool.c",
+    "semaphore_pool.h",
+    "spinel_vk.h",
+    "spinel_vk_types.h",
+    "styling_impl.c",
+    "styling_impl.h",
+    "target.c",
+    "target_config.h",
+    "target_config_name.h",
+    "target_context_remove.h",
+    "target.h",
+    "target_layouts.h",
+  ]
+  include_dirs = [
+    "//src/graphics/lib/compute",
+    "//src/graphics/lib/compute/spinel",
+  ]
+  deps = [
+    "//src/graphics/lib/compute/spinel",
+    "//src/graphics/lib/compute/common",
+    "//src/graphics/lib/compute/common/vk",
+    "//third_party/vulkan_loader_and_validation_layers:vulkan",
+  ]
+}
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/composition_impl.c b/src/graphics/lib/compute/spinel/platforms/vk/composition_impl.c
index a10104c56e567cfec7e9fd1583cfd266c9b235e3..58c86aca96cd8e710f9fccfc21474a722af70341 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/composition_impl.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/composition_impl.c
@@ -607,6 +607,8 @@ spn_ci_block_until_unsealed_and_reseal(struct spn_composition_impl * const impl)
 //
 //
 
+#ifdef SPN_DISABLE_UNTIL_INTEGRATED
+
 static
 void
 spn_ci_complete_p_3(void * pfn_payload)
@@ -635,6 +637,8 @@ spn_ci_complete_p_3(void * pfn_payload)
   impl->state = SPN_CI_STATE_SEALED;
 }
 
+#endif
+
 //
 //
 //
@@ -1187,6 +1191,8 @@ spn_ci_release(struct spn_composition_impl * const impl)
 //
 //
 
+#ifdef SPN_DISABLE_UNTIL_INTEGRATED
+
 static
 void
 spn_ci_retain_and_lock(struct spn_composition_impl * const impl)
@@ -1205,6 +1211,8 @@ spn_composition_unlock_and_release(struct spn_composition_impl * const impl)
   spn_ci_release(impl);
 }
 
+#endif
+
 //
 //
 //
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/device.c b/src/graphics/lib/compute/spinel/platforms/vk/device.c
index 6a60fe2f0e37f1cb4165b678dbcf9daceb3764a0..caa29d061d912226981b0130545198b2447f9f8b 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/device.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/device.c
@@ -225,7 +225,7 @@ spn_device_lost(struct spn_device * const device)
 //
 
 spn_result
-spn_context_create_vk(struct spn_context *          * const context_p,
+spn_context_create_vk(spn_context_t                 * const context_p,
                       struct spn_device_vk          * const device_vk,
                       struct spn_target_image const * const target_image,
                       uint64_t                        const block_pool_size,
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/device.h b/src/graphics/lib/compute/spinel/platforms/vk/device.h
index 6c310a860cdf063f7dcc09c02b30b075de53e79c..9af61e0d6d3c4fe8d135ff6e1a518a3838665397 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/device.h
+++ b/src/graphics/lib/compute/spinel/platforms/vk/device.h
@@ -92,21 +92,10 @@ struct spn_device
 //
 
 //
-// Creation and disposal intitializes context and may rely on other
-// context resources like the scheduler
+// Creation and disposal intitializes the context and may rely on
+// other context resources like the scheduler
 //
 
-//
-// this is exposed here temporarily
-//
-
-spn_result
-spn_context_create_vk(struct spn_context *          * const context_p,
-                      struct spn_device_vk          * const device_vk,
-                      struct spn_target_image const * const target_image,
-                      uint64_t                        const block_pool_size,
-                      uint32_t                        const handle_count);
-
 //
 // Disable device because of a fatal error
 //
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/handle_pool.c b/src/graphics/lib/compute/spinel/platforms/vk/handle_pool.c
index 9dfe22011b29ec698b22a1ada9e17769ea2ad869..9257aba4ae6805339ae58aaf5369c62abba3bb6a 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/handle_pool.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/handle_pool.c
@@ -867,10 +867,6 @@ spn_device_handle_pool_release_d(struct spn_device              * const device,
       refcnt.d   -= 1;
       *refcnt_ptr = refcnt;
 
-#if 0
-      printf("%8u = { %u, %u }\n",handle,refcnt.h,refcnt.d);
-#endif
-
       if (refcnt.hd == 0) {
         spn_device_handle_pool_reclaim(device,handle_pool,reclaim_type,handle);
       }
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/render_impl.c b/src/graphics/lib/compute/spinel/platforms/vk/render_impl.c
index e9b958dd4d783f7b468db382f8e18332ca0b7ff3..5f0a4caa87d0d7578a450ca52884642029791c14 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/render_impl.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/render_impl.c
@@ -6,11 +6,9 @@
 //
 //
 
-#include <string.h>
-
 #include "render_impl.h"
 #include "spinel.h"
-#include "spinel_types_vk.h"
+#include "spinel_vk_types.h"
 #include "device.h"
 #include "target.h"
 #include "block_pool.h"
@@ -24,6 +22,12 @@
 //
 //
 
+#include <string.h>
+
+//
+//
+//
+
 struct spn_render_submit_ext_base
 {
   void                         * ext;
diff --git a/src/graphics/lib/compute/spinel/spinel_vk.h b/src/graphics/lib/compute/spinel/platforms/vk/spinel_vk.h
similarity index 64%
rename from src/graphics/lib/compute/spinel/spinel_vk.h
rename to src/graphics/lib/compute/spinel/platforms/vk/spinel_vk.h
index ee99379b8ba07fe0fae5c3e9a3cb85f8eda6f9c7..44af860aabb8f6ac5a17403e1f7c5c9a311e4676 100644
--- a/src/graphics/lib/compute/spinel/spinel_vk.h
+++ b/src/graphics/lib/compute/spinel/platforms/vk/spinel_vk.h
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SPN_ONCE_SPINEL_VK
-#define SPN_ONCE_SPINEL_VK
+#pragma once
 
 //
 //
@@ -13,11 +12,24 @@
 
 #include "spinel.h"
 
+//
+//
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //
 // CONTEXT CREATION: VULKAN
 //
 
-// create the vulkan context
+spn_result
+spn_context_create_vk(spn_context_t                 * const context_p,
+                      struct spn_device_vk          * const device_vk,
+                      struct spn_target_image const * const target_image,
+                      uint64_t                        const block_pool_size,
+                      uint32_t                        const handle_count);
 
 //
 // RENDER EXTENSION: VULKAN BUFFER
@@ -40,6 +52,8 @@ struct spn_render_submit_ext_vk_buffer
 //
 //
 
+#ifdef __cplusplus
+}
 #endif
 
 //
diff --git a/src/graphics/lib/compute/spinel/spinel_types_vk.h b/src/graphics/lib/compute/spinel/platforms/vk/spinel_vk_types.h
similarity index 93%
rename from src/graphics/lib/compute/spinel/spinel_types_vk.h
rename to src/graphics/lib/compute/spinel/platforms/vk/spinel_vk_types.h
index c3f7a9c89ef51c30d3e39275bbc2bb0afa684074..817a695d71092f04f07d7ec5adb41ac897fbd5a7 100644
--- a/src/graphics/lib/compute/spinel/spinel_types_vk.h
+++ b/src/graphics/lib/compute/spinel/platforms/vk/spinel_vk_types.h
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SPN_ONCE_SPINEL_TYPES_VK
-#define SPN_ONCE_SPINEL_TYPES_VK
+#pragma once
 
 //
 //
@@ -13,6 +12,8 @@
 
 #include "spinel_types.h"
 
+
+
 //
 // VK RENDER EXTENSIONS
 //
@@ -52,4 +53,10 @@ struct spn_render_submit_ext_vk_image
 //
 //
 
+#ifdef __cplusplus
+}
 #endif
+
+//
+//
+//
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/styling_impl.c b/src/graphics/lib/compute/spinel/platforms/vk/styling_impl.c
index a6e282f64536fb909c75d146b8a608e5cc1ba8a8..abcf6204ba1ceb41f7a7cf0e27040f69e8a88ef0 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/styling_impl.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/styling_impl.c
@@ -288,6 +288,8 @@ spn_si_release(struct spn_styling_impl * const impl)
 //
 //
 
+#ifdef SPN_DISABLED_UNTIL_INTEGRATED
+
 static
 void
 spn_si_retain_and_lock(struct spn_styling_impl * const impl)
@@ -306,6 +308,8 @@ spn_styling_unlock_and_release(struct spn_styling_impl * const impl)
   spn_si_release(impl);
 }
 
+#endif
+
 //
 //
 //
diff --git a/src/graphics/lib/compute/spinel/platforms/vk/target.c b/src/graphics/lib/compute/spinel/platforms/vk/target.c
index fbe8e9432eda7cbb0d0c4a16329b47bc209c2d97..971bc165ea015ec0ce865b8f66a369d76ce6448f 100644
--- a/src/graphics/lib/compute/spinel/platforms/vk/target.c
+++ b/src/graphics/lib/compute/spinel/platforms/vk/target.c
@@ -730,7 +730,7 @@ spn_target_create(struct spn_device_vk          * const vk,
 
 #define SPN_TARGET_PL_CREATE(_p_idx,_p_id,...)                          \
   {                                                                     \
-    const uint32_t pps = target->config.p.push_sizes.array[_p_idx];     \
+    uint32_t const pps = target->config.p.push_sizes.array[_p_idx];     \
                                                                         \
     if (pps == 0) {                                                     \
       plci.pushConstantRangeCount = 0;                                  \
diff --git a/src/graphics/lib/compute/spinel/spinel.h b/src/graphics/lib/compute/spinel/spinel.h
index 1118dd79eadd8c996302d209435a557d9d47eb92..fd4cc5bf09d5d1509d8be512dec756e4cc2c6a6b 100644
--- a/src/graphics/lib/compute/spinel/spinel.h
+++ b/src/graphics/lib/compute/spinel/spinel.h
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SPN_ONCE_SPINEL
-#define SPN_ONCE_SPINEL
+#pragma once
 
 //
 //
@@ -12,6 +11,14 @@
 #include "spinel_result.h"
 #include "spinel_types.h"
 
+//
+//
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //
 // CONTEXT
 //
@@ -222,7 +229,7 @@ spn_composition_reset(spn_composition_t composition);
 spn_result
 spn_composition_get_bounds(spn_composition_t composition, int32_t bounds[4]);
 
-#if 0
+#ifdef SPN_TODO
 // let's switch to a per place bounds using weakrefs -- clip 0 will be largest clip
 spn_result
 spn_composition_set_clip(spn_composition_t composition, int32_t const clip[4]);
@@ -326,12 +333,12 @@ spn_styling_group_layer(spn_styling_t               styling,
                         uint32_t              const n,
                         spn_styling_cmd_t * * const cmds);
 
-#if 0
-
 //
 // FIXME -- styling command encoders will be opaque
 //
 
+#ifdef SPN_DISABLE_UNTIL_INTEGRATED
+
 void
 spn_styling_layer_fill_rgba_encoder(spn_styling_cmd_t * cmds, float const rgba[4]);
 
@@ -376,6 +383,8 @@ spn_render(spn_context_t context, spn_render_submit_t const * const submit);
 //
 //
 
+#ifdef __cplusplus
+}
 #endif
 
 //
diff --git a/src/graphics/lib/compute/spinel/spinel_assert.h b/src/graphics/lib/compute/spinel/spinel_assert.h
index 950abbc47d3929d7e8b23d2e9d96af4fe7253ac9..876f38cfd43a402a32d103f3f9f840e428b07e8e 100644
--- a/src/graphics/lib/compute/spinel/spinel_assert.h
+++ b/src/graphics/lib/compute/spinel/spinel_assert.h
@@ -14,6 +14,14 @@
 //
 //
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+//
+//
+
 char const *
 spn_result_to_string(spn_result const result);
 
@@ -50,3 +58,11 @@ spn_assert_n(char const * const file,
 //
 //
 //
+
+#ifdef __cplusplus
+}
+#endif
+
+//
+//
+//
diff --git a/src/graphics/lib/compute/spinel/spinel_result.h b/src/graphics/lib/compute/spinel/spinel_result.h
index 7c9590746da2b5d2c743f6318fbe221401eb07eb..5950ef6985e511c544746b2be628dd0ec94eaa77 100644
--- a/src/graphics/lib/compute/spinel/spinel_result.h
+++ b/src/graphics/lib/compute/spinel/spinel_result.h
@@ -2,8 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SPN_ONCE_SPINEL_RESULT
-#define SPN_ONCE_SPINEL_RESULT
+#pragma once
+
+//
+//
+//
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 //
 // FIXME -- harvest error codes that are no longer used
@@ -52,6 +59,8 @@ typedef enum spn_result {
 //
 //
 
+#ifdef __cplusplus
+}
 #endif
 
 //
diff --git a/src/graphics/lib/compute/spinel/spinel_types.h b/src/graphics/lib/compute/spinel/spinel_types.h
index 310134a1b3ef4638d025a79fb2dc4c56dfefdf67..583421854420ac154bb1df9dc80da459e1866e86 100644
--- a/src/graphics/lib/compute/spinel/spinel_types.h
+++ b/src/graphics/lib/compute/spinel/spinel_types.h
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SPN_ONCE_SPINEL_TYPES
-#define SPN_ONCE_SPINEL_TYPES
+#pragma once
 
 //
 //
@@ -16,6 +15,14 @@
 //
 //
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+//
+//
+
 typedef struct spn_context        * spn_context_t;
 typedef struct spn_path_builder   * spn_path_builder_t;
 typedef struct spn_raster_builder * spn_raster_builder_t;
@@ -75,4 +82,10 @@ typedef struct spn_render_submit
 //
 //
 
+#ifdef __cplusplus
+}
 #endif
+
+//
+//
+//
diff --git a/src/graphics/lib/compute/spinel/demo/main.c b/src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/main.c
similarity index 99%
rename from src/graphics/lib/compute/spinel/demo/main.c
rename to src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/main.c
index cf8a92a2ae45ccea820b3a37133ccc750346dd50..462eb960de818565455e105134b5c47384d3d9dc 100644
--- a/src/graphics/lib/compute/spinel/demo/main.c
+++ b/src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/main.c
@@ -29,7 +29,7 @@
 //
 //
 
-#include "spinel.h"
+#include "spinel_vk.h"
 #include "spinel_assert.h"
 
 //
diff --git a/src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/meta/spinel_vk_path_builder.cmx b/src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/meta/spinel_vk_path_builder.cmx
new file mode 100644
index 0000000000000000000000000000000000000000..1c51dfe9310ab622e5b0a47e22531a541315c1fd
--- /dev/null
+++ b/src/graphics/lib/compute/spinel/tests/spinel_vk_path_builder/meta/spinel_vk_path_builder.cmx
@@ -0,0 +1,15 @@
+{
+  "program": {
+    "binary": "bin/app"
+  },
+  "sandbox": {
+    "features": [
+      "vulkan"
+    ],
+    "services": [
+      "fuchsia.sysmem.Allocator",
+      "fuchsia.vulkan.loader.Loader",
+      "fuchsia.tracelink.Registry"
+    ]
+  }
+}