renamed addCommands() to loadCommands(), made it private and added documentation for reduce() method