diff --git a/sample.conf b/sample.conf
index 59b127a7b35092d094e19ac4d8cbb8bd7f086914..65e8684c8e6bf5c74c43b49bd2ead8fc5d21f67b 100644
--- a/sample.conf
+++ b/sample.conf
@@ -64,17 +64,17 @@
 #     VALUE
 #     STRING NOT CONTAINED IN VALUE
 #
-# or
+#  or
 #
-# e) KEY         (for true in boolean context)
+#  e) KEY         (for true in boolean context)
 #
 # Notice, that no `"` is needed (and will not be removed)
-# KEY should not contain `=` and should not start wit `[`.
-# White characters on begin/end will be trimmed.
-# VALUE in a, b option will be trimmed too.
-# White characters on end of LINES in b, c will be removed (not from the begin).
-# However SECOND LINE in b and FIRST LINE in c should not contain any tiling tabs or spaces
-# Most generic is e option. There should be lines starting with `#` and no processing will be applied.
+# KEY should not contain `=` and should not start with `[`.
+# White characters at the begin/end will be trimmed.
+# VALUE in a), b) option will be trimmed too.
+# White characters at the end of LINES in b), c) will be removed (not from the begin).
+# However, SECOND LINE in b) and FIRST LINE in c) should not contain any tiling tabs or spaces.
+# The most generic is e) option. There can be lines starting with `#` and no processing will be applied.
 # Last end-line character will not be a part of value.
 
 # Value types in config:
@@ -82,11 +82,11 @@
 # string: written as it is without quoting
 # int: in decimal format eg. `10`
 # number: with decimal dot (`1.23`) or in scientific notation (`1e3`)
-# time: number in section (eg. 60 for one minute)
-# bool: true/yes/use/1 or flase/no/unuse/0
+# time: number in seconds (eg. 60 for one minute)
+# bool: true/yes/use/1 or false/no/unuse/0
 #         only key without value is true as well
 # path: string with simple expansion of ~ on the begin and environment variable
-#           ( $HOME or ${HOME})
+#           ($HOME or ${HOME})
 # format: string for expansion
 #           `{key}` will be expanded
 #           escape for `{` and `}` is `{{` and `}}`
@@ -98,19 +98,19 @@
 
 refresh = 1
 # <time> (default 1)
-# Refresh the status bar at lees once per this time
-# (some modules could do extra refresh by their own)
+# Refresh the status bar every <value> seconds
+# (some modules can invoke refresh more frequently)
 
 
 # Modules:
 # ========
 
-# You can specify module type in section name or by `_type` option (if you need other section name).
+# You can specify module type in the section name or by `_type` option (if you need a different section name).
 
 [i3status]
-# this module could cooperate with i3status program and get a part of status bar from them
-# Notice, that only one i3status is running for whole status bar.
-# Due to technical limitation of i3status should be option `name` unique.
+# this module can cooperate with i3status program and get a part of its status bar
+# Note that only one i3status instance is running for the whole status bar.
+# Due to technical limitations of i3status the `name` option must be unique.
 name=ethernet _first_
 # mandatory <string>
 config
@@ -118,19 +118,19 @@ config
      format_down = "E: down"
 # <string>
 
-# This will be translated to i3config:
+# This will be translated to i3status config:
 # | order += "ethernet _first_"
 # | ethernet _first_ {
 # |         format_up = "E: %ip (%speed)"
 # |         format_down = "E: down"
 # | }
 
-# For possible usage see i3status man page
+# For possible usage see i3status(1) man page
 
 global_cache = 1
 # <time> default 0
-# If status bar is refreshed more than once per this time it will be used old
-# values without fetching new data from i3status.
+# If status bar is refreshed more than once per this time the module will use
+# previous data without fetching new data from i3status.
 # This option is valid across all i3status modules. Do not specify two different values.
 
 [time]
@@ -140,12 +140,12 @@ short_format = HH:mm
 # <string>
 # Format of date/time to show, expanded by C# DateTime.ToString
 # (https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings)
-# Short format will be used if there is no enough space in status bar (and it is defined).
+# Short format will be used if there is not enough space in the status bar (and it is defined).
 round = 60
-# <time> 1
+# <time> default 1
 refresh
 # <bool> default false
-# Round time value and refresh status bar every change of rounded value.
+# Round time value and refresh status bar on every change of rounded value.
 
 [battery]
 instance = BAT2
@@ -156,9 +156,11 @@ path = /sys/class/power_supply/BAT1/uevent
 # <path> default /sys/class/power_supply/{instance}/uevent
 # Source uevent file path.
 
+# The options instance and path are mutually exclusive.
+
 time_window = 300
 # <time> default 60
-# Derivation and reaming time will be calculated from last `time_window` seconds.
+# Derivation and remaining time will be calculated from the last `time_window` seconds.
 
 format = {status} {percent}
 # <format>
@@ -168,8 +170,8 @@ short_format = {percent}
 # Expanded values: 
 #            status - Charging, Discharging, Full ...
 #            percent - how full is battery in percent
-#            derivation - how much is changing percent (number of percent per hour)
-#            reaming - time to reach full or empty state
+#            derivation - the percentage change (number of percent per hour)
+#            remaining - time to reach full or empty state
 
 [constant]
 # Just show some text
