diff --git a/Makefile b/Makefile
index db18b0949..642d4fac6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,70 +1,9 @@
 # TODO(mrcyjanek): Cleanup, this is borrowed from unnamed_monero_wallet repo.
 
-MONERO_C_TAG=v0.18.3.3-RC31
+MONERO_C_TAG=v0.18.3.3-RC35
 LIBCPP_SHARED_SO_TAG=latest-RC1
 LIBCPP_SHARED_SO_NDKVERSION=r17c
 
-.PHONY: android
-android:
-	./build_changelog.sh
-	flutter build apk --split-per-abi --flavor calc  --dart-define=libstealth_calculator=true
-	flutter build apk --split-per-abi --flavor clean --dart-define=libstealth_calculator=false
-
-.PHONY: linux
-linux: 
-	./build_changelog.sh
-	flutter build linux
-	echo https://static.mrcyjanek.net/monero_c/${MONERO_C_TAG}/${TARGET_TRIPLET}_libwallet2_api_c.so.xz
-	wget https://static.mrcyjanek.net/monero_c/${MONERO_C_TAG}/${TARGET_TRIPLET}_libwallet2_api_c.so.xz \
-		-O build/linux/${FLUTTER_ARCH}/release/bundle/lib/libwallet2_api_c.so.xz
-	-rm build/linux/${FLUTTER_ARCH}/release/bundle/lib/libwallet2_api_c.so
-	unxz build/linux/${FLUTTER_ARCH}/release/bundle/lib/libwallet2_api_c.so.xz
-	-rm build/linux/${FLUTTER_ARCH}/release/xmruw-linux-${DEBIAN_ARCH}.tar*
-	(cd build/linux/${FLUTTER_ARCH}/release && cp -a bundle xmruw && tar -cvf xmruw-linux-${DEBIAN_ARCH}.tar xmruw && xz -e xmruw-linux-${DEBIAN_ARCH}.tar)
-
-
-.PHONY: linux_debug_lib
-linux_debug_lib:
-	wget https://static.mrcyjanek.net/monero_c/${MONERO_C_TAG}/${shell gcc -dumpmachine}_libwallet2_api_c.so.xz \
-		-O build/linux/${FLUTTER_ARCH}/debug/bundle/lib/libwallet2_api_c.so.xz
-	-rm build/linux/${FLUTTER_ARCH}/debug/bundle/lib/libwallet2_api_c.so
-	unxz build/linux/${FLUTTER_ARCH}/debug/bundle/lib/libwallet2_api_c.so.xz
-
-deb:
-	dart pub global activate --source git https://github.com/tomekit/flutter_to_debian.git
-	cat debian/debian.yaml.txt | sed 's/x64/${FLUTTER_ARCH}/g' | sed 's/amd64/${DEBIAN_ARCH}/g' > debian/debian.yaml
-	${HOME}/.pub-cache/bin/flutter_to_debian
-
-.PHONY: dev
-dev: libs
-
-dev:
-lib/const/resource.g.dart:
-	dart pub global activate flutter_asset_generator
-	timeout 15 ${HOME}/.pub-cache/bin/fgen || true
-	mv lib/const/resource.dart lib/const/resource.g.dart
-.PHONY: lib/const/resource.g.dart
-
-.PHONY: sailfishos
-sailfishos:
-	./build_changelog.sh
-	bash ./elinux/sailfish_build.sh
-
-.PHONY: version
-version:
-	sed -i "s/^version: .*/version: 1.0.0+$(shell git rev-list --count HEAD)/" "pubspec.yaml"
-	sed -i "s/^  Version: .*/  Version: 1.0.0+$(shell git rev-list --count HEAD)/" "debian/debian.yaml.txt"
-	sed -i "s/^Version=.*/Version=1.0.0+$(shell git rev-list --count HEAD)/" "debian/gui/xmruw.desktop"
-	sed -i "s/^Version=.*/Version=1.0.0+$(shell git rev-list --count HEAD)/" "elinux/unnamed-monero-wallet.desktop"
-	sed -i "s/^Version:    .*/Version:    1.0.0+$(shell git rev-list --count HEAD)/" "elinux/sailfishos.spec"
-	sed -i "s/^Release:    .*/Release:    $(shell git rev-list --count HEAD)/" "elinux/sailfishos.spec"
-	sed -i "s/^Version:    .*/Version:    1.0.0+$(shell git rev-list --count HEAD)/" "elinux/sailfishos.spec"
-	sed -i "s/^const xmruwVersion = .*/const xmruwVersion = '$(shell git describe --tags)';/" "lib/helpers/licenses_extra.dart"
-
-.PHONY: lib/helpers/licenses.g.dart
-lib/helpers/licenses.g.dart:
-	dart pub run flutter_oss_licenses:generate.dart -o lib/helpers/licenses.g.dart
-
 libs: android/app/src/main/jniLibs/arm64-v8a/libmonero_libwallet2_api_c.so
 .PHONY: android/app/src/main/jniLibs/arm64-v8a/libmonero_libwallet2_api_c.so
 android/app/src/main/jniLibs/arm64-v8a/libmonero_libwallet2_api_c.so:
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index dfd0d315a..dc767a55d 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.monero.app">
+    package="com.cakewallet.cake_wallet">
     <!-- Flutter needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.
     -->
