Index: common/common-functions
===================================================================
--- common/common-functions	(revision e65a92f66288281882ef2d85fb7ab7d967d0eb26)
+++ common/common-functions	(revision 46124598cd9e9118f85f14b13699da793cf38d16)
@@ -77,6 +77,12 @@
 cat <<- -EOF-
 
-${BOLD}  --do-ICA${OFF}
-         do the Iterative Comparison Analysis. That will take several time.
+${BOLD}  -C, --comparasion TYPE${OFF}
+         do iterative comparison analysis. That will take several time due that
+         the final system packages wil be rebuilded the times defined in the
+         ITERATIONS config option.
+         Analisys types allowed are:
+           ICA   = do the ICA analisys designed by Greg Schafer
+           farce = do the farce analisys designed by Ken Moffat
+           both  = perfom both ICA and farce analisys
 
 ${BOLD}  -F, --fstab FILE${OFF}
Index: common/config
===================================================================
--- common/config	(revision e65a92f66288281882ef2d85fb7ab7d967d0eb26)
+++ common/config	(revision 46124598cd9e9118f85f14b13699da793cf38d16)
@@ -59,13 +59,19 @@
 KEYMAP=none
 
-#=== Variables needed by ICA ===
+#=== Variables needed by iterative comparison analysis ===
+#--- The number of final stage builds to create and compare, min. 2, max. 5
+ITERATIONS=3
+
 #--- Run ICA testing 0/1  0(no)/1(yes)
 RUN_ICA=0
 
-#--- The number of final stage builds to create and compare, min. 2, max. 5
-ITERATIONS=3
-
 #--- ICA report log directory
 ICALOGDIR=$JHALFSDIR/logs/ICA
+
+#--- Run farce testing 0/1  0(no)/1(yes)
+RUN_FARCE=0
+
+#--- farce report log directory
+FARCELOGDIR=$JHALFSDIR/logs/farce
 
 #==== INTERNAL VARIABLES ====
Index: common/func_validate_configs.sh
===================================================================
--- common/func_validate_configs.sh	(revision e65a92f66288281882ef2d85fb7ab7d967d0eb26)
+++ common/func_validate_configs.sh	(revision 46124598cd9e9118f85f14b13699da793cf38d16)
@@ -81,5 +81,5 @@
     modifies:   none
     returns:    nothing
-    on error:	write text to console and dies
+    on error:   write text to console and dies
     on success: write text to console and returns
 inline_doc
@@ -87,7 +87,7 @@
   # First internal variables, then the ones that change the book's flavour, and lastly system configuration variables
   local -r blfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG         DEPEND                TEST"
-  local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE MODEL GRSECURITY_HOST TEST RUN_ICA ITERATIONS STRIP FSTAB             CONFIG KEYMAP         PAGE TIMEZONE LANG LC_ALL"
-  local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE METHOD  ARCH  TARGET  TEST RUN_ICA ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE TIMEZONE LANG"
-  local -r  lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE                       TEST RUN_ICA ITERATIONS STRIP FSTAB             CONFIG        VIMLANG PAGE TIMEZONE LANG"
+  local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE MODEL GRSECURITY_HOST TEST RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG KEYMAP         PAGE TIMEZONE LANG LC_ALL"
+  local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE METHOD  ARCH  TARGET  TEST RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG KEYMAP VIMLANG PAGE TIMEZONE LANG"
+  local -r  lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE HPKG RUNMAKE                       TEST RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB             CONFIG        VIMLANG PAGE TIMEZONE LANG"
 
   local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,'
@@ -134,4 +134,5 @@
         RUNMAKE)    validation_str="x0x x1x";          validate_str; continue ;;
         RUN_ICA)    validation_str="x0x x1x";          validate_str; continue ;;
+        RUN_FARCE)  validation_str="x0x x1x";          validate_str; continue ;;
         ITERATIONS) validation_str="x2x x3x x4x x5x";  validate_str; continue ;;
         TEST)       validation_str="x0x x1x x2x x3x";  validate_str; continue ;;
@@ -187,5 +188,5 @@
            if [ ! -d ${SRC_ARCHIVE} ]; then
              echo "   -- is NOT a directory"
-	     write_error_and_die
+             write_error_and_die
            fi
            if [ ! -w ${SRC_ARCHIVE} ]; then
Index: master.sh
===================================================================
--- master.sh	(revision e65a92f66288281882ef2d85fb7ab7d967d0eb26)
+++ master.sh	(revision 46124598cd9e9118f85f14b13699da793cf38d16)
@@ -97,5 +97,5 @@
 
 ###################################
-###		MAIN		###
+###          MAIN               ###
 ###################################
 
@@ -215,5 +215,22 @@
 
     # Common options for LFS, CLFS and HLFS
-    --do-ICA )              RUN_ICA=1    ;;
+    --comparasion | -C )
+      test $# = 1 && eval "$exit_missing_arg"
+      shift
+      case $PROGNAME in
+        ICA)              RUN_ICA=1
+                        RUN_FARCE=0
+        ;;
+        farce)            RUN_ICA=0
+                        RUN_FARCE=1
+        ;;
+        both)             RUN_ICA=1
+                        RUN_FARCE=1
+        *)
+          echo -e "\n$1 is an unknown analisys method."
+          exit 1
+          ;;
+      esac
+      ;;
 
     --fstab | -F )
@@ -462,6 +479,7 @@
 if [[ "$PWD" != "$JHALFSDIR" ]]; then
   cp $COMMON_DIR/makefile-functions $JHALFSDIR/
-  if [[ "$RUN_ICA" != "0" ]]; then
-    cp $COMMON_DIR/do_ica_{prep,work} $JHALFSDIR/
+  if [[ "$RUN_ICA" = "1" ]] || [[ "$RUN_FARCE" = "1" ]]; then
+    mkdir $JHALFSDIR/extras
+    cp extras/* $JHALFSDIR/extras
   fi
   if [[ -n "$FILES" ]]; then
