factored redundant Sheets class out into Book