diff --git a/bootanimation/Android.mk b/bootanimation/Android.mk
index 2bc78ce..ee81d8f 100644
--- a/bootanimation/Android.mk
+++ b/bootanimation/Android.mk
@@ -30,7 +30,7 @@
 	@echo "Building bootanimation.zip"
 	@rm -rf $(dir $@)
 	@mkdir -p $(dir $@)
-	$(hide) tar xfp vendor/lineage/bootanimation/bootanimation.tar -C $(INTERMEDIATES)
+	$(hide) tar xfp vendor/bliss/bootanimation/bootanimation.tar -C $(INTERMEDIATES)
 	$(hide) if [ $(TARGET_SCREEN_HEIGHT) -lt $(TARGET_SCREEN_WIDTH) ]; then \
 	    IMAGEWIDTH=$(TARGET_SCREEN_HEIGHT); \
 	else \
@@ -46,9 +46,9 @@
 	for part_cnt in 0 1 2 3 4; do \
 	    mkdir -p $(INTERMEDIATES)/part$$part_cnt; \
 	done; \
-	prebuilts/tools-lineage/${HOST_OS}-x86/bin/mogrify -resize $$RESOLUTION -colors 250 $(INTERMEDIATES)/*/*.png; \
+	prebuilts/tools-bliss/${HOST_OS}-x86/bin/mogrify -resize $$RESOLUTION -colors 250 $(INTERMEDIATES)/*/*.png; \
 	echo "$$IMAGESCALEWIDTH $$IMAGESCALEHEIGHT 60" > $(INTERMEDIATES)/desc.txt; \
-	cat vendor/lineage/bootanimation/desc.txt >> $(INTERMEDIATES)/desc.txt
+	cat vendor/bliss/bootanimation/desc.txt >> $(INTERMEDIATES)/desc.txt
 	$(hide) $(SOONG_ZIP) -L 0 -o $(TARGET_GENERATED_BOOTANIMATION) -C $(INTERMEDIATES) -D $(INTERMEDIATES)
 
 ifeq ($(TARGET_BOOTANIMATION),)
@@ -64,3 +64,4 @@
 
 $(LOCAL_BUILT_MODULE): $(TARGET_BOOTANIMATION)
 	@cp $(TARGET_BOOTANIMATION) $@
+
diff --git a/bootanimation/bootanimation.tar b/bootanimation/bootanimation.tar
index 7e4b0dc..e78cd13 100644
--- a/bootanimation/bootanimation.tar
+++ b/bootanimation/bootanimation.tar
Binary files differ
diff --git a/bootanimation/desc.txt b/bootanimation/desc.txt
index 5ddacd6..a470c8a 100644
--- a/bootanimation/desc.txt
+++ b/bootanimation/desc.txt
@@ -1,5 +1,7 @@
-c 1 0 part0
-c 0 0 part1
-c 1 0 part2
-c 1 1 part3
-c 1 0 part4
+1080 810 60
+c 0 0 part0
+c 1 0 part1
+c 60 0 part2
+
+
+
diff --git a/build/core/clear_vars.mk b/build/core/clear_vars.mk
index 1d8135c..3711fb2 100644
--- a/build/core/clear_vars.mk
+++ b/build/core/clear_vars.mk
@@ -1,4 +1,4 @@
 #
-# Lineage-specific variable clears
+# Bliss-specific variable clears
 #
 LOCAL_IGNORE_SUBDIR :=
diff --git a/build/core/config.mk b/build/core/config.mk
index 3bf8e2c..901cadc 100644
--- a/build/core/config.mk
+++ b/build/core/config.mk
@@ -18,9 +18,9 @@
 INTERNAL_LINEAGE_PLATFORM_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/lineage_removed.txt
 FRAMEWORK_LINEAGE_PLATFORM_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_current.txt
 FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_removed.txt
-FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT := $(TOPDIR)vendor/lineage/build/core/apicheck_msg_current.txt
+FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT := $(TOPDIR)vendor/bliss/build/core/apicheck_msg_current.txt
 
-BUILD_RRO_SYSTEM_PACKAGE := $(TOPDIR)vendor/lineage/build/core/system_rro.mk
+BUILD_RRO_SYSTEM_PACKAGE := $(TOPDIR)vendor/bliss/build/core/system_rro.mk
 
 # Rules for QCOM targets
-include $(TOPDIR)vendor/lineage/build/core/qcom_target.mk
+include $(TOPDIR)vendor/bliss/build/core/qcom_target.mk
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
index 82ed55d..eadb69c 100644
--- a/build/core/definitions.mk
+++ b/build/core/definitions.mk
@@ -1,12 +1,12 @@
 #
-# Lineage-specific macros
+# Bliss-specific macros
 #
 define uniq
 $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
 endef
 
 # Include board/platform macros
-include vendor/lineage/build/core/utils.mk
+include vendor/bliss/build/core/utils.mk
 
 # Include vendor platform definitions
