bookshelf with validation model