From Chess Technologies:
Learn and remember chess opening theory better and faster. In addition, you can use this software as an aid in building your opening repertoire. Unlike other chess training software, Chess Opening Trainer does not randomly select training moves and positions. It smartly selects and serves the training move and position, which you had difficulty in solving. Chess Opening Trainer builds on the time-tested educational technique of learning by doing. You train against the computer by playing the exact opening lines you want to learn. Some of the most important features: play the positions against Crafty, import PGN game from clipboard, import games from PGN files, smart training move selection by the computer, view training statistics for current position, and enter notes for individual positions.