I moved this protocol declaration to its own file.
Also, as commented in another note, I refactored this.
Please let me know what you guys think about it now. Thanks