| Annotation | Purpose: Holds all possible gene annotations given a set of input annotations This structure will be used by the dynamic prog. algorithm to record the optimal annotation with respect to the scoring system. This class is mainly a wrapper around the AnnotationMatrix object and is responsible for inserting into the matrix and extracting the optimal parse from the matrix Collaborators: AnnotationMatrix, AnnotationItem, AnnotationScore, Combine  | 
| AnnotationItem | Purpose: The annotation matrix is made up of a linked list of this object One instance of this class records all the necessary information for one unique genomic region  | 
| AnnotationMatrix | Purpose: A glorified linked list of AnnotationItem objects class acts as a wrapper container class  | 
| Combine | Purpose: Initiates the main combiner algorithm  | 
| CustomScore | Interface, defines the behavior of the scoring function for the client application | 
| InputData | Responsibilities: Stores all data input information, in sorted 5' -> 3' order. Collaborators: DataSetAbstractFactory, GenePredDataSetFactory, NapDataSetConcreteFactory, SpliceSiteDataSetConcreteFactory, Prediction, Combine  | 
| Main | Interface to the "main" function runs combiner | 
| RegionPrediction | Responsibilities: Manage all available evidence for a given sequence region Collaborators: DataSetAbstractProduct, SpliceSite, AnnotationScore  |