diff --git a/.rive_head b/.rive_head
index 067c25c..24f2dd3 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-6bafbf16778f2e31500808f603dcd57b8bd244ba
+99b96518a27fd47f231ba4bb17148ac2099e14d1
diff --git a/skia/dependencies/cache_helper.sh b/skia/dependencies/cache_helper.sh
new file mode 100755
index 0000000..1295ae4
--- /dev/null
+++ b/skia/dependencies/cache_helper.sh
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+set -e
+
+# required envs
+RIVE_RUNTIME_DIR="${RIVE_RUNTIME_DIR:=../..}"
+SKIA_DIR_NAME="${SKIA_DIR_NAME:=skia}"
+SKIA_REPO=${SKIA_REPO:-https://github.com/rive-app/skia}
+SKIA_BRANCH=${SKIA_BRANCH:-rive}
+COMPILE_TARGET="${COMPILE_TARGET:-$(uname -s)_$(uname -m)}"
+CACHE_NAME="${CACHE_NAME:=skia}"
+OUTPUT_CACHE="${OUTPUT_CACHE:=out}"
+MAKE_SKIA_FILE="${MAKE_SKIA_FILE:=make_skia_android.sh}"
+
+# lets just make sure this exists, or fail
+if [[ ! -d $RIVE_RUNTIME_DIR ]]
+then
+    echo "Cannot find $RIVE_RUNTIME_DIR, bad setup"
+    exit 1
+fi
+
+# determeined envs
+SKIA_DEPENDENCIES_DIR="$RIVE_RUNTIME_DIR/skia/dependencies"
+SKIA_DIR="$SKIA_DEPENDENCIES_DIR/$SKIA_DIR_NAME"
+
+SKIA_COMMIT_HASH="$(git ls-remote $SKIA_REPO $SKIA_BRANCH | awk '{print $1}')"
+
+ARCHIVE_CONTENTS_NAME=archive_contents
+ARCHIVE_CONTENTS_PATH="$SKIA_DIR/$ARCHIVE_CONTENTS_NAME"
+echo $ARCHIVE_CONTENTS_PATH
+
+ARCHIVE_CONTENTS="missing"
+if test -f "$ARCHIVE_CONTENTS_PATH"; then
+    ARCHIVE_CONTENTS="$(cat $ARCHIVE_CONTENTS_PATH)"
+fi
+
+# TODO: could add OS_RELEASE in if portability is a problem
+# TODO: hmm how do we know the make skia script.. i guess its an arg? a back arg?
+if [[ $OSTYPE == 'darwin'* ]]; then
+    # md5 -r == md5sum
+    CONFIGURE_VERSION=$(md5 -r cache_helper.sh|awk '{print $1}')
+    MAKE_SKIA_HASH=$(md5 -r $SKIA_DEPENDENCIES_DIR/$MAKE_SKIA_FILE|awk '{print $1}')
+    BUILD_HASH=$(md5 -r -s "$SKIA_COMMIT_HASH $MAKE_SKIA_HASH $CONFIGURE_VERSION" | awk '{print $1}')
+else 
+    CONFIGURE_VERSION=$(md5sum cache_helper.sh|awk '{print $1}')
+    MAKE_SKIA_HASH=$(md5sum $SKIA_DEPENDENCIES_DIR/$MAKE_SKIA_FILE|awk '{print $1}')
+    BUILD_HASH=$(echo "$SKIA_COMMIT_HASH $MAKE_SKIA_HASH $CONFIGURE_VERSION" | md5sum | awk '{print $1}')
+fi
+
+echo "Created hash: $BUILD_HASH from skia_commit=$SKIA_COMMIT_HASH make_skia_script=$MAKE_SKIA_HASH configure_script=$CONFIGURE_VERSION"
+
+EXPECTED_ARCHIVE_CONTENTS="$BUILD_HASH"_"$COMPILE_TARGET"
+
+ARCHIVE_FILE_NAME="$CACHE_NAME"_"$EXPECTED_ARCHIVE_CONTENTS.tar.gz"
+ARCHIVE_URL="https://cdn.2dimensions.com/archives/$ARCHIVE_FILE_NAME"
+ARCHIVE_PATH="$SKIA_DIR/$ARCHIVE_FILE_NAME"
+
+pull_cache() {
+    echo "Grabbing cached build from $ARCHIVE_URL"
+    mkdir -p $SKIA_DIR
+    curl --output $SKIA_DIR/$ARCHIVE_FILE_NAME $ARCHIVE_URL 
+    pushd $SKIA_DIR
+    tar -xf $ARCHIVE_FILE_NAME out include archive_contents third_party
+}
+
+is_build_cached_remotely() {
+    echo "Checking for cache build $ARCHIVE_URL"
+    if curl --output /dev/null --head --silent --fail $ARCHIVE_URL
+    then 
+        return 0
+    else 
+        return 1
+    fi
+}
+
+upload_cache() {
+    pushd $SKIA_DEPENDENCIES_DIR
+    echo $EXPECTED_ARCHIVE_CONTENTS > $SKIA_DIR_NAME/$ARCHIVE_CONTENTS_NAME
+    # not really sure about this third party biz
+    # also we are caching on a per architecture path here, but out could contain more :thinking:
+    tar -C $SKIA_DIR_NAME -cf $SKIA_DIR_NAME/$ARCHIVE_FILE_NAME $OUTPUT_CACHE $ARCHIVE_CONTENTS_NAME include third_party/libpng third_party/externals/libpng
+    popd
+    # # if we're configured to upload the archive back into our cache, lets do it! 
+    echo "Uploading to s3://2d-public/archives/$ARCHIVE_FILE_NAME"
+    ls $ARCHIVE_PATH
+    aws s3 cp $ARCHIVE_PATH s3://2d-public/archives/$ARCHIVE_FILE_NAME
+}
+
+
+
+is_build_cached_locally() {
+    if [ "$EXPECTED_ARCHIVE_CONTENTS" == "$ARCHIVE_CONTENTS" ]; then 
+        return 0
+    else
+        return 1
+    fi
+}
\ No newline at end of file
diff --git a/skia/dependencies/get_skia2.sh b/skia/dependencies/get_skia2.sh
new file mode 100755
index 0000000..3172789
--- /dev/null
+++ b/skia/dependencies/get_skia2.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+set -e
+
+# Requires depot_tools and git: 
+#   https://skia.org/user/download
+# Build notes:
+#   https://skia.org/user/build
+# GLFW requires CMake
+
+SKIA_REPO="${SKIA_REPO:-https://github.com/rive-app/skia}"
+SKIA_BRANCH="${SKIA_BRANCH:-rive}"
+
+# note: we have imports in recorder that rely on this being "skia"
+# either: change that in recorder, or check out skia into a subfolder
+# both have consequences. 
+SKIA_DIR_NAME="${SKIA_DIR_NAME:-skia}"
+
+_skiaExists() {
+    if test -d $SKIA_DIR_NAME/.git; then 
+        return 0
+    else 
+        return 1
+    fi
+}
+
+_skiaHasExpectedRemote() {
+    if test -d $SKIA_DIR_NAME/.git; then
+        pushd $SKIA_DIR_NAME
+        if git remote -v |grep "$SKIA_REPO"; then
+            popd
+            return 0
+        else 
+            popd
+            echo "Skia it is using the wrong remote."
+            return 1
+        fi 
+    else
+        echo "Skia is expected to be a git repo"
+        return 1
+    fi 
+}
+
+_updateSkia() {
+    pushd $SKIA_DIR_NAME
+    git fetch && git pull
+    popd
+}
+
+_cloneSkia() {
+    echo "Cloning Skia [$SKIA_REPO : $SKIA_BRANCH] into $SKIA_DIR_NAME."
+    git clone $SKIA_REPO $SKIA_DIR_NAME
+}
+
+_removeSkia(){
+    echo "Removing skia folder."
+    rm -rf $SKIA_DIR_NAME
+}
+
+getSkia () {
+    # -----------------------------
+    # Get Skia:
+    # -----------------------------
+    if _skiaExists; then 
+        if _skiaHasExpectedRemote; then 
+            _updateSkia
+        else 
+            _removeSkia
+            _cloneSkia
+        fi 
+    else 
+        _removeSkia
+        _cloneSkia
+    fi 
+
+    pushd $SKIA_DIR_NAME
+
+    echo "Checking out branch $SKIA_BRANCH"
+    git checkout $SKIA_BRANCH
+    python tools/git-sync-deps
+
+    popd 
+}
\ No newline at end of file
diff --git a/skia/dependencies/make_skia_android.sh b/skia/dependencies/make_skia_android.sh
new file mode 100755
index 0000000..e5ca2f3
--- /dev/null
+++ b/skia/dependencies/make_skia_android.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+set -ex
+
+source ./get_skia2.sh
+source ./cache_helper.sh
+
+ARCH=$1
+CONFIG=$2
+
+build_skia_android() {
+    cd $SKIA_DIR_NAME
+
+    if [ "$ARCH" != "x86" ] &&
+        [ "$ARCH" != "x64" ] &&
+        [ "$ARCH" != "arm" ] &&
+        [ "$ARCH" != "arm64" ]; then
+        printf "Invalid architecture: '%s'. Choose one between 'x86', \
+            'x64', \
+            'arm', \
+            or 'arm64'" "$ARCH"
+        exit 1
+    fi
+
+    BUILD_FLAGS=
+    EXTRA_CFLAGS=
+    if [ "$CONFIG" = "debug" ]; then
+        BUILD_FLAGS="is_official_build=false is_debug=true skia_enable_tools=false"
+    else # release
+        BUILD_FLAGS="is_official_build=true is_debug=false"
+        EXTRA_CFLAGS="\
+    \"-fno-rtti\",                          \
+    \"-flto=full\",                         \
+    \"-fembed-bitcode\",                    \
+    \"-DRIVE_OPTIMIZED\",                   \
+    \"-DSK_DISABLE_SKPICTURE\",             \
+    \"-DSK_DISABLE_TEXT\",                  \
+    \"-DSK_DISABLE_LEGACY_SHADERCONTEXT\",  \
+    \"-DSK_DISABLE_LOWP_RASTER_PIPELINE\",  \
+    \"-DSK_FORCE_RASTER_PIPELINE_BLITTER\", \
+    \"-DSK_DISABLE_AAA\",                   \
+    \"-DSK_DISABLE_EFFECT_DESERIALIZATION\" \
+    "
+    fi
+
+    # Useful for debugging:
+    # bin/gn args --list out/${ARCH}
+
+    bin/gn gen out/"${CONFIG}"/"${ARCH}" --args=" \
+        ndk=\"${NDK_PATH}\" \
+        target_cpu=\"${ARCH}\" \
+        extra_cflags=[                              \
+            ${EXTRA_CFLAGS}                         \
+            ]                                       \
+        \
+        ${BUILD_FLAGS} \
+
+        skia_gl_standard=\"gles\" 
+        skia_use_zlib=true \
+        skia_use_egl=true \
+        skia_use_gl=true \
+        skia_enable_gpu=true \
+        skia_use_libpng_decode=true \
+        skia_use_libpng_encode=true \
+
+        skia_use_angle=false \
+        skia_use_dng_sdk=false \
+        
+        skia_use_expat=false \
+        skia_use_fontconfig=false \
+        skia_use_system_freetype2=false \
+        skia_use_icu=false \
+        skia_use_libheif=false \
+        skia_use_system_libpng=false \
+        skia_use_system_libjpeg_turbo=false \
+        skia_use_libjpeg_turbo_encode=false \
+        skia_use_libjpeg_turbo_decode=true \
+        skia_use_libwebp_encode=false \
+        skia_use_libwebp_decode=false \
+        skia_use_lua=false \
+        skia_use_piex=false \
+        skia_use_vulkan=false \
+        
+        skia_use_system_zlib=false \
+        skia_enable_fontmgr_empty=false \
+        skia_enable_spirv_validation=false \
+        skia_enable_pdf=false \
+        skia_enable_skottie=false \
+        "
+
+    ninja -C out/"${CONFIG}"/"${ARCH}"
+    cd ..
+}
+
+if is_build_cached_locally; then 
+    echo "Build is cached, nothing to do."
+else
+    if is_build_cached_remotely; then 
+        pull_cache
+    else 
+        getSkia
+        build_skia_android
+        # hmm not the appiest with this guy
+        OUTPUT_CACHE=out/release/$ARCH upload_cache
+    fi 
+fi
\ No newline at end of file
diff --git a/skia/dependencies/make_skia_recorder.sh b/skia/dependencies/make_skia_recorder.sh
index 9f14a9a..0cd348b 100755
--- a/skia/dependencies/make_skia_recorder.sh
+++ b/skia/dependencies/make_skia_recorder.sh
@@ -1,82 +1,71 @@
 #!/bin/bash
 set -ex
 
-SKIA_REPO=https://github.com/rive-app/skia
-SKIA_BRANCH=rive
-SKIA_DIR=${SKIA_DIR:-skia}
+source ./get_skia2.sh
+source ./cache_helper.sh
 
-# -----------------------------
-# Get & Build Skia
-# -----------------------------
-if test -d $SKIA_DIR/.git; then
-    echo "Skia Recorder is a .git repo"
+build_skia_recorder() {
+    cd $SKIA_DIR_NAME
+    
+    bin/gn gen out/static --args=" \
+        is_official_build=true \
+        extra_cflags=[
+        \"-fno-rtti\",\
+        \"-DSK_DISABLE_SKPICTURE\",\
+        \"-DSK_DISABLE_TEXT\",\
+        \"-DSK_DISABLE_LEGACY_SHADERCONTEXT\",\
+        \"-DSK_DISABLE_LOWP_RASTER_PIPELINE\",\
+        \"-DSK_FORCE_RASTER_PIPELINE_BLITTER\",\
+        \"-DSK_DISABLE_AAA\",\
+        \"-DSK_DISABLE_EFFECT_DESERIALIZATION\"\
+        ] \
+        rive_use_picture=true \
+        skia_use_angle=false \
+        skia_use_dng_sdk=false \
+        skia_use_egl=false \
+        skia_use_expat=false \
+        skia_use_fontconfig=false \
+        skia_use_freetype=false \
+        skia_use_icu=false \
+        skia_use_libheif=false \
+        skia_use_system_libpng=false \
+        skia_use_system_libjpeg_turbo=false \
+        skia_use_libjpeg_turbo_encode=false \
+        skia_use_libjpeg_turbo_decode=true \
+        skia_use_libwebp_encode=false \
+        skia_use_libwebp_decode=true \
+        skia_use_system_libwebp=false \
+        skia_use_lua=false \
+        skia_use_piex=false \
+        skia_use_vulkan=false \
+        skia_use_metal=false \
+        skia_use_gl=true \
+        skia_use_zlib=true \
+        skia_use_system_zlib=false \
+        skia_enable_gpu=true \
+        skia_enable_fontmgr_empty=true \
+        skia_enable_spirv_validation=false \
+        skia_enable_pdf=false \
+        skia_use_libpng_encode = true \
+        skia_use_libpng_decode = true \
+        skia_enable_skottie = false \
+        skia_enable_tools = false \
+        skia_enable_skgpu_v1 = true \
+        skia_enable_skgpu_v2 = false \
+        "
+    ninja -C out/static
+
+    cd ..
+}
+
+if is_build_cached_locally; then 
+    echo "Build is cached, nothing to do."
 else
-    echo "Skia Recorder is not a .git repo, probably a cache, cleaning it out"
-    rm -rf $SKIA_DIR
-fi 
-
-if [ ! -d $SKIA_DIR ]; then
-	echo "Cloning Skia recorder."
-    git clone -j8 $SKIA_REPO $SKIA_DIR
-    cd $SKIA_DIR
-    git checkout $SKIA_BRANCH
-else
-    echo "Already have Skia recorder, update it."
-    cd $SKIA_DIR
-    git checkout $SKIA_BRANCH
-    git fetch
-    git pull
-fi
-
-python tools/git-sync-deps
-
-bin/gn gen out/static --args=" \
-    is_official_build=true \
-    extra_cflags=[
-      \"-fno-rtti\",\
-      \"-DSK_DISABLE_SKPICTURE\",\
-      \"-DSK_DISABLE_TEXT\",\
-      \"-DSK_DISABLE_LEGACY_SHADERCONTEXT\",\
-      \"-DSK_DISABLE_LOWP_RASTER_PIPELINE\",\
-      \"-DSK_FORCE_RASTER_PIPELINE_BLITTER\",\
-      \"-DSK_DISABLE_AAA\",\
-      \"-DSK_DISABLE_EFFECT_DESERIALIZATION\"\
-    ] \
-    rive_use_picture=true \
-    skia_use_angle=false \
-    skia_use_dng_sdk=false \
-    skia_use_egl=false \
-    skia_use_expat=false \
-    skia_use_fontconfig=false \
-    skia_use_freetype=false \
-    skia_use_icu=false \
-    skia_use_libheif=false \
-    skia_use_system_libpng=false \
-    skia_use_system_libjpeg_turbo=false \
-    skia_use_libjpeg_turbo_encode=false \
-    skia_use_libjpeg_turbo_decode=true \
-    skia_use_libwebp_encode=false \
-    skia_use_libwebp_decode=true \
-    skia_use_system_libwebp=false \
-    skia_use_lua=false \
-    skia_use_piex=false \
-    skia_use_vulkan=false \
-    skia_use_metal=false \
-    skia_use_gl=true \
-    skia_use_zlib=true \
-    skia_use_system_zlib=false \
-    skia_enable_gpu=true \
-    skia_enable_fontmgr_empty=true \
-    skia_enable_spirv_validation=false \
-    skia_enable_pdf=false \
-    skia_use_libpng_encode = true \
-    skia_use_libpng_decode = true \
-    skia_enable_skottie = false \
-    skia_enable_tools = false \
-    skia_enable_skgpu_v1 = true \
-    skia_enable_skgpu_v2 = false \
-    "
-ninja -C out/static
-du -hs out/static/libskia.a
-
-cd ..
+    if is_build_cached_remotely; then 
+        pull_cache
+    else 
+        getSkia
+        build_skia_recorder
+        OUTPUT_CACHE=out upload_cache
+    fi 
+fi
\ No newline at end of file
diff --git a/skia/renderer/build.sh b/skia/renderer/build.sh
index 90232c2..147a6da 100755
--- a/skia/renderer/build.sh
+++ b/skia/renderer/build.sh
@@ -37,7 +37,7 @@
     help
 else
     build() {
-        echo "Building Rive for platform=$platform option=$OPTION"
+        echo "Building Rive Renderer for platform=$platform option=$OPTION"
         PREMAKE="premake5 gmake2 $1"
         eval "$PREMAKE"
         if [ "$OPTION" = "clean" ]; then
@@ -76,4 +76,4 @@
     esac
 fi
 
-popd &>/dev/null
+popd &>/dev/null
\ No newline at end of file
diff --git a/skia/renderer/build/premake5.lua b/skia/renderer/build/premake5.lua
index ac90f28..c1f7051 100644
--- a/skia/renderer/build/premake5.lua
+++ b/skia/renderer/build/premake5.lua
@@ -61,27 +61,27 @@
 
     -- Is there a way to pass 'arch' as a variable here?
     filter { "system:android" }
-        includedirs {"../../dependencies/skia_rive_optimized"}
+        includedirs {"../../dependencies/".. SKIA_DIR}
         
         filter { "system:android", "options:arch=x86" }
             targetdir "%{cfg.system}/x86/bin/%{cfg.buildcfg}"
             objdir "%{cfg.system}/x86/obj/%{cfg.buildcfg}"
-            libdirs {"../../dependencies/skia_rive_optimized/out/x86"}
+            libdirs {"../../dependencies/" .. SKIA_DIR.. "/out/x86"}
 
         filter { "system:android", "options:arch=x64" }
             targetdir "%{cfg.system}/x64/bin/%{cfg.buildcfg}"
             objdir "%{cfg.system}/x64/obj/%{cfg.buildcfg}"
-            libdirs {"../../dependencies/skia_rive_optimized/out/x64"}
+            libdirs {"../../dependencies/" .. SKIA_DIR.. "/out/x64"}
 
         filter { "system:android", "options:arch=arm" }
             targetdir "%{cfg.system}/arm/bin/%{cfg.buildcfg}"
             objdir "%{cfg.system}/arm/obj/%{cfg.buildcfg}"
-            libdirs {"../../dependencies/skia_rive_optimized/out/arm"}
+            libdirs {"../../dependencies/" .. SKIA_DIR.. "/out/arm"}
 
         filter { "system:android", "options:arch=arm64" }
             targetdir "%{cfg.system}/arm64/bin/%{cfg.buildcfg}"
             objdir "%{cfg.system}/arm64/obj/%{cfg.buildcfg}"
-            libdirs {"../../dependencies/skia_rive_optimized/out/arm64"}
+            libdirs {"../../dependencies/" .. SKIA_DIR.. "/out/arm64"}
             
     filter "configurations:debug"
         defines {"DEBUG"}
@@ -113,4 +113,4 @@
         { "arm64" }
     }
 
-}
+}
\ No newline at end of file
