diff --git a/bliss.devices b/bliss.devices
new file mode 100644
index 0000000..345e6ae
--- /dev/null
+++ b/bliss.devices
@@ -0,0 +1 @@
+Test
diff --git a/build/envsetup.sh b/build/envsetup.sh
new file mode 100644
index 0000000..d424a68
--- /dev/null
+++ b/build/envsetup.sh
@@ -0,0 +1,192 @@
+# bliss functions that extend build/envsetup.sh
+
+function bliss_device_combos()
+{
+    local T list_file variant device
+
+    T="$(gettop)"
+    list_file="${T}/vendor/bliss/bliss.devices"
+    variant="userdebug"
+
+    if [[ $1 ]]
+    then
+        if [[ $2 ]]
+        then
+            list_file="$1"
+            variant="$2"
+        else
+            if [[ ${VARIANT_CHOICES[@]} =~ (^| )$1($| ) ]]
+            then
+                variant="$1"
+            else
+                list_file="$1"
+            fi
+        fi
+    fi
+
+    if [[ ! -f "${list_file}" ]]
+    then
+        echo "unable to find device list: ${list_file}"
+        list_file="${T}/vendor/bliss/bliss.devices"
+        echo "defaulting device list file to: ${list_file}"
+    fi
+
+    while IFS= read -r device
+    do
+        add_lunch_combo "bliss_${device}-${variant}"
+    done < "${list_file}"
+}
+
+function bliss_rename_function()
+{
+    eval "original_bliss_$(declare -f ${1})"
+}
+
+function _bliss_build_hmm() #hidden
+{
+    printf "%-8s %s" "${1}:" "${2}"
+}
+
+function bliss_append_hmm()
+{
+    HMM_DESCRIPTIVE=("${HMM_DESCRIPTIVE[@]}" "$(_bliss_build_hmm "$1" "$2")")
+}
+
+function bliss_add_hmm_entry()
+{
+    for c in ${!HMM_DESCRIPTIVE[*]}
+    do
+        if [[ "${1}" == $(echo "${HMM_DESCRIPTIVE[$c]}" | cut -f1 -d":") ]]
+        then
+            HMM_DESCRIPTIVE[${c}]="$(_bliss_build_hmm "$1" "$2")"
+            return
+        fi
+    done
+    bliss_append_hmm "$1" "$2"
+}
+
+function blissremote()
+{
+    local proj pfx project
+
+    if ! git rev-parse &> /dev/null
+    then
+        echo "Not in a git directory. Please run this from an Android repository you wish to set up."
+        return
+    fi
+    git remote rm bliss 2> /dev/null
+
+    proj="$(pwd -P | sed "s#$ANDROID_BUILD_TOP/##g")"
+
+    if (echo "$proj" | egrep -q 'external|system|build|bionic|art|libcore|prebuilt|dalvik') ; then
+        pfx="android_"
+    fi
+
+    project="${proj//\//_}"
+
+    git remote add bliss "git@github.com:BlissRoms/$pfx$project"
+    echo "Remote 'bliss' created"
+}
+
+function losremote()
+{
+    local proj pfx project
+
+    if ! git rev-parse &> /dev/null
+    then
+        echo "Not in a git directory. Please run this from an Android repository you wish to set up."
+        return
+    fi
+    git remote rm cm 2> /dev/null
+
+    proj="$(pwd -P | sed "s#$ANDROID_BUILD_TOP/##g")"
+    pfx="android_"
+    project="${proj//\//_}"
+    git remote add los "git@github.com:LineageOS/$pfx$project"
+    echo "Remote 'los' created"
+}
+
+function aospremote()
+{
+    local pfx project
+
+    if ! git rev-parse &> /dev/null
+    then
+        echo "Not in a git directory. Please run this from an Android repository you wish to set up."
+        return
+    fi
+    git remote rm aosp 2> /dev/null
+
+    project="$(pwd -P | sed "s#$ANDROID_BUILD_TOP/##g")"
+    if [[ "$project" != device* ]]
+    then
+        pfx="platform/"
+    fi
+    git remote add aosp "https://android.googlesource.com/$pfx$project"
+    echo "Remote 'aosp' created"
+}
+
+function cafremote()
+{
+    local pfx project
+
+    if ! git rev-parse &> /dev/null
+    then
+        echo "Not in a git directory. Please run this from an Android repository you wish to set up."
+    fi
+    git remote rm caf 2> /dev/null
+
+    project="$(pwd -P | sed "s#$ANDROID_BUILD_TOP/##g")"
+    if [[ "$project" != device* ]]
+    then
+        pfx="platform/"
+    fi
+    git remote add caf "git://codeaurora.org/$pfx$project"
+    echo "Remote 'caf' created"
+}
+
+function bliss_push()
+{
+    local branch ssh_name path_opt proj
+    branch="lp5.1"
+    ssh_name="bliss_review"
+    path_opt=
+
+    if [[ "$1" ]]
+    then
+        proj="$ANDROID_BUILD_TOP/$(echo "$1" | sed "s#$ANDROID_BUILD_TOP/##g")"
+        path_opt="--git-dir=$(printf "%q/.git" "${proj}")"
+    else
+        proj="$(pwd -P)"
+    fi
+    proj="$(echo "$proj" | sed "s#$ANDROID_BUILD_TOP/##g")"
+    proj="$(echo "$proj" | sed 's#/$##')"
+    proj="${proj//\//_}"
+
+    if (echo "$proj" | egrep -q 'external|system|build|bionic|art|libcore|prebuilt|dalvik') ; then
+        proj="android_$proj"
+    fi
+
+    git $path_opt push "ssh://${ssh_name}/BlissRoms/$proj" "HEAD:refs/for/$branch"
+}
+
+
+bliss_rename_function hmm
+function hmm() #hidden
+{
+    local i T
+    T="$(gettop)"
+    original_bliss_hmm
+    echo
+
+    echo "vendor/bliss extended functions. The complete list is:"
+    for i in $(grep -P '^function .*$' "$T/vendor/bliss/build/envsetup.sh" | grep -v "#hidden" | sed 's/function \([a-z_]*\).*/\1/' | sort | uniq); do
+        echo "$i"
+    done |column
+}
+
+bliss_append_hmm "blissremote" "Add a git remote for matching BlissRoms repository"
+bliss_append_hmm "losremote" "Add a git remote for matching LineageOS repository"
+bliss_append_hmm "aospremote" "Add git remote for matching AOSP repository"
+bliss_append_hmm "cafremote" "Add git remote for matching CodeAurora repository."
+
diff --git a/vendorsetup.sh b/vendorsetup.sh
index 93e98de..24a9628 100644
--- a/vendorsetup.sh
+++ b/vendorsetup.sh
@@ -1,4 +1,3 @@
-for combo in $(cat vendor/bliss/bliss-device-targets)
-do
-    add_lunch_combo $combo
-done
+. "$(gettop)/vendor/bliss/build/envsetup.sh"
+
+bliss_device_combos
