diff --git a/LICENSE b/LICENSE
index 9300b27..1490705 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,13 +1,201 @@
-Copyright (c) 2014-2016 {{cookiecutter.license_holder}}
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
-   http://www.apache.org/licenses/LICENSE-2.0
+   1. Definitions.
 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!) The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {{cookiecutter.copyright_year}} {{cookiecutter.copyright_holder}}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.rst b/README.rst
index 09a181e..d3ef0ca 100644
--- a/README.rst
+++ b/README.rst
@@ -1,38 +1,47 @@
 cookiecutter-salt-formula
 =========================
 
-A cookiecutter_ template for Salt Formula.
+A cookiecutter template for Salt Formula.
 
-Usage
+Installation
 ============
 
 .. code-block:: bash
 
-    cookiecutter cookiecutter-salt-formula
-
-
-Init Kitchen CI
-===============
-
-Install prerequisites. 
-- `envtpl` is renders jinja2 templates on the command line with shell environment variables.
-- gems required dpends on driver configured to be used (docker by default)
-
-.. code-block:: bash
-
     pip install cookiecutter
-    pip install envtpl
-    gem install kitchen-docker kitchen-vagrant kitchen-salt kitchen-openstack kitchen-inspec busser-serverspec
 
-Once you create your `tests/pillar` structure (required if you want to auto populate kitchen test suites)
+    cd cookiecutter
 
-.. code-block:: bash
+    cookiecutter salt-formula
+
+
+Init Test Kitchen configuration
+===============================
+
+Follow the `salt formula testing <https://salt-formulas.readthedocs.io/en/latest/develop/testing-formulas.html>`_ guidelines and
+automated CI in the main `documentation <https://salt-formulas.readthedocs.io/en/latest/develop/testing.html>`_.
+
+To generate ``.kitchen.yml`` for new or existing project:
+
+- install `envtpl`, renders jinja2 templates with shell environment variables
+- install required gems, it depends on drivers configured to be used (docker by default)
+
+.. code-block:: shell
 
     pip install envtpl
-    ./kitchen-init.sh
+    gem install kitchen-docker kitchen-salt [kitchen-openstack kitchen-vagrant kitchen-inspec busser-serverspec]
 
-Instantly for latest version or on existing formulas:
+Once you create your `tests/pillar` structure (required if you want to auto-populate kitchen yaml with test suites)
 
-.. code-block:: bash
+.. code-block:: shell
 
