diff --git a/1.8.md b/1.8.md
index d513d506..b65ad338 100644
--- a/1.8.md
+++ b/1.8.md
@@ -33,6 +33,7 @@ bottom of the window. See [#279](https://github.com/dylanaraps/neofetch/pull/279
 ### OS
 
 - Added support for Devuan Linux.
+- Added support for macOS Sierra. **[@iandrewt](https://github.com/iandrewt)**
 
 
 ### Terminal and Terminal Font
@@ -76,6 +77,12 @@ block will be.
 - [Cmus] The function now works on both OS X and Linux.
 - [iTunes] Fix song not displaying. **[@iandrewt](https://github.com/iandrewt)**
 
+**CPU Usage**<br \>
+
+- Fixed broken CPU usage output on BSD and Windows
+- Fixed misleading output on Linux / Mac OS X
+- Moved CPU Usage to its own dedicated function
+
 
 ### Image
 
diff --git a/README.md b/README.md
index bb14c43a..1b732d2c 100644
--- a/README.md
+++ b/README.md
@@ -173,15 +173,15 @@ https://github.com/dylanaraps/neofetch/wiki/Following-HEAD
 ### Gentoo / Funtoo
 
 1. Add the 3rd party repo
-    - `layman -o https://gist.githubusercontent.com/z1lt0id/24d45b15800b98975260/raw/2fdf6645cdc3c1ca0b0af83a7bf8f86598e386ae/fs0ciety.xml -f -a fs0ciety`
-2. Sync the repos
-    - `layman -S`
-3. To enable w3m and scrot support, enable the appropriate flags.
-    - `echo "x11-apps/neofetch" >> /etc/portage/package.use`
+    - `# wget https://git.io/vocNV -O /etc/portage/repos.conf/konimex.conf`
+2. Sync the repo
+    - `# emerge --sync konimex`
+3. To enable additional features such as w3m and music support, enable the appropriate USE flags. For example:
+    - `# echo "app-misc/neofetch X -moc" >> /etc/portage/package.use`
 4. Install the package
-    - `emerge -a x11-apps/neofetch`
+    - `# emerge -a app-misc/neofetch`
 
-There is also a git version available: `emerge --autounmask-write =x11-apps/neofetch-9999`
+To install the git version, just add `app-misc/neofetch ~<your architecture>` to `package.accept_keywords`
 
 
 ### CRUX
@@ -389,8 +389,6 @@ alias fetch2="fetch \
     --underline_char char       Character to use when underlining title
     --line_wrap on/off          Enable/Disable line wrapping
     --bold on/off               Enable/Disable bold text
-    --prompt_height num         Set this to your prompt height to fix issues with
-                                the text going off screen at the top
 
 
     Color Blocks:
@@ -407,15 +405,14 @@ alias fetch2="fetch \
     --progress_length num       Length in spaces to make the progress bars.
     --progress_colors num num   Colors to make the progress bar.
                                 Set in this order: elapsed, total
-    --cpu_display mode1 mode2   Which shorthand to use and how CPU usage should be printed
-                                mode1 takes: name, speed, tiny, on, off
-                                mode2 takes: info, bar, infobar, barinfo
-    --memory_display mode       Which way should the memory progress bar be added
-                                Takes bar, infobar, barinfo
-    --battery_display mode      Which way should the battery progress bar be added
-                                Takes bar, infobar, barinfo
-    --disk_display mode         Which way should the disk progress bar be added
-                                Takes bar, infobar, barinfo, perc
+    --cpu_display mode          Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --memory_display mode       Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --battery_display mode      Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --disk_display mode         Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
 
 
     Image:
diff --git a/config/config b/config/config
index 19dd34bb..6a491572 100644
--- a/config/config
+++ b/config/config
@@ -35,6 +35,7 @@ printinfo () {
     info "GPU" gpu
     info "Memory" memory
 
+    # info "CPU Usage" cpu_usage
     # info "Disk" disk
     # info "Battery" battery
     # info "Font" font
@@ -99,10 +100,14 @@ shell_version="off"
 # scaling_current, scaling_min, scaling_max
 speed_type="max"
 
-# CPU Display
-# Set shorthand setting and progress bar setting
-# --cpu_display (name, speed, tiny, on, off) (bar, infobar, barinfo, off)
+# CPU Shorthand
+# Set shorthand setting
+# --cpu_shorthand name, speed, tiny, on, off
 cpu_shorthand="off"
+
+# CPU Usage display
+# Set CPU usage display setting
+# --cpu_display bar, infobar, barinfo, off
 cpu_display="off"
 
 # CPU Cores
diff --git a/neofetch b/neofetch
index d5779f2e..39183e53 100755
--- a/neofetch
+++ b/neofetch
@@ -47,6 +47,7 @@ printinfo () {
     info "GPU" gpu
     info "Memory" memory
 
+    # info "CPU Usage" cpu_usage
     # info "Disk" disk
     # info "Battery" battery
     # info "Font" font
@@ -111,11 +112,10 @@ shell_version="off"
 # scaling_current, scaling_min, scaling_max
 speed_type="max"
 
-# CPU Display
-# Set shorthand setting and progress bar setting
-# --cpu_display (name, speed, tiny, on, off) (bar, infobar, barinfo, off)
+# CPU Shorthand
+# Set shorthand setting
+# --cpu_shorthand name, speed, tiny, on, off
 cpu_shorthand="off"
-cpu_display="off"
 
 # CPU Cores
 # Display CPU cores in output
@@ -289,9 +289,11 @@ progress_color_total="distro"
 # barinfo: The bar is displayed before the info.
 # off: Only the info is displayed.
 #
+# --cpu_display bar/infobar/barinfo/off
 # --memory_display bar/infobar/barinfo/off
 # --battery_display bar/infobar/barinfo/off
 # --disk_display bar/infobar/barinfo/off
+cpu_display="off"
 memory_display="off"
 battery_display="off"
 disk_display="off"
@@ -481,6 +483,7 @@ getdistro () {
                 "10.9") codename="OS X Mavericks" ;;
                 "10.10") codename="OS X Yosemite" ;;
                 "10.11") codename="OS X El Capitan" ;;
+                "10.12") codename="macOS Sierra" ;;
                 *) codename="Mac OS X" ;;
             esac
             distro="$codename $osx_version $osx_build"
@@ -1147,22 +1150,46 @@ getcpu () {
 
     [ "$cpu" ] && prin "$subtitle" "$cpu"
 
-    if [ "$cpu_display" != "off" ]; then
-        cpu_usage="$(ps aux | awk 'BEGIN { sum = 0 }  { sum += $3 }; END { print sum }')"
-        cpu_usage="${cpu_usage/\.*}%"
-
-        case "$cpu_display" in
-            "info") prin "$subtitle Usage" "$cpu_usage" ;;
-            "bar") prin "$subtitle Usage" "$(bar "${cpu_usage/'%'}" $(( 100 * cores )))" ;;
-            "infobar") prin "$subtitle Usage" "${cpu_usage} $(bar "${cpu_usage/'%'}" $(( 100 * cores )))" ;;
-            "barinfo") prin "$subtitle Usage" "$(bar "${cpu_usage/'%'}" $(( 100 * cores ))) $cpu_usage" ;;
-        esac
-    fi
     [ "$stdout_mode" != "on" ] && unset cpu
 }
 
 # }}}
 
