good book system design