-    curl -skL "https://raw.githubusercontent.com/tcpcloud/cookiecutter-salt-formula/master/kitchen-init.sh" | bash -s --
+    # cd <formula repository>
+    ../kitchen-init.sh
+
+Instantly, to add kitchen configuration into existing repository:
+
+.. code-block:: shell
+
+    # cd <formula repository>
+    curl -skL "https://raw.githubusercontent.com/salt-formulas/salt-formulas-cookiecutter/master/salt-formula/kitchen-init.sh" | bash -s --
+
diff --git a/cookiecutter.json b/cookiecutter.json
index 6fb7e96..b632d92 100644
--- a/cookiecutter.json
+++ b/cookiecutter.json
@@ -1,10 +1,14 @@
 {
     "service_name": "some_service",
     "role_name": "server",
-    "project_name": "{{ cookiecutter.service_name }}-formula",
-    "repo_name": "{{ cookiecutter.service_name|replace('_', '-') }}-formula",
-    "license_holder": "Mirantis Inc.",
-    "author_contact": "devops <devops@mirantis.com>",
+    "initial_version": "2017.6",
+    "copyright_year": "2017",
+    "copyright_holder": "Your Name et al.",
+    "author_name": "John Doe",
+    "author_contact": "jdoe@domain.com",
+    "homepage": "https://github.com/salt-formulas",
+
+    "debian_version": "trusty",
 
     "kitchen_driver": "docker",
     "kitchen_verifier": "inspec",
diff --git a/kitchen-init.sh b/kitchen-init.sh
index c6ca321..67faf5f 100755
--- a/kitchen-init.sh
+++ b/kitchen-init.sh
@@ -2,7 +2,7 @@
 
 # Script to add Kitchen configuration to existing formulas.
 # usage:
-# curl -skL "https://raw.githubusercontent.com/tcpcloud/cookiecutter-salt-formula/master/kitchen-init.sh" | bash -s --
+# curl -skL "https://raw.githubusercontent.com/salt-formulas/salt-formulas-cookiecutter/master/salt-formula/kitchen-init.sh" | bash -s --
 
 # source gist:
 # https://gist.github.com/epcim/b0368794e69e6807635b0c7268e5ceec
@@ -16,7 +16,7 @@
 export formula=${formula:-$(awk -F: '/^name/{gsub(/[\ \"]/,"");print $2}' metadata.yml)}
 export suites=$(ls tests/pillar|xargs -I{} basename {} .sls)
 
-export SOURCE_REPO_URI="https://raw.githubusercontent.com/tcpcloud/cookiecutter-salt-formula/master/%7B%7Bcookiecutter.project_name%7D%7D"
+export SOURCE_REPO_URI="https://raw.githubusercontent.com/salt-formulas/salt-formulas-cookiecutter/master/salt-formula/%7B%7Bcookiecutter.service_name%7D%7D"
 
 which envtpl &> /dev/null || {
   echo "ERROR: missing prerequisite, install 'envtpl' first : sudo pip install envtpl"
@@ -26,8 +26,10 @@
 # INIT
 ###################################
 test ! -e .kitchen.yml || {
-  kitchen init -D kitchen-docker -P kitchen-salt --no-create-gemfile
+  kitchen init -D kitchen-${driver} -P kitchen-salt --no-create-gemfile
   echo .kitchen >> .gitignore
+  echo .bundle  >> .gitignore
+  echo .vendor  >> .gitignore
   rm -rf test
   rm -f .kitchen.yml
   rm -f chefignore
@@ -39,6 +41,7 @@
 test -d tests/integration || {
     mkdir -p tests/integration
 }
+# Generate suites:
 #  for suite in $(echo $suites|xargs); do
 #    mkdir -p tests/integration/$suite/$verifier
 #    touch    tests/integration/$suite/$verifier/default_spec.rb
@@ -69,82 +72,25 @@
     envtpl < <(curl -skL  "${SOURCE_REPO_URI}/.kitchen.openstack.yml" -- | sed 's/cookiecutter\.kitchen_//g') > .kitchen.openstack.yml
 }
 
-
-
-# UPDATE README, etc...
+# .TRAVIS.YML
 ###################################
 
-grep -Eoq 'Development and testing' README.* || {
-
-KITCHEN_LIST=$(kitchen list|tail -n+2)
-README=$(ls README.*|head -n1)
-cat >> ${README} <<-\EOF
-
-	Development and testing
-	=======================
-	
-	Development and test workflow with `Test Kitchen <http://kitchen.ci>`_ and
-	`kitchen-salt <https://github.com/simonmcc/kitchen-salt>`_ provisioner plugin.
-	
-	Test Kitchen is a test harness tool to execute your configured code on one or more platforms in isolation.
-	There is a ``.kitchen.yml`` in main directory that defines *platforms* to be tested and *suites* to execute on them.
-	
-	Kitchen CI can spin instances locally or remote, based on used *driver*.
-	For local development ``.kitchen.yml`` defines a `vagrant <https://github.com/test-kitchen/kitchen-vagrant>`_ or
-	`docker  <https://github.com/test-kitchen/kitchen-docker>`_ driver.
-	
-	To use backend drivers or implement your CI follow the section `INTEGRATION.rst#Continuous Integration`__.
-	
-	A listing of scenarios to be executed:
-	
-	.. code-block:: shell
-	
-	  $ kitchen list
-	
-	  Instance                    Driver   Provisioner  Verifier  Transport  Last Action
-	
-EOF
-
-echo "$KITCHEN_LIST" | sed 's/^/  /' >> README.*
-
-cat >> README.* <<-\EOF
-	
-	The `Busser <https://github.com/test-kitchen/busser>`_ *Verifier* is used to setup and run tests
-	implementated in `<repo>/test/integration`. It installs the particular driver to tested instance
-	(`Serverspec <https://github.com/neillturner/kitchen-verifier-serverspec>`_,
-	`InSpec <https://github.com/chef/kitchen-inspec>`_, Shell, Bats, ...) prior the verification is executed.
-	
-	
-	Usage:
-	
-	.. code-block:: shell
-	
-	 # list instances and status
-	 kitchen list
-	
-	 # manually execute integration tests
-	 kitchen [test || [create|converge|verify|exec|login|destroy|...]] [instance] -t tests/integration
-	
-	 # use with provided Makefile (ie: within CI pipeline)
-	 make kitchen
-	
-EOF
-}
-
-test -e INTEGRATION.rst || \
-curl -skL  "${SOURCE_REPO_URI}/INTEGRATION.rst" -o INTEGRATION.rst
+test -e .travis.yml || \
+  curl -skL  "${SOURCE_REPO_URI}/.travis.yml" -o .travis.yml
 
 
-# ADD CHANGES TO GIT
-###################################
+# ADD CHANGES
+#############
 
-# update Makefile, but do not auto-add to git
-curl -skL  "${SOURCE_REPO_URI}/Makefile" -o Makefile
+echo "**************************************"
+echo "To update to latest test scripts, run:"
+echo "SOURCE_REPO_URI=${SOURCE_REPO_URI}"
+echo 'curl -skL  "${SOURCE_REPO_URI}/Makefile" -o Makefile'
+echo 'curl -skL  "${SOURCE_REPO_URI}/tests/run_tests.sh" -o tests/run_tests.sh'
 
 git add \
   .gitignore \
-  .kitchen*yml \
-  INTEGRATION.rst \
-  README.rst
+  .kitchen.yml \
+  .travis.yml
 
 git status