diff --git a/cw_monero/example/pubspec.lock b/cw_monero/example/pubspec.lock
index 188b1c52e..333c0299b 100644
--- a/cw_monero/example/pubspec.lock
+++ b/cw_monero/example/pubspec.lock
@@ -245,8 +245,8 @@ packages:
     dependency: transitive
     description:
       path: "."
-      ref: e2149153ecbaa6cc4d7d3970d8fa8ce1099b63af
-      resolved-ref: e2149153ecbaa6cc4d7d3970d8fa8ce1099b63af
+      ref: "57e075ee67d16aa0f3f75fba67d79529fbc73a6c"
+      resolved-ref: "57e075ee67d16aa0f3f75fba67d79529fbc73a6c"
       url: "https://git.mrcyjanek.net/mrcyjanek/monero.dart"
     source: git
     version: "0.0.0"
diff --git a/cw_monero/lib/api/transaction_history.dart b/cw_monero/lib/api/transaction_history.dart
index 8e69efca0..c349dd312 100644
--- a/cw_monero/lib/api/transaction_history.dart
+++ b/cw_monero/lib/api/transaction_history.dart
@@ -134,10 +134,9 @@ void commitTransactionFromPointerAddress({required int address}) =>
 void commitTransaction({required monero.PendingTransaction transactionPointer}) {
   
   final txCommit = monero.PendingTransaction_commit(transactionPointer, filename: '', overwrite: false);
-  final status = monero.PendingTransaction_status(transactionPointer.cast());
 
   final String? error = (() {
-    final status = monero.Wallet_status(wptr!);
+    final status = monero.PendingTransaction_status(transactionPointer.cast());
     if (status == 0) {
       return null;
     }
diff --git a/cw_monero/lib/api/wallet.dart b/cw_monero/lib/api/wallet.dart
index a40b987ba..9e37268ad 100644
--- a/cw_monero/lib/api/wallet.dart
+++ b/cw_monero/lib/api/wallet.dart
@@ -23,14 +23,18 @@ bool isNewTransactionExist() {
 }
 String getFilename() => monero.Wallet_filename(wptr!);
 
-// TODO(mrcyjanek): Cake polyseed support
 String getSeed() {
-  final legacy = monero.Wallet_seed(wptr!, seedOffset: '');
-  final polyseed = monero.Wallet_getPolyseed(wptr!, passphrase: '');
-  if (polyseed == "") {
-    return legacy;
+  // monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
+  final cakepolyseed = monero.Wallet_getCacheAttribute(wptr!, key: "cakewallet.seed");
+  if (cakepolyseed != "") {
+    return cakepolyseed;
   }
-  return polyseed;
+  final polyseed = monero.Wallet_getPolyseed(wptr!, passphrase: '');
+  if (polyseed != "") {
+    return polyseed;
+  }
+  final legacy = monero.Wallet_seed(wptr!, seedOffset: '');
+  return legacy;
 }
 
 String getAddress({int accountIndex = 0, int addressIndex = 1}) => monero.Wallet_address(wptr!, accountIndex: accountIndex, addressIndex: addressIndex);
diff --git a/cw_monero/lib/api/wallet_manager.dart b/cw_monero/lib/api/wallet_manager.dart
index 6e7042793..e441d7406 100644
--- a/cw_monero/lib/api/wallet_manager.dart
+++ b/cw_monero/lib/api/wallet_manager.dart
@@ -114,15 +114,14 @@ void restoreWalletFromSpendKeySync(
   //   nettype: 0,
   // );
 
-  wptr = monero.WalletManager_createWalletFromPolyseed(
+  wptr = monero.WalletManager_createDeterministicWalletFromSpendKey(
     wmPtr,
     path: path,
     password: password,
-    mnemonic: seed,
-    seedOffset: '',
-    newWallet: false,
+    language: language,
+    spendKeyString: spendKey,
+    newWallet: true, // TODO(mrcyjanek): safe to remove
     restoreHeight: restoreHeight,
-    kdfRounds: 1,
   );
 
   final status = monero.Wallet_status(wptr!);
@@ -133,6 +132,8 @@ void restoreWalletFromSpendKeySync(
     throw WalletRestoreFromKeysException(message: err);
   }
 
+  monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
+
   storeSync();
 }
 
diff --git a/cw_monero/pubspec.lock b/cw_monero/pubspec.lock
index 86b1ef5bb..7503cd96d 100644
--- a/cw_monero/pubspec.lock
+++ b/cw_monero/pubspec.lock
@@ -414,8 +414,8 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: e2149153ecbaa6cc4d7d3970d8fa8ce1099b63af
-      resolved-ref: e2149153ecbaa6cc4d7d3970d8fa8ce1099b63af
+      ref: "57e075ee67d16aa0f3f75fba67d79529fbc73a6c"
+      resolved-ref: "57e075ee67d16aa0f3f75fba67d79529fbc73a6c"
       url: "https://git.mrcyjanek.net/mrcyjanek/monero.dart"
     source: git
     version: "0.0.0"
diff --git a/cw_monero/pubspec.yaml b/cw_monero/pubspec.yaml
index 26ae7cc50..7d3b46495 100644
--- a/cw_monero/pubspec.yaml
+++ b/cw_monero/pubspec.yaml
@@ -25,7 +25,7 @@ dependencies:
   monero:
     git:
       url: https://git.mrcyjanek.net/mrcyjanek/monero.dart
-      ref: e2149153ecbaa6cc4d7d3970d8fa8ce1099b63af
+      ref: 57e075ee67d16aa0f3f75fba67d79529fbc73a6c
 
 dev_dependencies:
   flutter_test:
diff --git a/pubspec_base.yaml b/pubspec_base.yaml
index 0f395007d..3ec3e7978 100644
--- a/pubspec_base.yaml
+++ b/pubspec_base.yaml
@@ -111,10 +111,7 @@ dependencies:
     git:
       url: https://github.com/cake-tech/bitcoin_base.git
       ref: cake-update-v2
-  monero:
-    git:
-      url: https://git.mrcyjanek.net/mrcyjanek/monero.dart
-      ref: master
+
 dev_dependencies:
   flutter_test:
     sdk: flutter
diff --git a/run-android.sh b/run-android.sh
index dd694267a..880d86b6f 100755
--- a/run-android.sh
+++ b/run-android.sh
@@ -4,7 +4,7 @@
 get_current_branch() {
     if git rev-parse --git-dir > /dev/null 2>&1; then
         branch=$(git rev-parse --abbrev-ref HEAD)
-        echo "$branch"
+        echo "$branch" | tr '-' '_'
     else
         echo "Error: Not a git repository."
         return 1
@@ -27,4 +27,4 @@ if [[ $? -eq 0 ]]; then
 fi
 
 # run the app
-flutter run
\ No newline at end of file
+flutter run
diff --git a/scripts/docker/.gitignore b/scripts/docker/.gitignore
index ea1472ec1..c39e9d9f7 100644
--- a/scripts/docker/.gitignore
+++ b/scripts/docker/.gitignore
@@ -1 +1,2 @@
 output/
+cache/
\ No newline at end of file
diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile
index 1bcb0464e..a352cdc71 100755
--- a/scripts/docker/Dockerfile
+++ b/scripts/docker/Dockerfile
@@ -4,7 +4,7 @@ LABEL authors="konsti"
 ENV MONERO_BRANCH=release-v0.18.2.2-android
 RUN apt-get update && \
     echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
-    apt-get install -y dialog apt-utils curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang bison
+    apt-get install -y dialog apt-utils curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang bison ccache
 
 RUN mkdir /opt/android/
 
@@ -56,5 +56,7 @@ RUN ./build_zmq.sh
 COPY entrypoint.sh /opt/android/cakewallet/
 COPY build_monero.sh /opt/android/cakewallet/
 COPY copy_monero_deps.sh /opt/android/cakewallet/
+COPY build_haven.sh /opt/android/cakewallet/
+COPY copy_haven_deps.sh /opt/android/cakewallet/
 
 ENTRYPOINT ["./entrypoint.sh"]
diff --git a/scripts/docker/build_haven.sh b/scripts/docker/build_haven.sh
index 1dc4a6cfd..1cfb16265 100755
--- a/scripts/docker/build_haven.sh
+++ b/scripts/docker/build_haven.sh
@@ -1,71 +1,71 @@
-#!/bin/sh
-set -x -e
-
-. ./config.sh
-HAVEN_VERSION=tags/v3.0.7
-HAVEN_SRC_DIR=${WORKDIR}/haven
-
-git clone https://github.com/haven-protocol-org/haven-main.git ${HAVEN_SRC_DIR}
-git checkout ${HAVEN_VERSION}
-cd $HAVEN_SRC_DIR
-git submodule init
-git submodule update
-
-for arch in "aarch" "aarch64" "i686" "x86_64"
-do
-FLAGS=""
-PREFIX=${WORKDIR}/prefix_${arch}
-DEST_LIB_DIR=${PREFIX}/lib/haven
-DEST_INCLUDE_DIR=${PREFIX}/include/haven
-export CMAKE_INCLUDE_PATH="${PREFIX}/include"
-export CMAKE_LIBRARY_PATH="${PREFIX}/lib"
-ANDROID_STANDALONE_TOOLCHAIN_PATH="${TOOLCHAIN_BASE_DIR}_${arch}"
-PATH="${ANDROID_STANDALONE_TOOLCHAIN_PATH}/bin:${ORIGINAL_PATH}"
-
-mkdir -p $DEST_LIB_DIR
-mkdir -p $DEST_INCLUDE_DIR
-
-case $arch in
-	"aarch"	)
-		CLANG=arm-linux-androideabi-clang
- 		CXXLANG=arm-linux-androideabi-clang++
-		BUILD_64=OFF
-		TAG="android-armv7"
-		ARCH="armv7-a"
-		ARCH_ABI="armeabi-v7a"
-		FLAGS="-D CMAKE_ANDROID_ARM_MODE=ON -D NO_AES=true";;
-	"aarch64"	)
-		CLANG=aarch64-linux-androideabi-clang
- 		CXXLANG=aarch64-linux-androideabi-clang++
-		BUILD_64=ON
-		TAG="android-armv8"
-		ARCH="armv8-a"
-		ARCH_ABI="arm64-v8a";;
-	"i686"		)
-		CLANG=i686-linux-androideabi-clang
- 		CXXLANG=i686-linux-androideabi-clang++
-		BUILD_64=OFF
-		TAG="android-x86"
-		ARCH="i686"
-		ARCH_ABI="x86";;
-	"x86_64"	)  
-		CLANG=x86_64-linux-androideabi-clang
- 		CXXLANG=x86_64-linux-androideabi-clang++
-		BUILD_64=ON
-		TAG="android-x86_64"
-		ARCH="x86-64"
-		ARCH_ABI="x86_64";;
-esac
-
-cd $HAVEN_SRC_DIR
-rm -rf ./build/release
-mkdir -p ./build/release
-cd ./build/release
-CC=${CLANG} CXX=${CXXLANG} cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH=${ARCH} -D STATIC=ON -D BUILD_64=${BUILD_64} -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D INSTALL_VENDORED_LIBUNBOUND=ON -D BUILD_TAG=${TAG} -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARCH_ABI=${ARCH_ABI} $FLAGS ../..
-    
-make wallet_api -j$THREADS
-find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
-
-cp -r ./lib/* $DEST_LIB_DIR
-cp ../../src/wallet/api/wallet2_api.h  $DEST_INCLUDE_DIR
-done
+#!/bin/sh
+set -x -e
+
+. ./config.sh
+HAVEN_VERSION=tags/v3.0.7
+HAVEN_SRC_DIR=${WORKDIR}/haven
+
+git clone https://github.com/haven-protocol-org/haven-main.git ${HAVEN_SRC_DIR}
+cd $HAVEN_SRC_DIR
+git checkout ${HAVEN_VERSION}
+git submodule init
+git submodule update
+
+for arch in "aarch" "aarch64" "i686" "x86_64"
+do
+FLAGS=""
+PREFIX=${WORKDIR}/prefix_${arch}
+DEST_LIB_DIR=${PREFIX}/lib/haven
+DEST_INCLUDE_DIR=${PREFIX}/include/haven
+export CMAKE_INCLUDE_PATH="${PREFIX}/include"
+export CMAKE_LIBRARY_PATH="${PREFIX}/lib"
+ANDROID_STANDALONE_TOOLCHAIN_PATH="${TOOLCHAIN_BASE_DIR}_${arch}"
+PATH="${ANDROID_STANDALONE_TOOLCHAIN_PATH}/bin:${ORIGINAL_PATH}"
+
+mkdir -p $DEST_LIB_DIR
+mkdir -p $DEST_INCLUDE_DIR
+
+case $arch in
+	"aarch"	)
+		CLANG=arm-linux-androideabi-clang
+ 		CXXLANG=arm-linux-androideabi-clang++
+		BUILD_64=OFF
+		TAG="android-armv7"
+		ARCH="armv7-a"
+		ARCH_ABI="armeabi-v7a"
+		FLAGS="-D CMAKE_ANDROID_ARM_MODE=ON -D NO_AES=true";;
+	"aarch64"	)
+		CLANG=aarch64-linux-androideabi-clang
+ 		CXXLANG=aarch64-linux-androideabi-clang++
+		BUILD_64=ON
+		TAG="android-armv8"
+		ARCH="armv8-a"
+		ARCH_ABI="arm64-v8a";;
+	"i686"		)
+		CLANG=i686-linux-androideabi-clang
+ 		CXXLANG=i686-linux-androideabi-clang++
+		BUILD_64=OFF
+		TAG="android-x86"
+		ARCH="i686"
+		ARCH_ABI="x86";;
+	"x86_64"	)  
+		CLANG=x86_64-linux-androideabi-clang
+ 		CXXLANG=x86_64-linux-androideabi-clang++
+		BUILD_64=ON
+		TAG="android-x86_64"
+		ARCH="x86-64"
+		ARCH_ABI="x86_64";;
+esac
+
+cd $HAVEN_SRC_DIR
+rm -rf ./build/release
+mkdir -p ./build/release
+cd ./build/release
+CC=${CLANG} CXX=${CXXLANG} cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH=${ARCH} -D STATIC=ON -D BUILD_64=${BUILD_64} -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D INSTALL_VENDORED_LIBUNBOUND=ON -D BUILD_TAG=${TAG} -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_STANDALONE_TOOLCHAIN="${ANDROID_STANDALONE_TOOLCHAIN_PATH}" -D CMAKE_ANDROID_ARCH_ABI=${ARCH_ABI} $FLAGS ../..
+    
+make wallet_api -j$THREADS
+find . -path ./lib -prune -o -name '*.a' -exec cp '{}' lib \;
+
+cp -r ./lib/* $DEST_LIB_DIR
+cp ../../src/wallet/api/wallet2_api.h  $DEST_INCLUDE_DIR
+done
diff --git a/scripts/docker/copy_haven_deps.sh b/scripts/docker/copy_haven_deps.sh
index 5be7a1bb6..cef644701 100755
--- a/scripts/docker/copy_haven_deps.sh
+++ b/scripts/docker/copy_haven_deps.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-set -x -e
+set -x
 
 WORKDIR=/opt/android
 CW_DIR=${WORKDIR}/cake_wallet
diff --git a/scripts/docker/copy_monero_deps.sh b/scripts/docker/copy_monero_deps.sh
index 611fedd01..1c2394c0d 100755
--- a/scripts/docker/copy_monero_deps.sh
+++ b/scripts/docker/copy_monero_deps.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-set -x -e
+set -x
 
 WORKDIR=/opt/android
 CW_EXRTERNAL_DIR=${WORKDIR}/output/android
diff --git a/scripts/docker/docker-compose.yml b/scripts/docker/docker-compose.yml
index eaeea0f5b..00f24ce2e 100755
--- a/scripts/docker/docker-compose.yml
+++ b/scripts/docker/docker-compose.yml
@@ -7,3 +7,5 @@ services:
       MONERO_BRANCH: release-v0.18.2.2-android
     volumes:
       - ./output:/opt/android/output
+      - ./cache/dotcache:/root/.cache
+      - ./cache/dotccache:/root/.ccache
diff --git a/scripts/docker/entrypoint.sh b/scripts/docker/entrypoint.sh
index 84f106145..14f02a1f8 100755
--- a/scripts/docker/entrypoint.sh
+++ b/scripts/docker/entrypoint.sh
@@ -1,5 +1,11 @@
 #!/bin/bash
 set -x -e
 
+ls /opt/android
+
+rm -rf monero haven
+
 ./build_monero.sh
+./build_haven.sh
 ./copy_monero_deps.sh
+./copy_haven_deps.sh