diff --git a/bootstrap.sh b/bootstrap.sh
index af5d7da..f6428ce 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -75,6 +75,7 @@
 # salt
 export SALT_MASTER=${SALT_MASTER:-127.0.0.1} # ip or fqdn
 export MINION_ID=${MINION_ID:-${HOSTNAME}.${DOMAIN}}
+export MASTER_HOSTNAME=${MASTER_HOSTNAME:-${HOSTNAME}.${DOMAIN}}
 
 # saltstack
 BOOTSTRAP_SALTSTACK=${BOOTSTRAP_SALTSTACK:-True}
@@ -193,6 +194,24 @@
 ##########################################
 # Main calls
 
+system_config_ssh_conf() {
+    for conf in ~/.ssh/config /root/.ssh/config; do
+      $SUDO mkdir -p $(dirname $conf)
+      if ! grep StrictHostKeyChecking $conf; then
+        # this should be used only in CI environment
+        echo -e "Host *\n\tStrictHostKeyChecking no\n" | $SUDO tee $conf >/dev/null
+      fi
+    done
+    if ! grep github.com ~/.ssh/known_hosts; then
+      ssh-keyscan -H github.com >> ~/.ssh/known_hosts || true
+    fi
+}
+
+system_config_salt_modules_prereq() {
+    # salt-formulas custom modules dependencies, etc:
+    $SUDO $PKGTOOL install -y iproute2 curl sudo apt-transport-https python-psutil python-apt python-m2crypto python-oauth python-pip &>/dev/null
+}
+
 system_config_minion() {
     log_info "System configuration salt minion"
 }