+# CPU Usage {{{
+
+getcpu_usage () {
+    case "$os" in
+        "Windows")
+            cpu_usage="$(wmic cpu get loadpercentage /value)"
+            cpu_usage="${cpu_usage/LoadPercentage'='}"
+            cpu_usage="${cpu_usage//[[:space:]]}"
+        ;;
+
+        "Linux" | "Mac OS X" | "iPhone OS" | "BSD")
+            # Get cores if unset
+            if [ -z "$cores" ]; then
+                case "$os" in
+                    "Linux") cores="$(awk -F ': ' '/siblings/ {printf $2; exit}' /proc/cpuinfo)" ;;
+                    "Mac OS X" | "BSD") cores="$(sysctl -n hw.ncpu)" ;;
+                esac
+            fi
+
+            cpu_usage="$(ps aux | awk 'BEGIN {sum=0} {sum+=$3 }; END {print sum}')"
+            cpu_usage="$((${cpu_usage/\.*} / ${cores:-1}))"
+        ;;
+    esac
+
+    # Print the bar
+    case "$cpu_display" in
+        "info") cpu_usage="${cpu_usage}%" ;;
+        "bar") cpu_usage="$(bar $cpu_usage 100)" ;;
+        "infobar") cpu_usage="${cpu_usage}% $(bar $cpu_usage 100)" ;;
+        "barinfo") cpu_usage="$(bar $cpu_usage 100) ${cpu_usage}%" ;;
+    esac
+}
+
+# }}}
+
 # GPU {{{
 
 getgpu () {
@@ -2512,6 +2539,7 @@ stdout () {
             *)
                 "get$func" 2>/dev/null
                 eval output="\$$func"
+                output="$(trim "$output")"
                 stdout+="${output}${stdout_separator}"
             ;;
         esac
@@ -2977,15 +3005,14 @@ usage () { cat << EOF
     --progress_length num       Length in spaces to make the progress bars.
     --progress_colors num num   Colors to make the progress bar.
                                 Set in this order: elapsed, total
-    --cpu_display mode1 mode2   Which shorthand to use and how CPU usage should be printed
-                                mode1 takes: name, speed, tiny, on, off
-                                mode2 takes: info, bar, infobar, barinfo
-    --memory_display mode       Which way should the memory progress bar be added
-                                Takes bar, infobar, barinfo
-    --battery_display mode      Which way should the battery progress bar be added
-                                Takes bar, infobar, barinfo
-    --disk_display mode         Which way should the disk progress bar be added
-                                Takes bar, infobar, barinfo, perc
+    --cpu_display mode          Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --memory_display mode       Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --battery_display mode      Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
+    --disk_display mode         Progress bar mode.
+                                Takes: bar, infobar, barinfo, off
 
 
     Image:
@@ -3124,10 +3151,7 @@ while [ "$1" ]; do
             progress_color_elapsed="$2"
             progress_color_total="$3"
         ;;
-        --cpu_display)
-            cpu_shorthand="$2"
-            cpu_display="$3"
-        ;;
+        --cpu_display) cpu_display="$2" ;;
         --memory_display) memory_display="$2" ;;
         --battery_display) battery_display="$2" ;;
         --disk_display) disk_display="$2" ;;
