Store secret inside the class

Encapsulse the secret inside the class so we can reduce the
amount of parameters we need to pass into public methods.
Merge branch 'feature-refactor-secret' into develop