- initialize uninitialized properties - use prefix instead of postfix increments - reduce visibility of variables - use empty() instead of size() == 0 for vector and string - pass string by reference, not by value
- encapsulate code into classes - create separate subsystem for keyboard, mouse and joystick - group new subsystems into subsystemgroup "input"