Added documentation and cleaned up classes.
Renamed operation_factory to operation_bank.