refactored bookshelf interface