change some methods to be transactional, no need to call put() directly
add some properties and accessing methods in BookList