add book feature implementation