diff --git a/.gitignore b/.gitignore
index ae0a9d017519e85f099df66c4e357835e25f9ec4..bdf75697c1069723cf12cf6d25ab75d5d6f92478 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 /target
 /gui/libs
+/release
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d66d536425b5bd44523f45981f85824d50cf7219..14f35b3f9e251e8c97bc65746afaedd4fa0fcfc8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,67 +14,108 @@ test:
     - rustc --version && cargo --version  # Print version info for debugging
     - cargo test --workspace --verbose
 
-# Build all possible images in Linux host
-linux_host:
+windows:
   image: "rust:latest"
   tags:
     - docker-amd64
+  variables:
+    RUST_BUILDER: cargo
   stage: build
   before_script:
-    - apt-get update && apt-get install -y --no-install-recommends file wget libudev-dev gcc-mingw-w64
-    - curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.20.0/cargo-dist-installer.sh | sh
+    - echo "Download dependencies"
+    - apt-get update && apt-get --assume-yes install gcc-mingw-w64
     - rustup target add x86_64-pc-windows-gnu
   script:
-    - cargo dist build --target x86_64-pc-windows-gnu --target x86_64-unknown-linux-gnu
+    - make release-windows
   artifacts:
     paths:
-      - target/distrib/*.zip
-      - target/distrib/*.zip.*
-      - target/distrib/*.tar.*
+      - release/
+
+linux_x86_64:
+  image: "rust:latest"
+  tags:
+    - docker-amd64
+  variables:
+    RUST_BUILDER: cargo
+  stage: build
+  before_script:
+    - echo "Download dependencies"
+    - apt-get update && apt-get --assume-yes install libssl-dev libudev-dev desktop-file-utils
+    - echo "Setup appimagetool"
+    - wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool
+    - chmod +x /usr/local/bin/appimagetool
+    - sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool
+    - rustup target add x86_64-unknown-linux-gnu
+  script:
+    - make release-linux-x86_64
+  artifacts:
+    paths:
+      - release/
+
+linux_aarch64:
+  image: "rust:latest"
+  tags:
+    - docker-amd64
+  variables:
+    RUST_BUILDER: cargo
+    CROSS_ARCH: arm64
+    PKG_CONFIG_ALLOW_CROSS: 1
+    CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
+  stage: build
+  before_script:
+    - echo "Download dependencies"
+    - dpkg --add-architecture ${CROSS_ARCH}
+    - apt-get update && apt-get --assume-yes install libssl-dev:${CROSS_ARCH} libudev-dev:${CROSS_ARCH} desktop-file-utils gcc-aarch64-linux-gnu
+    - echo "Setup appimagetool"
+    - wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool
+    - chmod +x /usr/local/bin/appimagetool
+    - sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool
+    - rustup target add aarch64-unknown-linux-gnu
+  script:
+    - PKG_CONFIG_PATH="/usr/lib/aarch64-linux-gnu/pkgconfig/:${PKG_CONFIG_PATH}" make release-linux-aarch64
+  artifacts:
+    paths:
+      - release/
+
+linux_arm:
+  image: "rust:latest"
+  tags:
+    - docker-amd64
+  variables:
+    RUST_BUILDER: cargo
+    CROSS_ARCH: armhf
+    PKG_CONFIG_ALLOW_CROSS: 1
+    CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
+  stage: build
+  before_script:
+    - echo "Download dependencies"
+    - dpkg --add-architecture ${CROSS_ARCH}
+    - apt-get update && apt-get --assume-yes install libssl-dev:${CROSS_ARCH} libudev-dev:${CROSS_ARCH} desktop-file-utils gcc-arm-linux-gnueabihf
+    - echo "Setup appimagetool"
+    - wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-$(uname -m).AppImage -O /usr/local/bin/appimagetool
+    - chmod +x /usr/local/bin/appimagetool
+    - sed -i 's|AI\x02|\x00\x00\x00|' /usr/local/bin/appimagetool
+    - rustup target add armv7-unknown-linux-gnueabihf
+  script:
+    - PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig/:${PKG_CONFIG_PATH}" make release-linux-arm
+  artifacts:
+    paths:
+      - release/
 
 macos:
   image: macos-14-xcode-15
   stage: build
   tags:
     - macos
+  variables:
+    RUST_BUILDER: cargo
   before_script:
     - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
     - source "$HOME/.cargo/env"
-    - curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.20.0/cargo-dist-installer.sh | sh
+    - rustup target add x86_64-apple-darwin aarch64-apple-darwin
   script:
     - rustc --version
-    - cargo dist build --target aarch64-apple-darwin
+    - make release-darwin
   artifacts:
     paths:
-      - target/distrib/*.tar.*
-
-deploy:
-  image: registry.gitlab.com/gitlab-org/release-cli:latest
-  stage: deploy
-  rules:
-    - if: $CI_COMMIT_TAG
-  script:
-    - echo "running release_job for $CI_COMMIT_TAG"
-    - echo "Upload artifacts"
-    - 'curl --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file target/distrib/gui-x86_64-pc-windows-gnu.zip ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-gui/${CI_COMMIT_TAG}/gui-x86_64-pc-windows-gnu.zip'
-    - 'curl --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file target/distrib/gui-x86_64-unknown-linux-gnu.tar.xz ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-gui/${CI_COMMIT_TAG}/gui-x86_64-unknown-linux-gnu.tar.xz'
-    - 'curl --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file target/distrib/cli-x86_64-pc-windows-gnu.zip ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-cli/${CI_COMMIT_TAG}/cli-x86_64-pc-windows-gnu.zip'
-    - 'curl --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file target/distrib/cli-x86_64-unknown-linux-gnu.tar.xz ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-cli/${CI_COMMIT_TAG}/cli-x86_64-unknown-linux-gnu.tar.xz'
-  release:
-    tag_name: $CI_COMMIT_TAG
-    name: 'BeagleBoard Imager $CI_COMMIT_TAG'
-    description: 'BeagleBoard Image Flasher $CI_COMMIT_TAG'
-    assets:
-      links:
-        - name: 'x86_64-bb-imager-gui-windows'
-          url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-gui/${CI_COMMIT_TAG}/gui-x86_64-pc-windows-gnu.zip'
-          link_type: 'package'
-        - name: 'x86_64-bb-imager-gui-linux'
-          url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-gui/${CI_COMMIT_TAG}/gui-x86_64-unknown-linux-gnu.tar.xz'
-          link_type: 'package'
-        - name: 'x86_64-bb-imager-cli-windows'
-          url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-cli/${CI_COMMIT_TAG}/cli-x86_64-pc-windows-gnu.zip'
-          link_type: 'package'
-        - name: 'x86_64-bb-imager-cli-linux'
-          url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/bb-imager-gui/${CI_COMMIT_TAG}/cli-x86_64-unknown-linux-gnu.tar.xz'
-          link_type: 'package'
+      - release/
diff --git a/Cargo.lock b/Cargo.lock
index 74cb762904d6dc0ced634ef288d04c78e4d801e1..3d80c959fe587e9d8daae11072d58bda0b2f0ba4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -470,7 +470,7 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
 
 [[package]]
 name = "bb-imager"
-version = "0.1.0"
+version = "0.0.1"
 dependencies = [
  "bin_file",
  "chrono",
@@ -500,6 +500,35 @@ dependencies = [
  "zip",
 ]
 
+[[package]]
+name = "bb-imager-cli"
+version = "0.0.1"
+dependencies = [
+ "bb-imager",
+ "clap",
+ "indicatif",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "bb-imager-gui"
+version = "0.0.1"
+dependencies = [
+ "bb-imager",
+ "embed-resource",
+ "iced",
+ "iced_aw",
+ "image 0.25.2",
+ "notify-rust",
+ "rfd",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+ "webbrowser",
+]
+
 [[package]]
 name = "bin_file"
 version = "0.1.1"
@@ -826,18 +855,6 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
 
-[[package]]
-name = "cli"
-version = "0.1.0"
-dependencies = [
- "bb-imager",
- "clap",
- "indicatif",
- "tokio",
- "tracing",
- "tracing-subscriber",
-]
-
 [[package]]
 name = "clipboard-win"
 version = "5.4.0"
@@ -1924,23 +1941,6 @@ dependencies = [
  "bitflags 2.6.0",
 ]
 
-[[package]]
-name = "gui"
-version = "0.1.0"
-dependencies = [
- "bb-imager",
- "embed-resource",
- "iced",
- "iced_aw",
- "image 0.25.2",
- "notify-rust",
- "rfd",
- "tokio",
- "tracing",
- "tracing-subscriber",
- "webbrowser",
-]
-
 [[package]]
 name = "guillotiere"
 version = "0.6.2"
@@ -2722,9 +2722,9 @@ dependencies = [
 
 [[package]]
 name = "liblzma"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3139da5a723df5ecc87bea4f09c5622b0f6e40a1448c839aefa56727834491d"
+checksum = "a7c45fc6fcf5b527d3cf89c1dee8c327943984b0dc8bfcf6e100473b00969e63"
 dependencies = [
  "liblzma-sys",
  "num_cpus",
@@ -2732,9 +2732,9 @@ dependencies = [
 
 [[package]]
 name = "liblzma-sys"
-version = "0.3.6"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2e80e6c899a9fcbcfddb3e6d3e95c91303d416870fa812c49dc1689efaa94f1"
+checksum = "63117d31458acdb7b406f6c60090aa8e1e7cd6e283f8ee02ce585ed68c53fe39"
 dependencies = [
  "cc",
  "libc",
diff --git a/Cargo.toml b/Cargo.toml
index c374e68b2dacb8aee000611ee786224ac1574d95..8f6f46df648e33a1f3bfb302a86ddc1e8987c7ec 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,19 +6,6 @@ members = [
 	"cli", "gui",
 ]
 
-# Config for 'cargo dist'
-[workspace.metadata.dist]
-# The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax)
-cargo-dist-version = "0.20.0"
-# The installers to generate for each app
-installers = []
-# Target platforms to build apps for (Rust target-triple syntax)
-targets = ["aarch64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-gnu"]
-
 [profile.release]
 strip = true
-
-# The profile that 'cargo dist' will build with
-[profile.dist]
-inherits = "release"
 lto = "thin"
diff --git a/Cross.toml b/Cross.toml
new file mode 100644
index 0000000000000000000000000000000000000000..bc6b65cc5c90c5b534c17fa4f0dab43cf7e353b5
--- /dev/null
+++ b/Cross.toml
@@ -0,0 +1,18 @@
+[target.aarch64-unknown-linux-gnu]
+pre-build = [
+    "dpkg --add-architecture $CROSS_DEB_ARCH",
+    "apt-get update && apt-get --assume-yes install libssl-dev:$CROSS_DEB_ARCH libudev-dev:$CROSS_DEB_ARCH"
+]
+
+[target.x86_64-unknown-linux-gnu]
+image = "rust:latest"
+pre-build = [
+    "dpkg --add-architecture $CROSS_DEB_ARCH",
+    "apt-get update && apt-get --assume-yes install libssl-dev:$CROSS_DEB_ARCH libudev-dev:$CROSS_DEB_ARCH"
+]
+
+[target.armv7-unknown-linux-gnueabihf]
+pre-build = [
+    "dpkg --add-architecture $CROSS_DEB_ARCH",
+    "apt-get update && apt-get --assume-yes install libssl-dev:$CROSS_DEB_ARCH libudev-dev:$CROSS_DEB_ARCH"
+]
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..de01647ff6c0139825ea1cb60560a16c3e047bf0
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,98 @@
+RUST_BUILDER ?= cross
+APPIMAGETOOL ?= appimagetool
+
+# Build Appimage for BeagleBoardImager GUI
+define appimage
+	mkdir -p release/linux/$(1)/AppDir/usr/bin
+	cp assets/AppRun release/linux/$(1)/AppDir/AppRun
+	cp target/$(1)/release/bb-imager-gui release/linux/$(1)/AppDir/usr/bin/
+	cp gui/BeagleBoardImager.desktop release/linux/$(1)/AppDir/
+	cp gui/icon.png release/linux/$(1)/AppDir/
+	ARCH=$(2) $(APPIMAGETOOL) --appimage-extract-and-run release/linux/$(1)/AppDir release/linux/$(1)/BeagleBoardImager.AppImage
+	rm -rf release/linux/$(1)/AppDir
+endef
+
+# Build Executable for BeagleBoardImager CLI
+define cli
+	mkdir -p release/linux/$(1)
+	cp target/$(1)/release/bb-imager-cli release/linux/$(1)/
+endef
+
+clean:
+	rm -rf release
+
+build-windows-x86_64:
+	$(info "Building Windows release for x86_64")
+	$(RUST_BUILDER) build --release --target x86_64-pc-windows-gnu
+
+build-linux-x86_64:
+	$(info "Building Linux release for x86_64")
+	$(RUST_BUILDER) build --release --target x86_64-unknown-linux-gnu
+
+build-linux-aarch64:
+	$(info "Building Linux release for aarch64")
+	$(RUST_BUILDER) build --release --target aarch64-unknown-linux-gnu
+
+build-linux-arm:
+	$(info "Building Linux release for arm")
+	$(RUST_BUILDER) build --release --target armv7-unknown-linux-gnueabihf
+
+build-darwin-x86_64:
+	$(info "Building MacOS release for x86_64")
+	$(RUST_BUILDER) build --release --target x86_64-apple-darwin
+
+build-darwin-aarch64:
+	$(info "Building MacOS release for aarch64")
+	$(RUST_BUILDER) build --release --target aarch64-apple-darwin
+
+release-windows-x86_64: build-windows-x86_64
+	$(info "Generating Windows release for x86_64")
+	mkdir -p release/windows/x86_64-pc-windows-gnu
+	cp target/x86_64-pc-windows-gnu/release/*.exe release/windows/x86_64-pc-windows-gnu/
+
+release-linux-gui-appimage-x86_64: build-linux-x86_64
+	$(info "Generating Linux Appimage release for x86_64")
+	$(call appimage,x86_64-unknown-linux-gnu,x86_64)
+
+release-linux-gui-appimage-aarch64: build-linux-aarch64
+	$(info "Generating Linux Appimage release for aarch64")
+	$(call appimage,aarch64-unknown-linux-gnu,aarch64)
+
+release-linux-gui-appimage-arm: build-linux-arm
+	$(info "Generating Linux Appimage release for aarch64")
+	$(call appimage,armv7-unknown-linux-gnueabihf,armhf)
+
+release-linux-cli-x86_64: build-linux-x86_64
+	$(info "Generating Linux CLI release for x86_64")
+	$(call cli,x86_64-unknown-linux-gnu)
+
+release-linux-cli-aarch64: build-linux-aarch64
+	$(info "Generating Linux CLI release for x86_64")
+	$(call cli,aarch64-unknown-linux-gnu)
+
+release-linux-cli-arm: build-linux-arm
+	$(info "Generating Linux CLI release for x86_64")
+	$(call cli,armv7-unknown-linux-gnueabihf)
+
+release-darwin-x86_64: build-darwin-x86_64
+	$(info "Generating MacOS release for x86_64")
+	mkdir -p release/darwin/x86_64-apple-darwin
+	cp target/x86_64-apple-darwin/release/bb-imager-cli release/darwin/x86_64-apple-darwin/
+
+release-darwin-aarch64: build-darwin-aarch64
+	$(info "Generating MacOS release for aarch64")
+	mkdir -p release/darwin/aarch64-apple-darwin
+	cp target/aarch64-apple-darwin/release/bb-imager-cli release/darwin/aarch64-apple-darwin/
+
+release-linux-x86_64: release-linux-cli-x86_64 release-linux-gui-appimage-x86_64
+
+release-linux-aarch64: release-linux-cli-aarch64 release-linux-gui-appimage-aarch64
+
+release-linux-arm: release-linux-cli-arm release-linux-gui-appimage-arm
+
+release-linux: release-linux-x86_64 release-linux-aarch64 release-linux-arm
+
+# TODO: Add aarch64 windows.
+release-windows: release-windows-x86_64
+
+release-darwin: release-darwin-x86_64 release-darwin-aarch64
diff --git a/assets/AppRun b/assets/AppRun
new file mode 100755
index 0000000000000000000000000000000000000000..2f9426cc25890bf6c731dc95dd151724fa7fca4f
--- /dev/null
+++ b/assets/AppRun
@@ -0,0 +1,12 @@
+#!/bin/sh
+SELF=$(readlink -f "$0")
+HERE=${SELF%/*}
+export PATH="${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
+export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
+export XDG_DATA_DIRS="${HERE}/usr/share/${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
+export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
+export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
+export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
+EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
+exec "${EXEC}" "$@"
diff --git a/icons/arrow-back.svg b/assets/icons/arrow-back.svg
similarity index 100%
rename from icons/arrow-back.svg
rename to assets/icons/arrow-back.svg
diff --git a/icons/bb-banner.png b/assets/icons/bb-banner.png
similarity index 100%
rename from icons/bb-banner.png
rename to assets/icons/bb-banner.png
diff --git a/icons/downloading.svg b/assets/icons/downloading.svg
similarity index 100%
rename from icons/downloading.svg
rename to assets/icons/downloading.svg
diff --git a/icons/file-add.svg b/assets/icons/file-add.svg
similarity index 100%
rename from icons/file-add.svg
rename to assets/icons/file-add.svg
diff --git a/icons/refresh.svg b/assets/icons/refresh.svg
similarity index 100%
rename from icons/refresh.svg
rename to assets/icons/refresh.svg
diff --git a/icons/usb.svg b/assets/icons/usb.svg
similarity index 100%
rename from icons/usb.svg
rename to assets/icons/usb.svg
diff --git a/bb-imager/Cargo.toml b/bb-imager/Cargo.toml
index 21fb666dfc7640fc371d2117d214738c075a174b..661b24f08f5ed61a5a0b8d5b3f54962b1b324334 100644
--- a/bb-imager/Cargo.toml
+++ b/bb-imager/Cargo.toml
@@ -1,10 +1,14 @@
 [package]
 name = "bb-imager"
-version = "0.1.0"
+version = "0.0.1"
 edition = "2021"
+authors = ["Ayush Singh <ayush@beagleboard.org>"]
+description = "Library to support bb-imager-cli and bb-imager-gui"
+repository = "https://openbeagle.org/ayush1325/bb-imager-rs"
+license = "MIT"
 
 [dependencies]
-liblzma = { version = "0.3.3", features = ["static", "parallel"] }
+liblzma = { version = "0.3.4", features = ["static", "parallel"] }
 chrono = { version = "0.4.38", features = ["serde"] }
 const-hex = { version = "1.12.0", features = ["serde"] }
 crc32fast = "1.4.2"
diff --git a/bb-imager/src/flasher/bcf.rs b/bb-imager/src/flasher/bcf.rs
index 69610472f7bf390914aa3f3be8310ace87c38e21..01769439f4c08f8e46f842542254accb202f7a2a 100644
--- a/bb-imager/src/flasher/bcf.rs
+++ b/bb-imager/src/flasher/bcf.rs
@@ -100,7 +100,7 @@ impl BeagleConnectFreedom {
         info!("Invoke Bootloader");
 
         let _ = self.port.set_break();
-        let _ = tokio::time::sleep(Duration::from_millis(500)).await;
+        let _ = tokio::time::sleep(Duration::from_secs(2)).await;
         let _ = self.port.clear_break();
 
         let _ = tokio::time::sleep(Duration::from_millis(500)).await;
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index ab861f66babd0c83cbb48cc138b9c0c7c578cca1..e489929cb6ff6661681d2da424ac7d82d8fbbcf6 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -1,7 +1,11 @@
 [package]
-name = "cli"
-version = "0.1.0"
+name = "bb-imager-cli"
+version = "0.0.1"
 edition = "2021"
+authors = ["Ayush Singh <ayush@beagleboard.org>"]
+description = "Library to support bb-imager-cli and bb-imager-gui"
+repository = "https://openbeagle.org/ayush1325/bb-imager-rs"
+license = "MIT"
 
 [dependencies]
 clap = { version = "4.5.9", features = ["derive"] }
diff --git a/gui/BeagleBoardImager.desktop b/gui/BeagleBoardImager.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..efe8a2c7ca05510c417e5239983bf37e6c594db3
--- /dev/null
+++ b/gui/BeagleBoardImager.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=BeagleBoard Imager
+Exec=bb-imager-gui
+Icon=icon
+Type=Application
+Categories=Utility;
+X-AppImage-Version=0.0.1
diff --git a/gui/Cargo.toml b/gui/Cargo.toml
index 4c422658487346fdd966ead0fa62787f6376dff1..71bd4ab248b46684e59a6aa69b7c8d3e92ff50ba 100644
--- a/gui/Cargo.toml
+++ b/gui/Cargo.toml
@@ -1,7 +1,11 @@
 [package]
-name = "gui"
-version = "0.1.0"
+name = "bb-imager-gui"
+version = "0.0.1"
 edition = "2021"
+authors = ["Ayush Singh <ayush@beagleboard.org>"]
+description = "Library to support bb-imager-cli and bb-imager-gui"
+repository = "https://openbeagle.org/ayush1325/bb-imager-rs"
+license = "MIT"
 
 [dependencies]
 iced = { version = "0.13.1", features = ["image", "svg", "tokio", "advanced"] }
@@ -15,14 +19,5 @@ tokio = { version = "1.39.2", default-features = false, features = ["macros"] }
 webbrowser = "1.0.1"
 notify-rust = "4.11.1"
 
-[package.metadata.appimage]
-auto_link = true
-auto_link_exclude_list = [
-    "libc.so*",
-		"libgcc_s.so",
-		"ld-linux*",
-		"libm.so*"
-]
-
 [build-dependencies]
 embed-resource = "2.4"
diff --git a/gui/src/constants.rs b/gui/src/constants.rs
index 556517c66948757001b90331cb421d88187aa433..6c1ba752a97151f14006de0ac3adadc8d1bf91a9 100644
--- a/gui/src/constants.rs
+++ b/gui/src/constants.rs
@@ -2,12 +2,12 @@ pub const DEFAULT_CONFIG: &[u8] = include_bytes!("../../config.json");
 pub const APP_NAME: &str = "BeagleBoard Imager";
 
 pub const WINDOW_ICON: &[u8] = include_bytes!("../icon.png");
-pub const BB_BANNER: &[u8] = include_bytes!("../../icons/bb-banner.png");
-pub const ARROW_BACK_ICON: &[u8] = include_bytes!("../../icons/arrow-back.svg");
-pub const DOWNLOADING_ICON: &[u8] = include_bytes!("../../icons/downloading.svg");
-pub const FILE_ADD_ICON: &[u8] = include_bytes!("../../icons/file-add.svg");
-pub const USB_ICON: &[u8] = include_bytes!("../../icons/usb.svg");
-pub const REFRESH_ICON: &[u8] = include_bytes!("../../icons/refresh.svg");
+pub const BB_BANNER: &[u8] = include_bytes!("../../assets/icons/bb-banner.png");
+pub const ARROW_BACK_ICON: &[u8] = include_bytes!("../../assets/icons/arrow-back.svg");
+pub const DOWNLOADING_ICON: &[u8] = include_bytes!("../../assets/icons/downloading.svg");
+pub const FILE_ADD_ICON: &[u8] = include_bytes!("../../assets/icons/file-add.svg");
+pub const USB_ICON: &[u8] = include_bytes!("../../assets/icons/usb.svg");
+pub const REFRESH_ICON: &[u8] = include_bytes!("../../assets/icons/refresh.svg");
 
 pub const BEAGLE_BOARD_ABOUT: &str = "The BeagleBoard.org Foundation is a Michigan, USA-based 501(c)(3) non-profit corporation existing to provide education in and collaboration around the design and use of open-source software and hardware in embedded computing. BeagleBoard.org provides a forum for the owners and developers of open-source software and hardware to exchange ideas, knowledge and experience. The BeagleBoard.org community collaborates on the development of open source physical computing solutions including robotics, personal manufacturing tools like 3D printers and laser cutters, and other types of industrial and machine controls.";