Made the code object oriented

Each listener event will create a new instance of Protected
Added proper Java Docs to each function
Added and updated protect listeners
Added a configuration file