divide logic into small functions, some documentation added
divide logic into small functions, some documentation added

EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts,EVODelavega/gp-scripts