implement add book