Index: src/backend/keys/cswordversekey.cpp
===================================================================
--- src/backend/keys/cswordversekey.cpp	(revision 868)
+++ src/backend/keys/cswordversekey.cpp	(working copy)
@@ -85,17 +85,21 @@
 
 		for (int testament = min; testament <= max && !finished; ++testament) {
 			for (int book = 0; book < BMAX[testament] && !finished; ++book) {
-				if ( !strcmp(newBook.toUtf8().constData(), books[testament][book].name ) ) {
+				sword::VerseKey tmp = this->clone();
+				Testament(testament);
+				Book(book);
+				if ( !strcmp(newBook.toUtf8().constData(), getBookName()) ) {
 					Testament(testament+1);
 					Book(book+1);
 					finished = true;
 				}
+				*this = tmp;
 			}
 		}
 	}
 
 	if ( (Testament() >= min+1) && (Testament() <= max+1) && (Book() <= BMAX[min]) ) {
-		return QString::fromUtf8( books[Testament()-1][Book()-1].name );
+		return QString::fromUtf8( getBookName() );
 	}
 
 	//return QString::fromUtf8( books[min][0].name ); //return the first book, i.e. Genesis
Index: src/backend/drivers/cswordbiblemoduleinfo.cpp
===================================================================
--- src/backend/drivers/cswordbiblemoduleinfo.cpp	(revision 868)
+++ src/backend/drivers/cswordbiblemoduleinfo.cpp	(working copy)
@@ -114,12 +114,15 @@
 		staticKey.setLocale(sword::LocaleMgr::getSystemLocaleMgr()->getDefaultLocaleName());
 
 		for (int i = min; i <= max; ++i) {
+			staticKey.Testament(i);
 			for ( int j = 0; j < staticKey.BMAX[i]; ++j) {
 				//   if (backend()->useICU())
 				//       m_bookList->append( QString::fromUtf8(staticKey.books[i][j].name) );
 				//      else
 				//         m_bookList->append( QString::fromLocal8Bit(staticKey.books[i][j].name) );
-				m_bookList->append( QString::fromUtf8(staticKey.books[i][j].name) );
+				//m_bookList->append( QString::fromUtf8(staticKey.books[i][j].name) );
+				staticKey.Book(j);
+				m_bookList->append( QString::fromUtf8(staticKey.getBookName()) );
 			}
 		}
 
@@ -133,12 +136,24 @@
 unsigned int CSwordBibleModuleInfo::chapterCount(const unsigned int book) {
 	int result = 0;
 
-	if ( (book >= 1) && book <= (unsigned int)staticKey.BMAX[0] && hasTestament(OldTestament)) {  //Is the book in the old testament?
-		result = (staticKey.books[0][book-1].chapmax);
+	/*if ( (book >= 1) && book <= (unsigned int)staticKey.BMAX[0] && hasTestament(OldTestament)) {  //Is the book in the old testament?
+		VerseKey tmp = staticKey.clone();
+		staticKey.Book(book);
+		result = staticKey.getMaxChapter();
+		staticKey = tmp;
+		//result = (staticKey.books[0][book-1].chapmax);
 	}
 	else if ((book >= 1) && (book - staticKey.BMAX[0]) <= (unsigned int)staticKey.BMAX[1] && hasTestament(NewTestament) ) { //is the book in the new testament?
-		result = (staticKey.books[1][book-1-staticKey.BMAX[0]].chapmax);
-	}
+		VerseKey tmp = staticKey.clone();
+		staticKey.Book(book);
+		result = staticKey.getMaxChapter();
+		staticKey = tmp;
+		//result = (staticKey.books[1][book-1-staticKey.BMAX[0]].chapmax);
+	}*/
+	sword::VerseKey tmp = staticKey.clone();
+	staticKey.Book(book);
+	result = staticKey.getChapterMax();
+	staticKey = tmp;
 
 	return result;
 }
@@ -152,7 +167,7 @@
 unsigned int CSwordBibleModuleInfo::verseCount( const unsigned int book, const unsigned int chapter ) {
 	unsigned int result = 0;
 
-	if (book>=1 && (book <= (unsigned int)staticKey.BMAX[0]) && hasTestament(OldTestament) ) { //Is the book in the old testament?
+	/*if (book>=1 && (book <= (unsigned int)staticKey.BMAX[0]) && hasTestament(OldTestament) ) { //Is the book in the old testament?
 
 		if (chapter <= chapterCount(book) ) //does the chapter exist?
 			result = (staticKey.books[0][book-1].versemax[chapter-1]);
@@ -161,7 +176,12 @@
 
 		if (chapter <= chapterCount(book) ) //does the chapter exist?
 			result = staticKey.books[1][book-1-staticKey.BMAX[0]].versemax[chapter-1];
-	}
+	}*/
+	sword::VerseKey tmp = staticKey.clone();
+	staticKey.Book(book);
+	staticKey.Chapter(chapter);
+	result = staticKey.getVerseMax();
+	staticKey = tmp;
 
 	return result;
 }
@@ -206,7 +226,9 @@
 			++bookNumber;
 			//    if (book == QString::fromLocal8Bit( staticKey.books[i][j].name) )
 
-			if (book == QString::fromUtf8( staticKey.books[i][j].name) )
+			sword::VerseKey tmp = staticKey.clone();
+			staticKey.Book(bookNumber);
+			if (book == QString::fromUtf8( staticKey.getBookName()) )
 				found = true;
 		}
 	}
