I don't like how this is implemented.
I prefer an Ask Forgiveness, Not Permission approach. Will refactor the code.