@@ -178,7 +180,7 @@ color = red
 
 
 [file]
-# read file context every refresh of status bar
+# read file contents every status bar refresh
 path = $HOME/file/to/show
 # mandatory <path>
 not_found_handler = [constant]
@@ -190,19 +192,19 @@ error_handler = [constant]
         text = ERR
 # <config> default see above
 
-# If file is not found or some other error with read is raised,
+# If the file is not found or some other error with read is raised,
 # status bar described in this config will be shown.
 # Often it contain only one constant module or is empty.
 
 parser = text
-# see below for explanation
+# see below for explanation in the section Parsers
 
 [pipe]
-# Read data from named pipe and process it by parser (see above).
-# Pipe will be opened (file created) on startup. If the file yet exist,
+# Read data from a named pipe and process it by the parser.
+# Pipe will be opened (and created) on startup. If the file exists
 # it will be unlinked (deleted).
-# Pipe will be opened for booth, read and write, so it will not close
-# itself, if you close your file descriptor.
+# Pipe will be opened for both read and write, so it will not close
+# itself if you close your file descriptor.
 
 path = /tmp/pipe
 # mandatory <path>
@@ -210,16 +212,16 @@ path = /tmp/pipe
 
 separator = 10
 # <int> default 0
-# number of ASCI character which separate messages coming trow pipe
+# ASCII character number which separates incoming messages through pipe
 
 delay = 0
 # <time> default 0.01
 # Bar will be redrawn no later than this time after new messages
-# If come lot's of messages is some small time, this option will safe some resources
+# If multiple messages are received in a small period, this option will save some resources
 
 show_old = 10
 # <time>
-# If messages is older than this time, it will be shown how old it is.
+# If the message is older than this time, it will be shown how old it is.
 
 max_old = 30
 # <time>
@@ -228,14 +230,14 @@ max_old = 30
 no_data_handler = [constant]
         text = No data
 # <config> default empty
-# If there is no data (or it is too old)  status bar
+# If there is no data (or it is too old) status bar
 # described in this config will be shown.
 
 parser = text
-# see below for explanation
+# see section Parsers
 
 [exec]
-# Create new process and reed message from their stdout
+# Create new process and parse its standard output
 
 separator = 10
 delay = 0
@@ -243,7 +245,7 @@ show_old = 10
 max_old = 30
 no_data_handler = [constant]
         text = No data
-# The same as in pipe module
+# See pipe module
 
 program = python3
 # mandatory <string>
@@ -259,15 +261,15 @@ stdin
         time.sleep(1)
         i+= 1
 # <string>
-# This string will be putted to program stdin
+# This string will be piped to the standard input of the called process
 
 [http]
-# Fetch message from http(s) (for example some json api).
+# Fetch message from http(s) (for example a JSON api).
 
 error_handler = [constant]
         color = red
         text = ERR
-# The same as in file module
+# See file module
 
 delay = 0
 show_old = 10
@@ -275,14 +277,14 @@ max_old = 30
 no_data_handler = [constant]
         text = No data
 parser = text
-# The same as in pipe module
+# See pipe module
 
 url = http://kam.mff.cuni.cz/~jirikalvoda/x
 # mandatory <string>
 
 period = 20
 # <time> default 10
-# Delay between two asks.
+# Delay between two requests.
 
 timeout = 10
 # <time> default 10
@@ -292,23 +294,25 @@ timeout = 10
 # Parsers:
 # ========
 
-# Some of modules use parsers. It is part of module, that is responsible for processing text oriented message to part of status bar.
+# Some of modules use parsers. It is part of module that is responsible for
+# processing text oriented message to a part of the status bar.
 # You can specify which parser you would like to use by `parser` option.
-# Parsers could have some extra options additionally to module options.
+# Parsers can specify extra options.
 
 # Parser: text
 # ------------
 # Each line will be one segment of status bar.
 # 
-# color = red
-# <color>
+# Options:
+#   color = red
+#   <color>
 
 # Parser: osdd_last
 # ------------
-# Parser for reading messages from On-Screen display daemon 
-# (which is simple linux notification server).
-# First line of message contain unix time when message was shown
-# (time duration will be shown on begin of message).
+# Parser for reading messages from the On-Screen Display Daemon 
+# (simple linux notification server).
+# First line of the message contains UNIX time when the message was shown
+# (time duration will be shown at the beginning of message).
 # Next lines contains color (in HEX format) and text to show.
 # 
 # Example usage:
@@ -324,7 +328,7 @@ parser = osdd_last
 
 # Parser: checkmail_status
 # ------------------------
-# Show number of new mail and connection status from checkmail.
+# Show number of new e-mails and connection status from checkmail.
 #
 # Example usage:
 [checkmail_status]
@@ -344,7 +348,7 @@ parser = offlineimap_status
 
 # Parser: ICE_speed and ICE_next_stop
 # -----------------------------------
-# Show information of speed or next stop and delay for Deutsche bahn ICE trains.
+# Show information about the speed or next stop and delay for Deutsche Bahn ICE trains.
 # Example usage:
 [ICE_speed]
 _type=http
@@ -354,6 +358,7 @@ period = 5
 show_old = 20
 max_old = 120
 error_handler =
+# On error, show nothing
 
 [ICE_next_stop]
 _type=http