I agree with the object oriented part. Its surprising how many people don't know how to apply good data abstraction and encapsulation. They end up making tons of booleans and hard-coded GUI elements that it just becomes insane. Seriously, create a hack object that handles it's own key binds and properties. To create a new hack, just instantiate it into a list of hacks and have the GUI automatically go through it and display the GUI. Makes adding new hacks literally just 1 line of code.