@@ -3205,7 +3229,7 @@ while [ "$1" ]; do
             esac
         ;;
         --test)
-            info=(title underline distro kernel uptime packages shell resolution de wm wmtheme theme icons cpu gpu memory font disk battery song localip publicip users birthday term termfont)
+            info=(title underline distro kernel uptime packages shell resolution de wm wmtheme theme icons cpu cpu_usage gpu memory font disk battery song localip publicip users birthday term termfont)
 
             refresh_rate="on"
             shell_version="on"
diff --git a/neofetch.1 b/neofetch.1
index 51f273a0..cb4e0b17 100644
--- a/neofetch.1
+++ b/neofetch.1
@@ -145,27 +145,25 @@ Colors to make the progress bar.
 .br
 Set in this order: elapsed, total
 .TP
-.B \--cpu_display 'mode1' 'mode2'
-Which shorthand to use and how CPU usage should be printed
+.B \--cpu_display       'mode'
+Progress bar mode.
 .br
-mode1 takes: name, speed, tiny, on, off
-.br
-mode2 takes: info, bar, infobar, barinfo
+Takes: bar, infobar, barinfo, off
 .TP
-.B \--memory_display 'mode'
-Which way should the memory progress bar be added
+.B \--memory_display    'mode'
+Progress bar mode.
 .br
-Takes: bar, infobar, barinfo
+Takes: bar, infobar, barinfo, off
 .TP
-.B \--battery_display 'mode'
-Which way should the battery progress bar be added
+.B \--battery_display   'mode'
+Progress bar mode.
 .br
-Takes: bar, infobar, barinfo
+Takes: bar, infobar, barinfo, off
 .TP
-.B \--disk_display mode
-Which way should the disk progress bar be added
+.B \--disk_display      'mode'
+Progress bar mode.
 .br
-Takes: bar, infobar, barinfo, perc
+Takes: bar, infobar, barinfo, off
 
 .SH IMAGE
 .TP