change pub_date to DateTime, fix optional shelf code