diff --git a/configure b/configure
index cbd34af..5df4a31 100755
--- a/configure
+++ b/configure
@@ -405,8 +405,7 @@ LESS_ADVANCED_PREPROCESSOR N	# always interpret textlike files (html, ...)
 # compression programs
 bzip2		Y	# include bzip2 and unzip code, it is fairly essential
 unzip		Y
-rar		Y
-unrar		Y
+bsdtar		Y	# bsdtar is the best free as in freedom alternative for rar
 lzip		N	# default for lzma, lzip, xz, 7za should probably be N
 lzma		Y
 xz		Y
diff --git a/lesspipe.sh b/lesspipe.sh
index c80c75b..262a47b 100755
--- a/lesspipe.sh
+++ b/lesspipe.sh
@@ -276,12 +276,8 @@ get_cmd () {
       cmd=(isrpm "$2" "$file2")
     elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
       cmd=(istemp "unzip -avp" "$2" "$file2")
-    elif [[ "$1" = *RAR\ archive* ]]; then
-      if cmd_exist unrar; then
-        cmd=(istemp "unrar p -inul" "$2" "$file2")
-      elif cmd_exist rar; then
-        cmd=(istemp "rar p -inul" "$2" "$file2")
-      fi
+    elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
+      cmd=(bsdtar xOf "$2" "$file2")
     elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
       cmd=(istemp "7za e -so" "$2" "$file2")
     elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7zr; then
@@ -534,14 +530,9 @@ isfinal() {
   elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
     msg "use zip_file${sep}contained_file to view a file in the archive"
     istemp "unzip -lv" "$2"
-  elif [[ "$1" = *RAR\ archive* ]]; then
-    if cmd_exist unrar; then
-      msg "use rar_file${sep}contained_file to view a file in the archive"
-      istemp "unrar v" "$2"
-    elif cmd_exist rar; then
-      msg "use rar_file${sep}contained_file to view a file in the archive"
-      istemp "rar v" "$2"
-    fi 
+  elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
+    msg "use rar_file${sep}contained_file to view a file in the archive"
+    bsdtar tf "$2"
   elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
     typeset res
     res=$(istemp "7za l" "$2")
diff --git a/lesspipe.sh.in b/lesspipe.sh.in
index 407bc7d..753f3c5 100755
--- a/lesspipe.sh.in
+++ b/lesspipe.sh.in
@@ -323,17 +323,10 @@ get_cmd () {
     elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
       set -A cmd istemp "unzip -avp" "$2" "$file2"
 #endif 
-#ifdef unrar
-    elif [[ "$1" = *RAR\ archive* ]]; then
-      if cmd_exist unrar; then
-        set -A cmd istemp "unrar p -inul" "$2" "$file2"
-      elif cmd_exist rar; then
-        set -A cmd istemp "rar p -inul" "$2" "$file2"
-      fi
-#elif rar
-    elif [[ "$1" = *RAR\ archive* ]] && cmd_exist rar; then
-      set -A cmd istemp "rar p -inul" "$2" "$file2"
-#endif 
+#ifdef bsdtar
+    elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
+      set -A cmd bsdtar xOf "$2" "$file2"
+#endif
 #ifdef 7za
     elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
       set -A cmd istemp "7za e -so" "$2" "$file2"
@@ -705,19 +698,10 @@ isfinal() {
     msg "use zip_file${sep}contained_file to view a file in the archive"
     istemp "unzip -lv" "$2"
 #endif
-#ifdef unrar
-  elif [[ "$1" = *RAR\ archive* ]]; then
-    if cmd_exist unrar; then
-      msg "use rar_file${sep}contained_file to view a file in the archive"
-      istemp "unrar v" "$2"
-    elif cmd_exist rar; then
-      msg "use rar_file${sep}contained_file to view a file in the archive"
-      istemp "rar v" "$2"
-    fi 
-#elif rar
-  elif [[ "$1" = *RAR\ archive* ]] && cmd_exist rar; then
+#ifdef bsdtar
+  elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
     msg "use rar_file${sep}contained_file to view a file in the archive"
-    istemp "rar v" "$2"
+    bsdtar tf "$2"
 #endif
 #ifdef 7za
   elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then