Revert "Refactor"

This reverts commit d0335a5dab7291ce1c1dbdcd8ce14b90f0eb5a2f.
Revert d0335a5..d5ae398

This rolls back to commit d0335a5dab7291ce1c1dbdcd8ce14b90f0eb5a2f.
Revert 1662f57..78c9d23

This rolls back to commit 1662f57021f33d50646e75eab0d27722765637aa.
Revert ed0744d..6fc1d90

This rolls back to commit ed0744db0988e646ba83b161f6445a51df397c47.
Revert d85f41f..1c861da

This rolls back to commit d85f41f844a3134162714177aea66deee724aac1.
Add missing changes
Refactor Tests
Add Utilities File
Merge remote-tracking branch 'origin/gapcon_refactor' into gapcon_refactor