IMPLEMENTATION ISSUES Remapping of features Local features—meaning annotations that are not in Ensembl or UCSC—are stored in a feature database. The feature database was intended to be a Bio::DB::GFF-shaped database, as used by GBrowse; however, user accountability was required over database inserts, edits and deletes, so various modifications and additions were introduced. The variable GFF field 9 was replaced with a defined set of attributes for each feature type. For each feature, the NCBI build number is linked to the feature's coordinates and these are stored together with the sequence. The database is checked on a daily basis for unmapped features, and the sequences for these features are extracted and mapped onto the genome using BLAT. This storage of sequence also allows for easy remapping after an update of the genome build. When Ensembl or UCSC issue new releases, we reimport their data and rebuild our GBrowse database from scratch. We then extract local features from the feature database, remap these onto the genome using BLAT and add the remapped features to the GBrowse database. The remapping process could be made faster through comparison of the new and old genome releases. For genomic regions that are not changed, it can be assumed that all the features contained within the region still have the same coordinates and need not be remapped. However, remapping is currently not a rate-limiting step, and we have not yet attempted this optimization. Website implementation The website is implemented in Perl and runs on Linux with the Apache web server. Most of the website uses MySQL as the underlying database engine; the exception is Connect-the-Dots, which uses PostgreSQL due to the complex queries involved. Essentially all web pages are generated by cgi scripts. We use common Perl modules (CGI, Apache::Session, Template, DBI) for basic web and database functionality, and developed a page template module on top of these to ensure a common look-and-feel. The page template generates the basic look of each page—top banner, side navigation bar and footer material—and handles processing needs such as session tracking, user logins, page titles, error logging and database connections.