@@ -200,15 +219,15 @@
 system_config_master() {
     log_info "System configuration salt master"
 
-    # salt-formulas custom modules dependencies, etc:
-    $SUDO $PKGTOOL install -y iproute2 curl sudo apt-transport-https python-psutil python-apt python-m2crypto python-oauth python-pip &>/dev/null
+    system_config_salt_modules_prereq
+    system_config_ssh_conf
 
     $SUDO mkdir -p $RECLASS_ROOT/classes/service
-    $SUDO mkdir -p /root/.ssh
-    ssh-keyscan -H github.com >> ~/.ssh/known_hosts || true
-    echo -e "Host *\n\tStrictHostKeyChecking no\n" | $SUDO tee ~/.ssh/config >/dev/null
-    echo -e "Host *\n\tStrictHostKeyChecking no\n" | $SUDO tee /root/.ssh/config >/dev/null
-    echo "127.0.1.2  salt" | $SUDO tee -a /etc/hosts >/dev/null
+    $SUDO mkdir -p $RECLASS_ROOT/nodes/_generated
+
+    if ! grep '127.0.1.2.*salt' /etc/hosts; then
+      echo "127.0.1.2  salt" | $SUDO tee -a /etc/hosts >/dev/null
+    fi
 
     which reclass || $SUDO $PKGTOOL install -y reclass
 
@@ -224,6 +243,10 @@
 
   echo "Configuring salt-master ..."
 
+  if [[ $RECLASS_IGNORE_CLASS_NOTFOUND =~ ^(True|true|1|yes)$ ]]; then
+    IGNORE_CLASS_NOTFOUND="ignore_class_notfound: True"
+  fi
+
   [ ! -d /etc/salt/master.d ] && mkdir -p /etc/salt/master.d
   cat <<-EOF > /etc/salt/master.d/master.conf
 	file_roots:
@@ -238,6 +261,7 @@
 	reclass: &reclass
 	  storage_type: yaml_fs
 	  inventory_base_uri: ${RECLASS_ROOT}
+	  ${IGNORE_CLASS_NOTFOUND}
 	ext_pillar:
 	  - reclass: *reclass
 	master_tops:
@@ -252,6 +276,7 @@
 	pretty_print: True
 	output: yaml
 	inventory_base_uri: ${RECLASS_ROOT}
+	${IGNORE_CLASS_NOTFOUND}
 EOF
 
   clone_reclass
@@ -266,31 +291,33 @@
 
   #sed -ie "s#\(reclass_data_revision.\).*#\1 $RECLASS_BRANCH#" $(find nodes -name ${MASTER_HOSTNAME}.yml|tail -n1)
 
-  mkdir -vp ${RECLASS_ROOT}/nodes
+  mkdir -vp ${RECLASS_ROOT}/nodes/_generated
   CONFIG=$(find ${RECLASS_ROOT}/nodes -name ${MINION_ID}.yml| grep yml | tail -n1)
-  CONFIG=${CONFIG:-${RECLASS_ROOT}/nodes/${MINION_ID}.yml}
+  CONFIG=${CONFIG:-${RECLASS_ROOT}/nodes/_generated/${MINION_ID}.yml}
   if [[ $SALT_MASTER_BOOTSTRAP_MINIMIZED =~ ^(True|true|1|yes)$ || ! -f "${CONFIG}" ]]; then
   cat <<-EOF > ${CONFIG}
 	classes:
-	- service.git.client
-	- system.linux.system.single
-	- system.salt.master.single
-	- system.salt.master.$FORMULAS_SOURCE
-	- system.reclass.storage.salt
+	- cluster.${CLUSTER_NAME}.infra.config
 	parameters:
 	  _param:
-	    reclass_data_repository: "$RECLASS_ADDRESS"
-	    reclass_data_revision: ${RECLASS_BRANCH:-master}
-	    salt_formula_branch: ${SALT_FORMULAS_BRANCH:-master}
-	    reclass_config_master: $SALT_MASTER
 	    single_address: $SALT_MASTER
 	    salt_master_host: $SALT_MASTER
 	    salt_master_base_environment: $SALT_ENV
-	    linux_system_codename: $DISTRIB_CODENAME
+	    salt_formula_branch: ${SALT_FORMULAS_BRANCH:-master}
+	    reclass_data_revision: ${RECLASS_BRANCH:-master}
+	    reclass_data_repository: "$RECLASS_ADDRESS"
+	    reclass_config_master: $SALT_MASTER
+	    linux_system_codename: ${DISTRIB_CODENAME}
+	    cluster_name: ${CLUSTER_NAME}
+	    cluster_domain: ${DOMAIN:-$CLUSTER_NAME.local}
 	  linux:
 	    system:
-	      name: $MINION_ID
-	      domain: $DOMAIN
+	      name: ${HOSTNAME:-cfg01}
+	      domain: ${DOMAIN:-$CLUSTER_NAME.local}
+	  #reclass:
+	  #  storage:
+	  #    data_source:
+	  #      engine: local
 	# ########
 EOF
 
@@ -562,13 +589,17 @@
     #   log_warn "Node verification before initialization failed."; cat /tmp/${MASTER_HOSTNAME}.pillar;
     #fi
 
+
+    # workarond isolated and not fully bootstraped environments
+    PILLAR='{"salt":{"master":{"pillar":{"reclass":{"ignore_class_notfound": "'${RECLASS_IGNORE_CLASS_NOTFOUND:-False}'"}}}}, "reclass":{"storage":{"data_source":{"engine":"local"}}} }'
+
     log_info "State: salt.master.env"
-    if ! $SUDO salt-call ${SALT_OPTS} -linfo state.apply salt.master.env; then
+    if ! $SUDO salt-call ${SALT_OPTS} -linfo state.apply salt.master.env pillar="$PILLAR"; then
       log_err "State salt.master.env failed, keep your eyes wide open."
     fi
 
     log_info "State: salt.master.pillar"
-    retry ${SALT_STATE_RETRY} $SUDO salt-call ${SALT_OPTS} state.apply salt.master.pillar pillar='{"reclass":{"storage":{"data_source":{"engine":"local"}}}}'
+    retry ${SALT_STATE_RETRY} $SUDO salt-call ${SALT_OPTS} state.apply salt.master.pillar pillar="$PILLAR"
     # Note: sikp reclass data dir states
     #       in order to avoid pull from configured repo/branch
 
@@ -576,19 +607,23 @@
     pushd $RECLASS_ROOT
     if [ $(git diff --name-only nodes | sort | uniq | wc -l) -ge 1 ]; then
       git status || true
-      log_warn "Locally modified $RECLASS_ROOT/nodes found. (Possibly salt-master minimized setup from salt-master-setup.sh call)"
+      log_warn "Locally modified $RECLASS_ROOT/nodes found. (Possibly salt-master minimized setup from bootstrap.sh call)"
       log_info "Checkout HEAD state of $RECLASS_ROOT/nodes/*."
       git checkout -- $RECLASS_ROOT/nodes || true
       log_info "Re-Run states: salt.master.env and salt.master.pillar according the HEAD state."
       log_info "State: salt.master.env"
-      if ! $SUDO salt-call ${SALT_OPTS} -linfo state.apply salt.master.env; then
+      if ! $SUDO salt-call ${SALT_OPTS} -linfo state.apply salt.master.env pillar="$PILLAR"; then
         log_err "State salt.master.env failed, keep your eyes wide open."
       fi
       log_info "State: salt.master.pillar"
-      retry ${SALT_STATE_RETRY} $SUDO salt-call ${SALT_OPTS} state.apply salt.master.pillar pillar='{"reclass":{"storage":{"data_source":{"engine":"local"}}}}'
+      retry ${SALT_STATE_RETRY} $SUDO salt-call ${SALT_OPTS} state.apply salt.master.pillar pillar="$PILLAR"
     fi
     popd
 
+    # finally re-configure salt master conf, ie: may remove ignore_class_notfound option
+    log_info "State: salt.master.service"
+    $SUDO salt-call ${SALT_OPTS} state.apply salt.master.service || true
+
     log_info "State: salt.master.storage.node"
     set +e
     # TODO: PLACEHOLDER TO TRIGGER NODE GENERATION THROUG SALT REACT.
