diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d60ee9e..bc03333 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -169,8 +169,8 @@
     Incorrect examples:
 
     ```
-    ${var1}=  Set Variable  ${1}
-    ${var1}=  My Keyword
+    ${var1} =  Set Variable  ${1}
+    ${var1} =  My Keyword
     ```
 -   General variable naming conventions:
     -   Variable names should be lower case with few exceptions:
@@ -305,9 +305,9 @@
             -   IMPORTANT:  As a programming convention, do pre-
                 processing on all dir_path variables to ensure that they
                 contain a trailing slash.  If we follow that convention
-                religiously, that when changes are made in other parts of
+                religiously, then when changes are made in other parts of
                 the program, the programmer can count on the value having
-                a trailing slash.  Therefore they can safely do this kind
+                a trailing slash.  Therefore, they can safely do this kind
                 of thing:
                 ```
                 my_file_path = my_dir_path + my_file_name
@@ -326,14 +326,15 @@
 
         # Right
         ```
-    -   Please use proper English punction:
+    -   Please use proper English punctuation:
         -   Capitalize the first word in the sentence or phrase.
         -   End sentences (or stand-alone phrases) with a period.
 
-    -   Do not keep commented out code in your program.  Instead, remove it
+    -   Do not keep commented-out code in your program.  Instead, remove it
         entirely.
 -   Robot Template Test Cases
     -   Follow this format for Robot template test cases:
+
         Note: Documentation, Tags and Template lines are all required and should be coded in the order shown.
         ```
         Test Case Name
@@ -350,19 +351,19 @@
             [Tags]  Get_Response_Codes
             [Template]  Execute Get And Check Response
 
-            # Expect status      URL Path
-            ${HTTP_OK}           /org/
-            ${HTTP_OK}           /xyz/
-            ${HTTP_OK}           /xyz/openbmc_project/
-            ${HTTP_OK}           /xyz/openbmc_project/state/enumerate
-            ${HTTP_NOT_FOUND}    /xyz/i/dont/exist/
+            # expected_response_code  url_path
+            ${HTTP_OK}                /org/
+            ${HTTP_OK}                /xyz/
+            ${HTTP_OK}                /xyz/openbmc_project/
+            ${HTTP_OK}                /xyz/openbmc_project/state/enumerate
+            ${HTTP_NOT_FOUND}         /xyz/i/dont/exist/
         ```
 
 Python Coding Guidelines
 -----------------------
 -   The minimum required Python version is 2.7.x.
 -   Run pycodestyle on all Python files and correct errors to follow the guidelines in
-    https://www.python.org/dev/peps/pep-0008/.
+    https://www.python.org/dev/peps/pep-0008/.  Note that when python code is checked into gerrit, pycodestyle is run automatically on it.
 
     Example as run from a Linux command line:
     ```
@@ -401,40 +402,29 @@
 
                   parm2):
         ```
--   Do not keep commented out code in your program.  Instead, remove it
+-   Do not keep commented-out code in your program.  Instead, remove it
     entirely.
--   When you define or call a Robot keyword, Robot pays no attention to spaces,
-    underscores or case.  However, our team will observe the following
-    conventions in both our definitions and our calls:
-    - Separate words with single spaces.
-    - Capitalize the first character of each word.
-    - Capitalize all characters in any word that is an acronym (e.g. JSON, BMC,
-      etc).
+-   When you define a python function, observe the following
+    conventions:
+    - Separate words with single underscores.
+    - Use lower-case letters.
 
     Examples:
     ```
-    *** Keywords ***
 
-    This Is Correct
+    def this_is_correct():
 
-        # This keyword name is correct.
+        # This function name is correct.
 
-    this_is_incorrect
+    def This_Is_Incorrect():
 
-        # This keyword name is incorrect because of 1) the
-        # underscores instead of spaces and 2) the failure to
-        # capitalize each word in the keyword.
+        # This keyword name is incorrect because of the upper case letters used.
 
-    soisthis
+    def soisthis():
 
         # This keyword name is incorrect because of 1) a failure to
-        # separate words with spaces and 2) a failure to capitalize
-        # each word in the keyword.
+        # separate words with underscores.
 
-    BMC Is An Acronym
-
-        # This keyword name is correct.  Note that "BMC" is an
-        # acronym and as such is entirely uppercase.
     ```
 -   Documentation strings:
     -  Each documentation string should be phrased as an **English command**.
@@ -443,53 +433,48 @@
 
        Correct example:
         ```
-        Boot BMC
-            [Documentation]  Boot the BMC.
+        def boot_bmc():
+            r"""
+            Boot the BMC.
+            """
         ```
         Incorrect example:
         ```
-        Boot BMC
-            [Documentation]  This keyword boots the BMC.
+        def boot_bmc():
+            r"""
+            This function boots the BMC.
+            """
 
             # The doc string above is not phrased as a command.
         ```
-    -   Doc strings should be just one terse, descriptive sentence.
-        Remember that this doc string shows up in the HTML log file.  Put
-        additional commentary below in standard comment lines.
+    -   Doc strings should begin with a summary line which one terse, descriptive sentence.
+        Put additional commentary below.
 
         Correct example:
         ```
-        Stop SOL Console Logging
+        def stop_sol_console_logging():
+            r"""
+            Stop system console logging and return log output.
 
-            [Documentation]  Stop system console logging and return log output.
+            Additional comments...
+            """
         ```
         Incorrect example:
         ```
-        Stop SOL Console Logging
-
-            [Documentation]  Stop system console logging.  If there are multiple
-            ...              system console processes, they will all be
-            ...              stopped.  If there is no existing log file this
-            ...              keyword will return an error message to that
-            ...              effect (and write that message to targ_file_path,
-            ...              if specified).  NOTE: This keyword will not fail
-            ...              if there is no running system console process.
+        def stop_sol_console_logging():
+            r"""
+            Stop system console logging.  If there are multiple system console
+            processes, they will all be stopped.  If there is no existing log file
+            this keyword will return an error message to that effect (and write that
+            message to targ_file_path, if specified).  NOTE: This keyword will not
+            fail if there is no running system console process.
+            """
 
             # This doc string is way too long.
         ```
--   Tags:
-    -   Create a tag for every test case with a tag name that mirrors the test case
-        name as follows:
-        ```
-        Create Intermediate File
-
-            [Tags]  Create_Intermediate_File
-        ```
 -   General variable naming conventions:
     -   Variable names should be lower case with few exceptions:
         -   Environment variables should be all upper case.
-        -   Variables intended to be set by Robot -v parameters may be all
-            upper case.
     -   Words within a variable name should be separated by underscores:
 
         Correct examples:
@@ -636,7 +621,7 @@
         -   Capitalize the first word in the sentence or phrase.
         -   End sentences (or stand-alone phrases) with a period.
 
-    -   Do not keep commented out code in your program.  Instead, remove it
+    -   Do not keep commented-out code in your program.  Instead, remove it
         entirely.
 
 Template Usage Guidelines
@@ -649,7 +634,7 @@
 
     ```
     $ cd templates
-    $ cp python_pgm_template ../bin/my_new_program
+    $ cp python_pgm_template ../bin/my_new_program.py
     ```
 
 These templates have much of your preliminary work done for you and will help