-include vendor/lineage/build/core/vendor/*.mk
+include vendor/bliss/build/core/vendor/*.mk
diff --git a/build/core/main.mk b/build/core/main.mk
index 0793b8a..5582a7f 100644
--- a/build/core/main.mk
+++ b/build/core/main.mk
@@ -1,2 +1,2 @@
-# Include LineageOS versions
-include $(TOPDIR)vendor/lineage/build/core/main_version.mk
+# Include Bliss versions
+include $(TOPDIR)vendor/bliss/build/core/main_version.mk
diff --git a/build/core/main_version.mk b/build/core/main_version.mk
index 96213b0..8ade967 100644
--- a/build/core/main_version.mk
+++ b/build/core/main_version.mk
@@ -1,15 +1,3 @@
-# LineageOS System Version
-ADDITIONAL_BUILD_PROPERTIES += \
-    ro.lineage.version=$(LINEAGE_VERSION) \
-    ro.lineage.releasetype=$(LINEAGE_BUILDTYPE) \
-    ro.lineage.build.version=$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR) \
-    ro.modversion=$(LINEAGE_VERSION) \
-    ro.lineagelegal.url=https://lineageos.org/legal
-
-# LineageOS Platform Display Version
-ADDITIONAL_BUILD_PROPERTIES += \
-    ro.lineage.display.version=$(LINEAGE_DISPLAY_VERSION)
-
 # LineageOS Platform SDK Version
 ADDITIONAL_BUILD_PROPERTIES += \
     ro.lineage.build.version.plat.sdk=$(LINEAGE_PLATFORM_SDK_VERSION)
diff --git a/build/envsetup.sh b/build/envsetup.sh
index b73acf8..6b9b6a1 100644
--- a/build/envsetup.sh
+++ b/build/envsetup.sh
@@ -1,16 +1,16 @@
-function __print_lineage_functions_help() {
+function __print_bliss_functions_help() {
 cat <<EOF
-Additional LineageOS functions:
+Additional Bliss functions:
 - cout:            Changes directory to out.
 - mmp:             Builds all of the modules in the current directory and pushes them to the device.
 - mmap:            Builds all of the modules in the current directory and its dependencies, then pushes the package to the device.
 - mmmp:            Builds all of the modules in the supplied directories and pushes them to the device.
-- lineagegerrit:   A Git wrapper that fetches/pushes patch from/to LineageOS Gerrit Review.
-- lineagerebase:   Rebase a Gerrit change and push it again.
-- lineageremote:   Add git remote for LineageOS Gerrit Review.
+- blissgerrit:   A Git wrapper that fetches/pushes patch from/to BlissRoms Gerrit Review.
+- blissrebase:   Rebase a Gerrit change and push it again.
+- blissremote:   Add git remote for BlissRoms Gerrit Review.
 - aospremote:      Add git remote for matching AOSP repository.
 - cafremote:       Add git remote for matching CodeAurora repository.
-- githubremote:    Add git remote for LineageOS Github.
+- githubremote:    Add git remote for BlissRoms Github.
 - mka:             Builds using SCHED_BATCH on all processors.
 - mkap:            Builds the module(s) using mka and pushes them to the device.
 - cmka:            Cleans and builds using mka.
@@ -78,12 +78,12 @@
             # A buildtype was specified, assume a full device name
             lunch $target
         else
-            # This is probably just the Lineage model name
+            # This is probably just the Bliss model name
             if [ -z "$variant" ]; then
                 variant="userdebug"
             fi
 
-            lunch lineage_$target-$variant
+            lunch bliss_$target-$variant
         fi
     fi
     return $?
@@ -94,7 +94,7 @@
 function eat()
 {
     if [ "$OUT" ] ; then
-        ZIPPATH=`ls -tr "$OUT"/lineage-*.zip | tail -1`
+        ZIPPATH=`ls -tr "$OUT"/Bliss-*.zip | tail -1`
         if [ ! -f $ZIPPATH ] ; then
             echo "Nothing to eat"
             return 1
@@ -108,7 +108,7 @@
             done
             echo "Device Found.."
         fi
-        if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD"); then
+        if (adb shell getprop ro.bliss.device | grep -q "$BLISS_BUILD"); then
             # if adbd isn't root we can't write to /cache/recovery/
             adb root
             sleep 1
@@ -124,7 +124,7 @@
             fi
             rm /tmp/command
         else
-            echo "The connected device does not appear to be $LINEAGE_BUILD, run away!"
+            echo "The connected device does not appear to be $BLISS_BUILD, run away!"
         fi
         return $?
     else
@@ -248,36 +248,36 @@
    fi
 }
 
-function lineageremote()
+function blissremote()
 {
     if ! git rev-parse --git-dir &> /dev/null
     then
         echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up."
         return 1
     fi
-    git remote rm lineage 2> /dev/null
+    git remote rm bliss 2> /dev/null
     local REMOTE=$(git config --get remote.github.projectname)
-    local LINEAGE="true"
+    local BLISS="true"
     if [ -z "$REMOTE" ]
     then
         REMOTE=$(git config --get remote.aosp.projectname)
-        LINEAGE="false"
+        BLISS="false"
     fi
     if [ -z "$REMOTE" ]
     then
         REMOTE=$(git config --get remote.caf.projectname)
-        LINEAGE="false"
+        BLISS="false"
     fi
 
-    if [ $LINEAGE = "false" ]
+    if [ $BLISS = "false" ]
     then
         local PROJECT=$(echo $REMOTE | sed -e "s#platform/#android/#g; s#/#_#g")
-        local PFX="LineageOS/"
+        local PFX="BlissRoms/"
     else
         local PROJECT=$REMOTE
     fi
 
-    local LINEAGE_USER=$(git config --get review.review.lineageos.org.username)
+    local BLISS_USER=$(git config --get review.review.lineageos.org.username)
     if [ -z "$LINEAGE_USER" ]
     then
         git remote add lineage ssh://review.lineageos.org:29418/$PFX$PROJECT
@@ -352,7 +352,7 @@
 
     local PROJECT=$(echo $REMOTE | sed -e "s#platform/#android/#g; s#/#_#g")
 
-    git remote add github https://github.com/LineageOS/$PROJECT
+    git remote add github https://github.com/BlissRoms/$PROJECT
     echo "Remote 'github' created"
 }
 
@@ -386,7 +386,7 @@
     sleep 1
     adb wait-for-online shell mount /system 2>&1 > /dev/null
     adb wait-for-online remount
-    if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD");
+    if (adb shell getprop ro.bliss.device | grep -q "$BLISS_BUILD");
     then
         adb push $OUT/boot.img /cache/
         if [ -e "$OUT/system/lib/modules/*" ];
@@ -401,7 +401,7 @@
         adb shell rm -rf /cache/boot.img
         echo "Installation complete."
     else
-        echo "The connected device does not appear to be $LINEAGE_BUILD, run away!"
+        echo "The connected device does not appear to be $BLISS_BUILD, run away!"
     fi
 }
 
@@ -435,14 +435,14 @@
     sleep 1
     adb wait-for-online shell mount /system 2>&1 >> /dev/null
     adb wait-for-online remount
-    if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD");
+    if (adb shell getprop ro.bliss.device | grep -q "$BLISS_BUILD");
     then
         adb push $OUT/recovery.img /cache/
         adb shell dd if=/cache/recovery.img of=$PARTITION
         adb shell rm -rf /cache/recovery.img
         echo "Installation complete."
     else
-        echo "The connected device does not appear to be $LINEAGE_BUILD, run away!"
+        echo "The connected device does not appear to be $BLISS_BUILD, run away!"
     fi
 }
 
@@ -462,13 +462,13 @@
     if [ "$REPO_REMOTE" = "github" ]
     then
         pwd
-        lineageremote
-        git push lineage HEAD:refs/heads/'$1'
+        blissremote
+        git push bliss HEAD:refs/heads/'$1'
     fi
     '
 }
 
-function lineagegerrit() {
+function blissgerrit() {
     if [ "$(__detect_shell)" = "zsh" ]; then
         # zsh does not define FUNCNAME, derive from funcstack
         local FUNCNAME=$funcstack[1]
@@ -706,7 +706,7 @@
     esac
 }
 
-function lineagerebase() {
+function blissrebase() {
     local repo=$1
     local refs=$2
     local pwd="$(pwd)"
@@ -820,7 +820,7 @@
         echo "Device Found."
     fi
 
-    if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD") || [ "$FORCE_PUSH" = "true" ];
+    if (adb shell getprop ro.bliss.device | grep -q "$BLISS_BUILD") || [ "$FORCE_PUSH" = "true" ];
     then
     # retrieve IP and PORT info if we're using a TCP connection
     TCPIPPORT=$(adb devices \
@@ -938,7 +938,7 @@
     rm -f $OUT/.log
     return 0
     else
-        echo "The connected device does not appear to be $LINEAGE_BUILD, run away!"
+        echo "The connected device does not appear to be $BLISS_BUILD, run away!"
     fi
 }
 
@@ -951,14 +951,14 @@
 
 function repopick() {
     T=$(gettop)
-    $T/vendor/lineage/build/tools/repopick.py $@
+    $T/vendor/bliss/build/tools/repopick.py $@
 }
 
 function fixup_common_out_dir() {
     common_out_dir=$(get_build_var OUT_DIR)/target/common
     target_device=$(get_build_var TARGET_DEVICE)
     common_target_out=common-${target_device}
-    if [ ! -z $LINEAGE_FIXUP_COMMON_OUT ]; then
+    if [ ! -z $BLISS_FIXUP_COMMON_OUT ]; then
         if [ -d ${common_out_dir} ] && [ ! -L ${common_out_dir} ]; then
             mv ${common_out_dir} ${common_out_dir}-${target_device}
             ln -s ${common_target_out} ${common_out_dir}
@@ -972,3 +972,8 @@
         mkdir -p ${common_out_dir}
     fi
 }
+
+# Android specific JACK args
+if [ -n "$JACK_SERVER_VM_ARGUMENTS" ] && [ -z "$ANDROID_JACK_VM_ARGS" ]; then
+    export ANDROID_JACK_VM_ARGS=$JACK_SERVER_VM_ARGUMENTS
+fi
diff --git a/build/soong/Android.bp b/build/soong/Android.bp
index 3e98349..86fd9d1 100644
--- a/build/soong/Android.bp
+++ b/build/soong/Android.bp
@@ -1,14 +1,14 @@
 bootstrap_go_package {
-    name: "soong-lineage",
-    pkgPath: "lineage/soong/android",
+    name: "soong-bliss",
+    pkgPath: "bliss/soong/android",
     srcs: [
         "android/variable.go",
     ],
 }
 
 bootstrap_go_package {
-    name: "soong-lineage-generator",
-    pkgPath: "lineage/soong/generator",
+    name: "soong-bliss-generator",
+    pkgPath: "bliss/soong/generator",
     deps: [
         "blueprint",
         "blueprint-pathtools",
@@ -23,7 +23,7 @@
     pluginFor: ["soong_build"],
 }
 
-lineage_generator {
+bliss_generator {
     name: "generated_kernel_includes",
 
     // The headers make command
diff --git a/build/soong/generator/generator.go b/build/soong/generator/generator.go
index 7da1fde..ffaece3 100644
--- a/build/soong/generator/generator.go
+++ b/build/soong/generator/generator.go
@@ -29,7 +29,7 @@
 )
 
 func init() {
-	android.RegisterModuleType("lineage_generator", GeneratorFactory)
+	android.RegisterModuleType("bliss_generator", GeneratorFactory)
 
 	pctx.HostBinToolVariable("sboxCmd", "sbox")
 }
@@ -214,12 +214,12 @@
 	if depRoot == "" {
 		depRoot = ctx.ModuleDir()
 	} else {
-		depRoot = lineageExpandVariables(ctx, depRoot)
+		depRoot = blissExpandVariables(ctx, depRoot)
 	}
 
 	// Glob dep_files property
 	for _, dep_file := range g.properties.Dep_files {
-		dep_file = lineageExpandVariables(ctx, dep_file)
+		dep_file = blissExpandVariables(ctx, dep_file)
 		globPath := filepath.Join(depRoot, dep_file)
 		paths, err := ctx.GlobWithDeps(globPath, nil)
 		if err != nil {
@@ -231,7 +231,7 @@
 		}
 	}
 
-	cmd := lineageExpandVariables(ctx, String(g.properties.Cmd))
+	cmd := blissExpandVariables(ctx, String(g.properties.Cmd))
 
 	rawCommand, err := android.Expand(cmd, func(name string) (string, error) {
 		switch name {
diff --git a/build/soong/generator/variables.go b/build/soong/generator/variables.go
index 8485f94..3e633ff 100644
--- a/build/soong/generator/variables.go
+++ b/build/soong/generator/variables.go
@@ -6,12 +6,12 @@
 	"android/soong/android"
 )
 
-func lineageExpandVariables(ctx android.ModuleContext, in string) string {
-	lineageVars := ctx.Config().VendorConfig("lineageVarsPlugin")
+func blissExpandVariables(ctx android.ModuleContext, in string) string {
+	blissVars := ctx.Config().VendorConfig("blissVarsPlugin")
 
 	out, err := android.Expand(in, func(name string) (string, error) {
-		if lineageVars.IsSet(name) {
-			return lineageVars.String(name), nil
+		if blissVars.IsSet(name) {
+			return blissVars.String(name), nil
 		}
 		// This variable is not for us, restore what the original
 		// variable string will have looked like for an Expand
diff --git a/build/soong/soong_config.mk b/build/soong/soong_config.mk
index b5b753e..100c56f 100644
--- a/build/soong/soong_config.mk
+++ b/build/soong/soong_config.mk
@@ -1,7 +1,7 @@
 add_json_str_omitempty = $(if $(strip $(2)),$(call add_json_str, $(1), $(2)))
 add_json_val_default = $(call add_json_val, $(1), $(if $(strip $(2)), $(2), $(3)))
 
-_json_contents := $(_json_contents)    "Lineage":{$(newline)
+_json_contents := $(_json_contents)    "Bliss":{$(newline)
 
 # See build/core/soong_config.mk for the add_json_* functions you can use here.
 $(call add_json_str_omitempty, Additional_gralloc_10_usage_bits, $(TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS))
diff --git a/build/target/product/AndroidProducts.mk b/build/target/product/AndroidProducts.mk
index 6fb1a04..c9cf7ea 100644
--- a/build/target/product/AndroidProducts.mk
+++ b/build/target/product/AndroidProducts.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2018-2019 The LineageOS Project
+# Copyright (C) 2018 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,13 +15,8 @@
 #
 
 PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/lineage_arm.mk \
-    $(LOCAL_DIR)/lineage_arm64.mk \
-    $(LOCAL_DIR)/lineage_x86.mk \
-    $(LOCAL_DIR)/lineage_x86_64.mk
+    $(LOCAL_DIR)/bliss_arm.mk \
+    $(LOCAL_DIR)/bliss_arm64.mk \
+    $(LOCAL_DIR)/bliss_x86.mk \
+    $(LOCAL_DIR)/bliss_x86_64.mk
 
-COMMON_LUNCH_CHOICES := \
-    lineage_arm-userdebug \
-    lineage_arm64-userdebug \
-    lineage_x86-userdebug \
-    lineage_x86_64-userdebug
diff --git a/build/target/product/lineage_arm.mk b/build/target/product/bliss_arm.mk
similarity index 77%
rename from build/target/product/lineage_arm.mk
rename to build/target/product/bliss_arm.mk
index 97bbe3e..d905e8c 100644
--- a/build/target/product/lineage_arm.mk
+++ b/build/target/product/bliss_arm.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2019 The LineageOS Project
+# Copyright (C) 2018 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,9 +13,11 @@
 # limitations under the License.
 
 $(call inherit-product, build/target/product/aosp_arm.mk)
+$(call inherit-product, vendor/bliss/config/common.mk)
 
-include vendor/lineage/build/target/product/lineage_generic_target.mk
+# Allow building otatools
+TARGET_FORCE_OTA_PACKAGE := true
 
 TARGET_USES_64_BIT_BINDER := true
 
-PRODUCT_NAME := lineage_arm
+PRODUCT_NAME := bliss_arm
diff --git a/build/target/product/lineage_arm64.mk b/build/target/product/bliss_arm64.mk
similarity index 76%
rename from build/target/product/lineage_arm64.mk
rename to build/target/product/bliss_arm64.mk
index b46c4e5..5d63889 100644
--- a/build/target/product/lineage_arm64.mk
+++ b/build/target/product/bliss_arm64.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2019 The LineageOS Project
+# Copyright (C) 2018 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,7 +13,9 @@
 # limitations under the License.
 
 $(call inherit-product, build/target/product/aosp_arm64.mk)
+$(call inherit-product, vendor/bliss/config/common.mk)
 
-include vendor/lineage/build/target/product/lineage_generic_target.mk
+# Allow building otatools
+TARGET_FORCE_OTA_PACKAGE := true
 
-PRODUCT_NAME := lineage_arm64
+PRODUCT_NAME := bliss_arm64
diff --git a/build/target/product/lineage_x86.mk b/build/target/product/bliss_x86.mk
similarity index 77%
rename from build/target/product/lineage_x86.mk
rename to build/target/product/bliss_x86.mk
index 8dc7575..6fb689b 100644
--- a/build/target/product/lineage_x86.mk
+++ b/build/target/product/bliss_x86.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2019 The LineageOS Project
+# Copyright (C) 2018 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,9 +13,11 @@
 # limitations under the License.
 
 $(call inherit-product, build/target/product/aosp_x86.mk)
+$(call inherit-product, vendor/bliss/config/common.mk)
 
-include vendor/lineage/build/target/product/lineage_generic_target.mk
+# Allow building otatools
+TARGET_FORCE_OTA_PACKAGE := true
 
 TARGET_USES_64_BIT_BINDER := true
 
-PRODUCT_NAME := lineage_x86
+PRODUCT_NAME := bliss_x86
diff --git a/build/target/product/lineage_x86_64.mk b/build/target/product/bliss_x86_64.mk
similarity index 76%
rename from build/target/product/lineage_x86_64.mk
rename to build/target/product/bliss_x86_64.mk
index 69418b1..b622f02 100644
--- a/build/target/product/lineage_x86_64.mk
+++ b/build/target/product/bliss_x86_64.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2019 The LineageOS Project
+# Copyright (C) 2018 The LineageOS Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -13,7 +13,9 @@
 # limitations under the License.
 
 $(call inherit-product, build/target/product/aosp_x86_64.mk)
+$(call inherit-product, vendor/bliss/config/common.mk)
 
-include vendor/lineage/build/target/product/lineage_generic_target.mk
+# Allow building otatools
+TARGET_FORCE_OTA_PACKAGE := true
 
-PRODUCT_NAME := lineage_x86_64
+PRODUCT_NAME := bliss_x86_64
diff --git a/build/target/product/lineage_generic_target.mk b/build/target/product/lineage_generic_target.mk
deleted file mode 100644
index 9dc994e..0000000
--- a/build/target/product/lineage_generic_target.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2019 The LineageOS Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-$(call inherit-product, vendor/lineage/config/common.mk)
-
-PRODUCT_COPY_FILES += \
-    device/generic/goldfish/data/etc/permissions/privapp-permissions-goldfish.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-goldfish.xml \
-
-# Allow building otatools
-TARGET_FORCE_OTA_PACKAGE := true
diff --git a/build/tasks/apicheck.mk b/build/tasks/apicheck.mk
index ee6f35c..89a8374 100644
--- a/build/tasks/apicheck.mk
+++ b/build/tasks/apicheck.mk
@@ -90,3 +90,4 @@
 	$(hide) $(ACP) $(FRAMEWORK_LINEAGE_PLATFORM_API_FILE) $(current_sdk_release_text_file)
 
 endif
+
diff --git a/build/tasks/bacon.mk b/build/tasks/bacon.mk
deleted file mode 100644
index f018440..0000000
--- a/build/tasks/bacon.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2017 Unlegacy-Android
-# Copyright (C) 2017 The LineageOS Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -----------------------------------------------------------------
-# Lineage OTA update package
-
-LINEAGE_TARGET_PACKAGE := $(PRODUCT_OUT)/lineage-$(LINEAGE_VERSION).zip
-
-.PHONY: bacon
-bacon: $(INTERNAL_OTA_PACKAGE_TARGET)
-	$(hide) ln -f $(INTERNAL_OTA_PACKAGE_TARGET) $(LINEAGE_TARGET_PACKAGE)
-	$(hide) $(MD5SUM) $(LINEAGE_TARGET_PACKAGE) | sed "s|$(PRODUCT_OUT)/||" > $(LINEAGE_TARGET_PACKAGE).md5sum
-	@echo "Package Complete: $(LINEAGE_TARGET_PACKAGE)" >&2
diff --git a/build/templates/extract-files.sh b/build/templates/extract-files.sh
index fede670..6872dd8 100755
--- a/build/templates/extract-files.sh
+++ b/build/templates/extract-files.sh
@@ -25,9 +25,9 @@
 MY_DIR="${BASH_SOURCE%/*}"
 if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
 
-LINEAGE_ROOT="${MY_DIR}/../../.."
+BLISS_ROOT="${MY_DIR}/../../.."
 
-HELPER="${LINEAGE_ROOT}/vendor/lineage/build/tools/extract_utils.sh"
+HELPER="${BLISS_ROOT}/vendor/bliss/build/tools/extract_utils.sh"
 if [ ! -f "${HELPER}" ]; then
     echo "Unable to find helper script at ${HELPER}"
     exit 1
@@ -60,7 +60,7 @@
 fi
 
 # Initialize the helper
-setup_vendor "${DEVICE}" "${VENDOR}" "${LINEAGE_ROOT}" false "${CLEAN_VENDOR}"
+setup_vendor "${DEVICE}" "${VENDOR}" "${BLISS_ROOT}" false "${CLEAN_VENDOR}"
 
 extract "${MY_DIR}/proprietary-files.txt" "${SRC}" ${KANG} --section "${SECTION}"
 
diff --git a/build/templates/setup-makefiles.sh b/build/templates/setup-makefiles.sh
index 51b4ba2..c245ecf 100755
--- a/build/templates/setup-makefiles.sh
+++ b/build/templates/setup-makefiles.sh
@@ -27,9 +27,9 @@
 MY_DIR="${BASH_SOURCE%/*}"
 if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
 
-LINEAGE_ROOT="$MY_DIR"/../../..
+BLISS_ROOT="$MY_DIR"/../../..
 
-HELPER="$LINEAGE_ROOT"/vendor/lineage/build/tools/extract_utils.sh
+HELPER="$BLISS_ROOT"/vendor/bliss/build/tools/extract_utils.sh
 if [ ! -f "$HELPER" ]; then
     echo "Unable to find helper script at $HELPER"
     exit 1
@@ -37,7 +37,7 @@
 . "$HELPER"
 
 # Initialize the helper
-setup_vendor "$DEVICE" "$VENDOR" "$LINEAGE_ROOT"
+setup_vendor "$DEVICE" "$VENDOR" "$BLISS_ROOT"
 
 # Copyright headers and guards
 write_headers
diff --git a/build/tools/extract_utils.sh b/build/tools/extract_utils.sh
index d335307..2e08751 100644
--- a/build/tools/extract_utils.sh
+++ b/build/tools/extract_utils.sh
@@ -67,15 +67,15 @@
         exit 1
     fi
 
-    export LINEAGE_ROOT="$3"
-    if [ ! -d "$LINEAGE_ROOT" ]; then
-        echo "\$LINEAGE_ROOT must be set and valid before including this script!"
+    export BLISS_ROOT="$3"
+    if [ ! -d "$BLISS_ROOT" ]; then
+        echo "\$BLISS_ROOT must be set and valid before including this script!"
         exit 1
     fi
 
     export OUTDIR=vendor/"$VENDOR"/"$DEVICE"
-    if [ ! -d "$LINEAGE_ROOT/$OUTDIR" ]; then
-        mkdir -p "$LINEAGE_ROOT/$OUTDIR"
+    if [ ! -d "$BLISS_ROOT/$OUTDIR" ]; then
+        mkdir -p "$BLISS_ROOT/$OUTDIR"
     fi
 
     VNDNAME="$6"
@@ -83,9 +83,9 @@
         VNDNAME="$DEVICE"
     fi
 
-    export PRODUCTMK="$LINEAGE_ROOT"/"$OUTDIR"/"$VNDNAME"-vendor.mk
-    export ANDROIDMK="$LINEAGE_ROOT"/"$OUTDIR"/Android.mk
-    export BOARDMK="$LINEAGE_ROOT"/"$OUTDIR"/BoardConfigVendor.mk
+    export PRODUCTMK="$BLISS_ROOT"/"$OUTDIR"/"$VNDNAME"-vendor.mk
+    export ANDROIDMK="$BLISS_ROOT"/"$OUTDIR"/Android.mk
+    export BOARDMK="$BLISS_ROOT"/"$OUTDIR"/BoardConfigVendor.mk
 
     if [ "$4" == "true" ] || [ "$4" == "1" ]; then
         COMMON=1
@@ -858,16 +858,16 @@
     local HOST="$(uname)"
 
     if [ -z "$BAKSMALIJAR" ] || [ -z "$SMALIJAR" ]; then
-        export BAKSMALIJAR="$LINEAGE_ROOT"/vendor/lineage/build/tools/smali/baksmali.jar
-        export SMALIJAR="$LINEAGE_ROOT"/vendor/lineage/build/tools/smali/smali.jar
+        export BAKSMALIJAR="$BLISS_ROOT"/vendor/bliss/build/tools/smali/baksmali.jar
+        export SMALIJAR="$BLISS_ROOT"/vendor/bliss/build/tools/smali/smali.jar
     fi
 
     if [ -z "$VDEXEXTRACTOR" ]; then
-        export VDEXEXTRACTOR="$LINEAGE_ROOT"/vendor/lineage/build/tools/"$HOST"/vdexExtractor
+        export VDEXEXTRACTOR="$BLISS_ROOT"/vendor/bliss/build/tools/"$HOST"/vdexExtractor
     fi
 
     if [ -z "$CDEXCONVERTER" ]; then
-        export CDEXCONVERTER="$LINEAGE_ROOT"/vendor/lineage/build/tools/"$HOST"/compact_dex_converter
+        export CDEXCONVERTER="$BLISS_ROOT"/vendor/bliss/build/tools/"$HOST"/compact_dex_converter
     fi
 
     # Extract existing boot.oats to the temp folder
@@ -1114,7 +1114,7 @@
     local FIXUP_HASHLIST=( ${PRODUCT_COPY_FILES_FIXUP_HASHES[@]} ${PRODUCT_PACKAGES_FIXUP_HASHES[@]} )
     local PRODUCT_COPY_FILES_COUNT=${#PRODUCT_COPY_FILES_LIST[@]}
     local COUNT=${#FILELIST[@]}
-    local OUTPUT_ROOT="$LINEAGE_ROOT"/"$OUTDIR"/proprietary
+    local OUTPUT_ROOT="$BLISS_ROOT"/"$OUTDIR"/proprietary
     local OUTPUT_TMP="$TMPDIR"/"$OUTDIR"/proprietary
 
     if [ "$SRC" = "adb" ]; then
@@ -1142,7 +1142,7 @@
             # If OTA is block based, extract it.
             elif [ -a "$DUMPDIR"/system.new.dat ]; then
                 echo "Converting system.new.dat to system.img"
-                python "$LINEAGE_ROOT"/vendor/lineage/build/tools/sdat2img.py "$DUMPDIR"/system.transfer.list "$DUMPDIR"/system.new.dat "$DUMPDIR"/system.img 2>&1
+                python "$BLISS_ROOT"/vendor/bliss/build/tools/sdat2img.py "$DUMPDIR"/system.transfer.list "$DUMPDIR"/system.new.dat "$DUMPDIR"/system.img 2>&1
                 rm -rf "$DUMPDIR"/system.new.dat "$DUMPDIR"/system
                 mkdir "$DUMPDIR"/system "$DUMPDIR"/tmp
                 echo "Requesting sudo access to mount the system.img"
@@ -1318,7 +1318,7 @@
     local FILELIST=( ${PRODUCT_COPY_FILES_LIST[@]} )
     local COUNT=${#FILELIST[@]}
     local SRC="$2"
-    local OUTPUT_DIR="$LINEAGE_ROOT"/"$OUTDIR"/radio
+    local OUTPUT_DIR="$BLISS_ROOT"/"$OUTDIR"/radio
 
     if [ "$VENDOR_RADIO_STATE" -eq "0" ]; then
         echo "Cleaning firmware output directory ($OUTPUT_DIR).."
diff --git a/charger/Android.mk b/charger/Android.mk
index 5d42e6a..6ec2330 100644
--- a/charger/Android.mk
+++ b/charger/Android.mk
@@ -15,8 +15,8 @@
 endif
 
 include $(CLEAR_VARS)
-LOCAL_SRC_FILES := healthd_board_lineage.cpp
-LOCAL_MODULE := libhealthd.lineage
+LOCAL_SRC_FILES := healthd_board_bliss.cpp
+LOCAL_MODULE := libhealthd.bliss
 LOCAL_CFLAGS := -Werror
 LOCAL_C_INCLUDES := \
     system/core/healthd/include \
@@ -45,7 +45,7 @@
 
 define _add-charger-image
 include $$(CLEAR_VARS)
-LOCAL_MODULE := vendor_lineage_charger_$(notdir $(1))
+LOCAL_MODULE := vendor_bliss_charger_$(notdir $(1))
 LOCAL_MODULE_STEM := $(notdir $(1))
 _img_modules += $$(LOCAL_MODULE)
 LOCAL_SRC_FILES := $1
@@ -61,7 +61,7 @@
   $(eval $(call _add-charger-image,$(_img))))
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := lineage_charger_res_images
+LOCAL_MODULE := bliss_charger_res_images
 LOCAL_MODULE_TAGS := optional
 LOCAL_REQUIRED_MODULES := $(_img_modules)
 LOCAL_OVERRIDES_PACKAGES := charger_res_images
diff --git a/charger/healthd_board_lineage.cpp b/charger/healthd_board_bliss.cpp
similarity index 98%
rename from charger/healthd_board_lineage.cpp
rename to charger/healthd_board_bliss.cpp
index dcfbc4a..c2f42ea 100644
--- a/charger/healthd_board_lineage.cpp
+++ b/charger/healthd_board_bliss.cpp
@@ -290,10 +290,10 @@
     char value[PROP_VALUE_MAX];
     int rc = 0, scale_count = 0, i;
     GRSurface **scale_frames;
-    int scale_fps;  // Not in use (charger/lineage_battery_scale doesn't have FPS text
+    int scale_fps;  // Not in use (charger/bliss_battery_scale doesn't have FPS text
                     // chunk). We are using hard-coded frame.disp_time instead.
 
-    rc = res_create_multi_display_surface("charger/lineage_battery_scale",
+    rc = res_create_multi_display_surface("charger/bliss_battery_scale",
             &scale_count, &scale_fps, &scale_frames);
     if (rc < 0) {
         LOGE("%s: Unable to load battery scale image", __func__);
diff --git a/charger/images/hdpi/lineage_battery_scale.png b/charger/images/hdpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/hdpi/lineage_battery_scale.png
rename to charger/images/hdpi/bliss_battery_scale.png
Binary files differ
diff --git a/charger/images/ldpi/lineage_battery_scale.png b/charger/images/ldpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/ldpi/lineage_battery_scale.png
rename to charger/images/ldpi/bliss_battery_scale.png
Binary files differ
diff --git a/charger/images/mdpi/lineage_battery_scale.png b/charger/images/mdpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/mdpi/lineage_battery_scale.png
rename to charger/images/mdpi/bliss_battery_scale.png
Binary files differ
diff --git a/charger/images/xhdpi/lineage_battery_scale.png b/charger/images/xhdpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/xhdpi/lineage_battery_scale.png
rename to charger/images/xhdpi/bliss_battery_scale.png
Binary files differ
diff --git a/charger/images/xxhdpi/lineage_battery_scale.png b/charger/images/xxhdpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/xxhdpi/lineage_battery_scale.png
rename to charger/images/xxhdpi/bliss_battery_scale.png
Binary files differ
diff --git a/charger/images/xxxhdpi/lineage_battery_scale.png b/charger/images/xxxhdpi/bliss_battery_scale.png
similarity index 100%
rename from charger/images/xxxhdpi/lineage_battery_scale.png
rename to charger/images/xxxhdpi/bliss_battery_scale.png
Binary files differ
diff --git a/config/BoardConfigBliss.mk b/config/BoardConfigBliss.mk
new file mode 100644
index 0000000..f984277
--- /dev/null
+++ b/config/BoardConfigBliss.mk
@@ -0,0 +1,12 @@
+# Charger
+ifeq ($(WITH_BLISS_CHARGER),true)
+    BOARD_HAL_STATIC_LIBRARIES := libhealthd.bliss
+endif
+
+include vendor/bliss/config/BoardConfigKernel.mk
+
+ifeq ($(BOARD_USES_QCOM_HARDWARE),true)
+include vendor/bliss/config/BoardConfigQcom.mk
+endif
+
+include vendor/bliss/config/BoardConfigSoong.mk
diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk
index 05fa7d7..0d38b3a 100644
--- a/config/BoardConfigKernel.mk
+++ b/config/BoardConfigKernel.mk
@@ -129,9 +129,9 @@
 endif
 
 TOOLS_PATH_OVERRIDE := \
-    PATH=$(BUILD_TOP)/prebuilts/tools-lineage/$(HOST_OS)-x86/bin:$$PATH \
-    LD_LIBRARY_PATH=$(BUILD_TOP)/prebuilts/tools-lineage/$(HOST_OS)-x86/lib:$$LD_LIBRARY_PATH \
-    PERL5LIB=$(BUILD_TOP)/prebuilts/tools-lineage/common/perl-base
+    PATH=$(BUILD_TOP)/prebuilts/tools-bliss/$(HOST_OS)-x86/bin:$$PATH \
+    LD_LIBRARY_PATH=$(BUILD_TOP)/prebuilts/tools-bliss/$(HOST_OS)-x86/lib:$$LD_LIBRARY_PATH \
+    PERL5LIB=$(BUILD_TOP)/prebuilts/tools-bliss/$(HOST_OS)-x86/lib/perl-base
 
 # Set DTBO image locations so the build system knows to build them
 ifeq ($(TARGET_NEEDS_DTBOIMAGE),true)
diff --git a/config/BoardConfigLineage.mk b/config/BoardConfigLineage.mk
deleted file mode 100644
index 547792f..0000000
--- a/config/BoardConfigLineage.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-# Charger
-ifeq ($(WITH_LINEAGE_CHARGER),true)
-    BOARD_HAL_STATIC_LIBRARIES := libhealthd.lineage
-endif
-
-include vendor/lineage/config/BoardConfigKernel.mk
-
-ifeq ($(BOARD_USES_QCOM_HARDWARE),true)
-include vendor/lineage/config/BoardConfigQcom.mk
-endif
-
-include vendor/lineage/config/BoardConfigSoong.mk
diff --git a/config/BoardConfigSoong.mk b/config/BoardConfigSoong.mk
index f3e9b66..8f3b724 100644
--- a/config/BoardConfigSoong.mk
+++ b/config/BoardConfigSoong.mk
@@ -15,13 +15,13 @@
 # Documentation here:
 # https://github.com/LineageOS/android_build_soong/commit/8328367c44085b948c003116c0ed74a047237a69
 
-SOONG_CONFIG_NAMESPACES += lineageVarsPlugin
+SOONG_CONFIG_NAMESPACES += blissVarsPlugin
 
-SOONG_CONFIG_lineageVarsPlugin :=
+SOONG_CONFIG_blissVarsPlugin :=
 
 define addVar
-  SOONG_CONFIG_lineageVarsPlugin += $(1)
-  SOONG_CONFIG_lineageVarsPlugin_$(1) := $$(subst ",\",$$($1))
+  SOONG_CONFIG_blissVarsPlugin += $(1)
+  SOONG_CONFIG_blissVarsPlugin_$(1) := $$(subst ",\",$$($1))
 endef
 
 $(foreach v,$(EXPORT_TO_SOONG),$(eval $(call addVar,$(v))))
diff --git a/config/lineage_audio.mk b/config/bliss_audio.mk
similarity index 88%
rename from config/lineage_audio.mk
rename to config/bliss_audio.mk
index b87dfca..a70f958 100644
--- a/config/lineage_audio.mk
+++ b/config/bliss_audio.mk
@@ -1,10 +1,10 @@
 #
-# Lineage Audio Files
+# Bliss Audio Files
 #
 
-ALARM_PATH := vendor/lineage/prebuilt/common/media/audio/alarms
-NOTIFICATION_PATH := vendor/lineage/prebuilt/common/media/audio/notifications
-RINGTONE_PATH := vendor/lineage/prebuilt/common/media/audio/ringtones
+ALARM_PATH := vendor/bliss/prebuilt/common/media/audio/alarms
+NOTIFICATION_PATH := vendor/bliss/prebuilt/common/media/audio/notifications
+RINGTONE_PATH := vendor/bliss/prebuilt/common/media/audio/ringtones
 
 # Alarms
 PRODUCT_COPY_FILES += \
diff --git a/config/common.mk b/config/common.mk
index 5e7d394..e872bf8 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -1,10 +1,21 @@
 # Allow vendor/extra to override any property by setting it first
 $(call inherit-product-if-exists, vendor/extra/product.mk)
 
-PRODUCT_BRAND ?= LineageOS
+PRODUCT_BRAND ?= Bliss
 
 PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
 
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    keyguard.no_require_sim=true \
+    ro.com.google.clientidbase=android-google \
+    ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html \
+    ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html \
+    ro.com.android.wifi-watchlist=GoogleGuest \
+    ro.setupwizard.enterprise_mode=1 \
+    ro.com.android.dateformat=MM-dd-yyyy \
+    ro.com.android.dataroaming=false \
+    ro.opa.eligible_device=true
+
 ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
     ro.com.google.clientidbase=android-google
@@ -33,44 +44,44 @@
 
 # Backup Tool
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/bin/backuptool.sh:install/bin/backuptool.sh \
-    vendor/lineage/prebuilt/common/bin/backuptool.functions:install/bin/backuptool.functions \
-    vendor/lineage/prebuilt/common/bin/50-lineage.sh:$(TARGET_COPY_OUT_SYSTEM)/addon.d/50-lineage.sh \
-    vendor/lineage/prebuilt/common/bin/blacklist:$(TARGET_COPY_OUT_SYSTEM)/addon.d/blacklist
+    vendor/bliss/prebuilt/common/bin/backuptool.sh:install/bin/backuptool.sh \
+    vendor/bliss/prebuilt/common/bin/backuptool.functions:install/bin/backuptool.functions \
+    vendor/bliss/prebuilt/common/bin/50-bliss.sh:$(TARGET_COPY_OUT_SYSTEM)/addon.d/50-bliss.sh \
+    vendor/bliss/prebuilt/common/bin/blacklist:$(TARGET_COPY_OUT_SYSTEM)/addon.d/blacklist
 
 ifeq ($(AB_OTA_UPDATER),true)
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/bin/backuptool_ab.sh:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_ab.sh \
-    vendor/lineage/prebuilt/common/bin/backuptool_ab.functions:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_ab.functions \
-    vendor/lineage/prebuilt/common/bin/backuptool_postinstall.sh:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_postinstall.sh
+    vendor/bliss/prebuilt/common/bin/backuptool_ab.sh:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_ab.sh \
+    vendor/bliss/prebuilt/common/bin/backuptool_ab.functions:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_ab.functions \
+    vendor/bliss/prebuilt/common/bin/backuptool_postinstall.sh:$(TARGET_COPY_OUT_SYSTEM)/bin/backuptool_postinstall.sh
 endif
 
 # Backup Services whitelist
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/backup.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/backup.xml
+    vendor/bliss/config/permissions/backup.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/backup.xml
 
 # Lineage-specific broadcast actions whitelist
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/lineage-sysconfig.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/lineage-sysconfig.xml
+    vendor/bliss/config/permissions/lineage-sysconfig.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/lineage-sysconfig.xml
 
 # init.d support
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/etc/init.d/00banner:$(TARGET_COPY_OUT_SYSTEM)/etc/init.d/00banner \
-    vendor/lineage/prebuilt/common/bin/sysinit:$(TARGET_COPY_OUT_SYSTEM)/bin/sysinit
+    vendor/bliss/prebuilt/common/etc/init.d/00banner:$(TARGET_COPY_OUT_SYSTEM)/etc/init.d/00banner \
+    vendor/bliss/prebuilt/common/bin/sysinit:$(TARGET_COPY_OUT_SYSTEM)/bin/sysinit
 
 ifneq ($(TARGET_BUILD_VARIANT),user)
 # userinit support
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/etc/init.d/90userinit:$(TARGET_COPY_OUT_SYSTEM)/etc/init.d/90userinit
+    vendor/bliss/prebuilt/common/etc/init.d/90userinit:$(TARGET_COPY_OUT_SYSTEM)/etc/init.d/90userinit
 endif
 
-# Copy all Lineage-specific init rc files
-$(foreach f,$(wildcard vendor/lineage/prebuilt/common/etc/init/*.rc),\
+# Copy all Bliss-specific init rc files
+$(foreach f,$(wildcard vendor/bliss/prebuilt/common/etc/init/*.rc),\
 	$(eval PRODUCT_COPY_FILES += $(f):$(TARGET_COPY_OUT_SYSTEM)/etc/init/$(notdir $f)))
 
 # Copy over added mimetype supported in libcore.net.MimeUtils
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/lib/content-types.properties:$(TARGET_COPY_OUT_SYSTEM)/lib/content-types.properties
+    vendor/bliss/prebuilt/common/lib/content-types.properties:$(TARGET_COPY_OUT_SYSTEM)/lib/content-types.properties
 
 # Enable SIP+VoIP on all targets
 PRODUCT_COPY_FILES += \
@@ -80,39 +91,45 @@
 PRODUCT_COPY_FILES += \
     frameworks/base/data/keyboards/Vendor_045e_Product_028e.kl:$(TARGET_COPY_OUT_SYSTEM)/usr/keylayout/Vendor_045e_Product_0719.kl
 
-# This is Lineage!
+# Lineage specific permissions
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/org.lineageos.android.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.android.xml \
-    vendor/lineage/config/permissions/privapp-permissions-lineage-system.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-lineage.xml \
-    vendor/lineage/config/permissions/privapp-permissions-lineage-product.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-lineage.xml \
-    vendor/lineage/config/permissions/privapp-permissions-cm-legacy.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-cm-legacy.xml
-
-# Enforce privapp-permissions whitelist
-PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
-    ro.control_privapp_permissions=enforce
+    vendor/bliss/config/permissions/org.lineageos.android.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.android.xml \
+    vendor/bliss/config/permissions/privapp-permissions-lineage-system.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-lineage.xml \
+    vendor/bliss/config/permissions/privapp-permissions-lineage-product.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/privapp-permissions-lineage.xml \
+    vendor/bliss/config/permissions/privapp-permissions-cm-legacy.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-cm-legacy.xml
 
 # Hidden API whitelist
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/lineage-hiddenapi-package-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/lineage-hiddenapi-package-whitelist.xml
+    vendor/bliss/config/permissions/lineage-hiddenapi-package-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/lineage-hiddenapi-package-whitelist.xml
 
 # Power whitelist
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/lineage-power-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/lineage-power-whitelist.xml
+    vendor/bliss/config/permissions/lineage-power-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/lineage-power-whitelist.xml
+
+# Sensitive Phone Numbers list
+PRODUCT_COPY_FILES += \
+    vendor/bliss/prebuilt/common/etc/sensitive_pn.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sensitive_pn.xml
+
+# Default ringtone
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    ro.config.ringtone=Orion.ogg
+
+# Tethering - allow without requiring a provisioning app
+# (for devices that check this)
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    net.tethering.noprovisioning=true
 
 # Include AOSP audio files
-include vendor/lineage/config/aosp_audio.mk
-
-# Include Lineage audio files
-include vendor/lineage/config/lineage_audio.mk
+include vendor/bliss/config/aosp_audio.mk
 
 ifneq ($(TARGET_DISABLE_LINEAGE_SDK), true)
 # Lineage SDK
-include vendor/lineage/config/lineage_sdk_common.mk
+include vendor/bliss/config/lineage_sdk_common.mk
 endif
 
 # TWRP
 ifeq ($(WITH_TWRP),true)
-include vendor/lineage/config/twrp.mk
+include vendor/bliss/config/twrp.mk
 endif
 
 # Do not include art debug targets
@@ -188,36 +205,13 @@
     charger_res_images
 
 # Custom off-mode charger
-ifeq ($(WITH_LINEAGE_CHARGER),true)
+ifeq ($(WITH_BLISS_CHARGER),true)
 PRODUCT_PACKAGES += \
-    lineage_charger_res_images \
+    bliss_charger_res_images \
     font_log.png \
-    libhealthd.lineage
+    libhealthd.bliss
 endif
 
-# Filesystems tools
-PRODUCT_PACKAGES += \
-    fsck.exfat \
-    fsck.ntfs \
-    mke2fs \
-    mkfs.exfat \
-    mkfs.ntfs \
-    mount.ntfs
-
-# Openssh
-PRODUCT_PACKAGES += \
-    scp \
-    sftp \
-    ssh \
-    sshd \
-    sshd_config \
-    ssh-keygen \
-    start-ssh
-
-# rsync
-PRODUCT_PACKAGES += \
-    rsync
-
 # Storage manager
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
     ro.storage_manager.enabled=true
@@ -226,141 +220,13 @@
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
     media.recorder.show_manufacturer_and_model=true
 
-# These packages are excluded from user builds
-PRODUCT_PACKAGES_DEBUG += \
-    micro_bench \
-    procmem \
-    procrank \
-    strace
+# Overlays
+PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS += vendor/bliss/overlay
+DEVICE_PACKAGE_OVERLAYS += vendor/bliss/overlay/common
+# LatinIME dictionaries
+PRODUCT_PACKAGE_OVERLAYS += vendor/bliss/overlay/dictionaries
 
-# Conditionally build in su
-ifneq ($(TARGET_BUILD_VARIANT),user)
-ifeq ($(WITH_SU),true)
-PRODUCT_PACKAGES += \
-    su
-endif
-endif
-
-PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS += vendor/lineage/overlay
-DEVICE_PACKAGE_OVERLAYS += vendor/lineage/overlay/common
-
-PRODUCT_VERSION_MAJOR = 17
-PRODUCT_VERSION_MINOR = 0
-PRODUCT_VERSION_MAINTENANCE := 0
-
-ifeq ($(TARGET_VENDOR_SHOW_MAINTENANCE_VERSION),true)
-    LINEAGE_VERSION_MAINTENANCE := $(PRODUCT_VERSION_MAINTENANCE)
-else
-    LINEAGE_VERSION_MAINTENANCE := 0
-endif
-
-# Set LINEAGE_BUILDTYPE from the env RELEASE_TYPE, for jenkins compat
-
-ifndef LINEAGE_BUILDTYPE
-    ifdef RELEASE_TYPE
-        # Starting with "LINEAGE_" is optional
-        RELEASE_TYPE := $(shell echo $(RELEASE_TYPE) | sed -e 's|^LINEAGE_||g')
-        LINEAGE_BUILDTYPE := $(RELEASE_TYPE)
-    endif
-endif
-
-# Filter out random types, so it'll reset to UNOFFICIAL
-ifeq ($(filter RELEASE NIGHTLY SNAPSHOT EXPERIMENTAL,$(LINEAGE_BUILDTYPE)),)
-    LINEAGE_BUILDTYPE :=
-endif
-
-ifdef LINEAGE_BUILDTYPE
-    ifneq ($(LINEAGE_BUILDTYPE), SNAPSHOT)
-        ifdef LINEAGE_EXTRAVERSION
-            # Force build type to EXPERIMENTAL
-            LINEAGE_BUILDTYPE := EXPERIMENTAL
-            # Remove leading dash from LINEAGE_EXTRAVERSION
-            LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//')
-            # Add leading dash to LINEAGE_EXTRAVERSION
-            LINEAGE_EXTRAVERSION := -$(LINEAGE_EXTRAVERSION)
-        endif
-    else
-        ifndef LINEAGE_EXTRAVERSION
-            # Force build type to EXPERIMENTAL, SNAPSHOT mandates a tag
-            LINEAGE_BUILDTYPE := EXPERIMENTAL
-        else
-            # Remove leading dash from LINEAGE_EXTRAVERSION
-            LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//')
-            # Add leading dash to LINEAGE_EXTRAVERSION
-            LINEAGE_EXTRAVERSION := -$(LINEAGE_EXTRAVERSION)
-        endif
-    endif
-else
-    # If LINEAGE_BUILDTYPE is not defined, set to UNOFFICIAL
-    LINEAGE_BUILDTYPE := UNOFFICIAL
-    LINEAGE_EXTRAVERSION :=
-endif
-
-ifeq ($(LINEAGE_BUILDTYPE), UNOFFICIAL)
-    ifneq ($(TARGET_UNOFFICIAL_BUILD_ID),)
-        LINEAGE_EXTRAVERSION := -$(TARGET_UNOFFICIAL_BUILD_ID)
-    endif
-endif
-
-ifeq ($(LINEAGE_BUILDTYPE), RELEASE)
-    ifndef TARGET_VENDOR_RELEASE_BUILD_ID
-        LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(LINEAGE_BUILD)
-    else
-        ifeq ($(TARGET_BUILD_VARIANT),user)
-            ifeq ($(LINEAGE_VERSION_MAINTENANCE),0)
-                LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD)
-            else
-                LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD)
-            endif
-        else
-            LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(LINEAGE_BUILD)
-        endif
-    endif
-else
-    ifeq ($(LINEAGE_VERSION_MAINTENANCE),0)
-        ifeq ($(LINEAGE_VERSION_APPEND_TIME_OF_DAY),true)
-            LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d_%H%M%S)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD)
-        else
-            LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD)
-        endif
-    else
-        ifeq ($(LINEAGE_VERSION_APPEND_TIME_OF_DAY),true)
-            LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(shell date -u +%Y%m%d_%H%M%S)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD)
-        else
-            LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(shell date -u +%Y%m%d)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD)
-        endif
-    endif
-endif
-
-PRODUCT_EXTRA_RECOVERY_KEYS += \
-    vendor/lineage/build/target/product/security/lineage
-
--include vendor/lineage-priv/keys/keys.mk
-
-LINEAGE_DISPLAY_VERSION := $(LINEAGE_VERSION)
-
-ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),)
-ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),build/target/product/security/testkey)
-    ifneq ($(LINEAGE_BUILDTYPE), UNOFFICIAL)
-        ifndef TARGET_VENDOR_RELEASE_BUILD_ID
-            ifneq ($(LINEAGE_EXTRAVERSION),)
-                # Remove leading dash from LINEAGE_EXTRAVERSION
-                LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//')
-                TARGET_VENDOR_RELEASE_BUILD_ID := $(LINEAGE_EXTRAVERSION)
-            else
-                TARGET_VENDOR_RELEASE_BUILD_ID := $(shell date -u +%Y%m%d)
-            endif
-        else
-            TARGET_VENDOR_RELEASE_BUILD_ID := $(TARGET_VENDOR_RELEASE_BUILD_ID)
-        endif
-        ifeq ($(LINEAGE_VERSION_MAINTENANCE),0)
-            LINEAGE_DISPLAY_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD)
-        else
-            LINEAGE_DISPLAY_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD)
-        endif
-    endif
-endif
-endif
+# Squisher Location
+SQUISHER_SCRIPT := vendor/bliss/tools/squisher
 
 -include $(WORKSPACE)/build_env/image-auto-bits.mk
--include vendor/lineage/config/partner_gms.mk
diff --git a/config/common_full.mk b/config/common_full.mk
index 8a2b02e..0596d71 100644
--- a/config/common_full.mk
+++ b/config/common_full.mk
@@ -1,5 +1,5 @@
-# Inherit common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common.mk)
+# Inherit common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common.mk)
 
 PRODUCT_SIZE := full
 
diff --git a/config/common_full_phone.mk b/config/common_full_phone.mk
index 224e454..5ed802f 100644
--- a/config/common_full_phone.mk
+++ b/config/common_full_phone.mk
@@ -1,11 +1,11 @@
-# Inherit full common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_full.mk)
+# Inherit full common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_full.mk)
 
 # Required packages
 PRODUCT_PACKAGES += \
     LatinIME
 
 # Include Lineage LatinIME dictionaries
-PRODUCT_PACKAGE_OVERLAYS += vendor/lineage/overlay/dictionaries
+PRODUCT_PACKAGE_OVERLAYS += vendor/bliss/overlay/dictionaries
 
-$(call inherit-product, vendor/lineage/config/telephony.mk)
+$(call inherit-product, vendor/bliss/config/telephony.mk)
diff --git a/config/common_full_tablet_wifionly.mk b/config/common_full_tablet_wifionly.mk
index f75d42a..8c8ecfe 100644
--- a/config/common_full_tablet_wifionly.mk
+++ b/config/common_full_tablet_wifionly.mk
@@ -1,9 +1,9 @@
-# Inherit full common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_full.mk)
+# Inherit full common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_full.mk)
 
 # Required packages
 PRODUCT_PACKAGES += \
     LatinIME
 
 # Include Lineage LatinIME dictionaries
-PRODUCT_PACKAGE_OVERLAYS += vendor/lineage/overlay/dictionaries
+PRODUCT_PACKAGE_OVERLAYS += vendor/bliss/overlay/dictionaries
diff --git a/config/common_full_tv.mk b/config/common_full_tv.mk
index 4df9979..4cbef2d 100644
--- a/config/common_full_tv.mk
+++ b/config/common_full_tv.mk
@@ -1,8 +1,8 @@
 # Exclude AudioFX
 TARGET_EXCLUDES_AUDIOFX := true
 
-# Inherit full common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_full.mk)
+# Inherit full common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_full.mk)
 
 # Inherit Lineage atv device tree
 $(call inherit-product, device/lineage/atv/lineage_atv.mk)
@@ -11,4 +11,4 @@
     AppDrawer \
     LineageCustomizer
 
-DEVICE_PACKAGE_OVERLAYS += vendor/lineage/overlay/tv
+DEVICE_PACKAGE_OVERLAYS += vendor/bliss/overlay/tv
diff --git a/config/common_mini.mk b/config/common_mini.mk
index 49caa02..ac5f970 100644
--- a/config/common_mini.mk
+++ b/config/common_mini.mk
@@ -1,4 +1,4 @@
-# Inherit mini common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common.mk)
+# Inherit mini common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common.mk)
 
 PRODUCT_SIZE := mini
diff --git a/config/common_mini_phone.mk b/config/common_mini_phone.mk
index 6b2c57a..95a7732 100644
--- a/config/common_mini_phone.mk
+++ b/config/common_mini_phone.mk
@@ -1,8 +1,8 @@
-# Inherit mini common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_mini.mk)
+# Inherit mini common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_mini.mk)
 
 # Required packages
 PRODUCT_PACKAGES += \
     LatinIME
 
-$(call inherit-product, vendor/lineage/config/telephony.mk)
+$(call inherit-product, vendor/bliss/config/telephony.mk)
diff --git a/config/common_mini_tablet_wifionly.mk b/config/common_mini_tablet_wifionly.mk
index 9d803d2..bae0813 100644
--- a/config/common_mini_tablet_wifionly.mk
+++ b/config/common_mini_tablet_wifionly.mk
@@ -1,5 +1,5 @@
-# Inherit mini common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_mini.mk)
+# Inherit mini common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_mini.mk)
 
 # Required packages
 PRODUCT_PACKAGES += \
diff --git a/config/common_mini_tv.mk b/config/common_mini_tv.mk
index 83409fb..b2a4a27 100644
--- a/config/common_mini_tv.mk
+++ b/config/common_mini_tv.mk
@@ -1,5 +1,5 @@
 # Exclude AudioFX
 TARGET_EXCLUDES_AUDIOFX := true
 
-# Inherit mini common Lineage stuff
-$(call inherit-product, vendor/lineage/config/common_mini.mk)
+# Inherit mini common Bliss stuff
+$(call inherit-product, vendor/bliss/config/common_mini.mk)
diff --git a/config/lineage_sdk_common.mk b/config/lineage_sdk_common.mk
index 7ea484b..36c8940 100644
--- a/config/lineage_sdk_common.mk
+++ b/config/lineage_sdk_common.mk
@@ -1,14 +1,14 @@
 # Permissions for lineage sdk services
 PRODUCT_COPY_FILES += \
-    vendor/lineage/config/permissions/org.lineageos.audio.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.audio.xml \
-    vendor/lineage/config/permissions/org.lineageos.hardware.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.hardware.xml \
-    vendor/lineage/config/permissions/org.lineageos.livedisplay.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.livedisplay.xml \
-    vendor/lineage/config/permissions/org.lineageos.performance.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.performance.xml \
-    vendor/lineage/config/permissions/org.lineageos.profiles.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.profiles.xml \
-    vendor/lineage/config/permissions/org.lineageos.settings.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.settings.xml \
-    vendor/lineage/config/permissions/org.lineageos.style.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.style.xml \
-    vendor/lineage/config/permissions/org.lineageos.trust.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.trust.xml \
-    vendor/lineage/config/permissions/org.lineageos.weather.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.weather.xml
+    vendor/bliss/config/permissions/org.lineageos.audio.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.audio.xml \
+    vendor/bliss/config/permissions/org.lineageos.hardware.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.hardware.xml \
+    vendor/bliss/config/permissions/org.lineageos.livedisplay.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.livedisplay.xml \
+    vendor/bliss/config/permissions/org.lineageos.performance.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.performance.xml \
+    vendor/bliss/config/permissions/org.lineageos.profiles.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.profiles.xml \
+    vendor/bliss/config/permissions/org.lineageos.settings.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.settings.xml \
+    vendor/bliss/config/permissions/org.lineageos.style.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.style.xml \
+    vendor/bliss/config/permissions/org.lineageos.trust.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.trust.xml \
+    vendor/bliss/config/permissions/org.lineageos.weather.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/org.lineageos.weather.xml
 
 # Lineage Platform Library
 PRODUCT_PACKAGES += \
@@ -16,6 +16,11 @@
     org.lineageos.platform \
     org.lineageos.platform.xml
 
+# Lineage Hardware Abstraction Framework
+PRODUCT_PACKAGES += \
+    org.lineageos.hardware \
+    org.lineageos.hardware.xml
+
 # JNI Libraries
 PRODUCT_PACKAGES += \
     liblineage-sdk_platform_jni
diff --git a/config/telephony.mk b/config/telephony.mk
index 73d7508..46dcc01 100644
--- a/config/telephony.mk
+++ b/config/telephony.mk
@@ -1,6 +1,6 @@
 # Sensitive Phone Numbers list
 PRODUCT_COPY_FILES += \
-    vendor/lineage/prebuilt/common/etc/sensitive_pn.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sensitive_pn.xml
+    vendor/bliss/prebuilt/common/etc/sensitive_pn.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sensitive_pn.xml
 
 # World APN list
 PRODUCT_PACKAGES += \
diff --git a/prebuilt/common/Android.mk b/prebuilt/common/Android.mk
index 83eecee..c565fce 100644
--- a/prebuilt/common/Android.mk
+++ b/prebuilt/common/Android.mk
@@ -18,10 +18,10 @@
 LOCAL_MODULE := apns-conf.xml
 LOCAL_MODULE_CLASS := ETC
 
-DEFAULT_APNS_FILE := vendor/lineage/prebuilt/common/etc/apns-conf.xml
+DEFAULT_APNS_FILE := vendor/bliss/prebuilt/common/etc/apns-conf.xml
 
 ifdef CUSTOM_APNS_FILE
-CUSTOM_APNS_SCRIPT := vendor/lineage/tools/custom_apns.py
+CUSTOM_APNS_SCRIPT := vendor/bliss/tools/custom_apns.py
 FINAL_APNS_FILE := $(local-generated-sources-dir)/apns-conf.xml
 
 $(FINAL_APNS_FILE): PRIVATE_SCRIPT := $(CUSTOM_APNS_SCRIPT)
diff --git a/prebuilt/common/bin/50-lineage.sh b/prebuilt/common/bin/50-bliss.sh
similarity index 84%
rename from prebuilt/common/bin/50-lineage.sh
rename to prebuilt/common/bin/50-bliss.sh
index 360a398..d4d173b 100755
--- a/prebuilt/common/bin/50-lineage.sh
+++ b/prebuilt/common/bin/50-bliss.sh
@@ -2,8 +2,8 @@
 #
 # ADDOND_VERSION=2
 #
-# /system/addon.d/50-lineage.sh
-# During a LineageOS 17.0 upgrade, this script backs up /system/etc/hosts,
+# /system/addon.d/50-bliss.sh
+# During a Bliss upgrade, this script backs up /system/etc/hosts,
 # /system is formatted and reinstalled, then the file is restored.
 #
 
diff --git a/prebuilt/common/bin/backuptool.sh b/prebuilt/common/bin/backuptool.sh
index 9588c4a..73f1f6e 100755
--- a/prebuilt/common/bin/backuptool.sh
+++ b/prebuilt/common/bin/backuptool.sh
@@ -5,7 +5,7 @@
 
 export C=/tmp/backupdir
 export S=$2
-export V=17.0
+export V=16.0
 
 export ADDOND_VERSION=1
 
diff --git a/prebuilt/common/bin/backuptool_ab.functions b/prebuilt/common/bin/backuptool_ab.functions
index 4304ed8..82ce70b 100644
--- a/prebuilt/common/bin/backuptool_ab.functions
+++ b/prebuilt/common/bin/backuptool_ab.functions
@@ -5,7 +5,7 @@
 
 export S=/system
 export C=/postinstall/tmp/backupdir
-export V=17.0
+export V=16.0
 export backuptool_ab=true
 
 copy_file() {
diff --git a/prebuilt/common/bin/backuptool_ab.sh b/prebuilt/common/bin/backuptool_ab.sh
index 74c8cb5..157110f 100755
--- a/prebuilt/common/bin/backuptool_ab.sh
+++ b/prebuilt/common/bin/backuptool_ab.sh
@@ -5,7 +5,7 @@
 
 export S=/system
 export C=/postinstall/tmp/backupdir
-export V=17.0
+export V=16.0
 
 export ADDOND_VERSION=2
 
diff --git a/prebuilt/common/etc/init/lineage-adb.rc b/prebuilt/common/etc/init/bliss-adb.rc
similarity index 100%
rename from prebuilt/common/etc/init/lineage-adb.rc
rename to prebuilt/common/etc/init/bliss-adb.rc
diff --git a/prebuilt/common/etc/init/lineage-governor.rc b/prebuilt/common/etc/init/bliss-governor.rc
similarity index 100%
rename from prebuilt/common/etc/init/lineage-governor.rc
rename to prebuilt/common/etc/init/bliss-governor.rc
diff --git a/prebuilt/common/etc/init/lineage-iosched.rc b/prebuilt/common/etc/init/bliss-iosched.rc
similarity index 100%
rename from prebuilt/common/etc/init/lineage-iosched.rc
rename to prebuilt/common/etc/init/bliss-iosched.rc
diff --git a/prebuilt/common/etc/init/lineage-radio.rc b/prebuilt/common/etc/init/bliss-radio.rc
similarity index 100%
rename from prebuilt/common/etc/init/lineage-radio.rc
rename to prebuilt/common/etc/init/bliss-radio.rc
diff --git a/prebuilt/common/etc/init/lineage-ssh.rc b/prebuilt/common/etc/init/bliss-ssh.rc
similarity index 100%
rename from prebuilt/common/etc/init/lineage-ssh.rc
rename to prebuilt/common/etc/init/bliss-ssh.rc
diff --git a/prebuilt/common/etc/init/lineage-system.rc b/prebuilt/common/etc/init/bliss-system.rc
similarity index 96%
rename from prebuilt/common/etc/init/lineage-system.rc
rename to prebuilt/common/etc/init/bliss-system.rc
index 619c6d8..4747c99 100644
--- a/prebuilt/common/etc/init/lineage-system.rc
+++ b/prebuilt/common/etc/init/bliss-system.rc
@@ -1,4 +1,4 @@
-# LineageOS core functionality
+# Bliss core functionality
 on init
     export ANDROID_CACHE /cache
     export TERMINFO /system/etc/terminfo
diff --git a/prebuilt/common/etc/init/lineage-updates.rc b/prebuilt/common/etc/init/bliss-updates.rc
similarity index 71%
rename from prebuilt/common/etc/init/lineage-updates.rc
rename to prebuilt/common/etc/init/bliss-updates.rc
index 3a9b481..eba752c 100644
--- a/prebuilt/common/etc/init/lineage-updates.rc
+++ b/prebuilt/common/etc/init/bliss-updates.rc
@@ -1,4 +1,4 @@
 on post-fs-data
     # Create an additional OTA package directory that unlike /data/ota_package
     # will not be touched by GmsCore.
-    mkdir /data/lineageos_updates 0770 system cache
+    mkdir /data/bliss_updates 0770 system cache
diff --git a/tools/custom_apns.py b/tools/custom_apns.py
deleted file mode 100644
index b58ece1..0000000
--- a/tools/custom_apns.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2018 The LineageOS Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-import sys
-from xml.dom.minidom import parseString
-
-def main(argv):
-    reload(sys)
-    sys.setdefaultencoding('utf8')
-    original_file = 'vendor/lineage/prebuilt/common/etc/apns-conf.xml'
-
-    if len(argv) == 3:
-        output_file_path = argv[1]
-        custom_override_file = argv[2]
-    else:
-        raise ValueError("Wrong number of arguments %s" % len(argv))
-
-    custom_apn_names = []
-    with open(custom_override_file, 'r') as f:
-        for line in f:
-            xmltree = parseString(line)
-            carrier = xmltree.getElementsByTagName('apn')[0].getAttribute('carrier')
-            custom_apn_names.append(carrier)
-
-    with open(original_file, 'r') as input_file:
-        with open(output_file_path, 'w') as output_file:
-            for line in input_file:
-                writeOriginalLine = True
-                for apn in custom_apn_names:
-                    if apn in line:
-                        with open(custom_override_file, 'r') as custom_file:
-                            for override_line in custom_file:
-                                if apn in override_line:
-                                    output_file.write(override_line)
-                                    writeOriginalLine = False
-                                    custom_apn_names.remove(apn)
-                if writeOriginalLine:
-                    if "</apns>" in line:
-                        if custom_apn_names:
-                            for apn in custom_apn_names:
-                                with open(custom_override_file, 'r') as custom_file:
-                                    for override_line in custom_file:
-                                        if apn in override_line:
-                                            output_file.write(override_line)
-                    output_file.write(line)
-
-if __name__ == '__main__':
-    main(sys.argv)
