implement == and != on BookId
seal disposable classes
simplify away SessionFactory
simplify away ISession
declare fields as IDictionary and ISet and IList