refactor to use a join table and add author and catalog classes