Refactored the execute method to avoid anyone overriding that method by mistake
Added tons of documentation