         @_projects = {} # map from account_id to set of projects of a given user
         @_collabs  = {} # map from account_id to map from account_ids to *number* of projects you have in common
         # create changefeed listening on changes to projects table
+        # TODO: instead of firing on users change; fire on change of jsonb_object_keys(users),
+        # which should be easy via more customized triggers... or a custom postgres VIEW.
         @_db.changefeed
             table  : 'projects'
             select : {project_id:'UUID'}

        if not misc.is_array(watch)
            cb('watch must be an array')
            return
        if watch.length == 0
            cb('there must be at least one column where we watch for watchs')
            return
        @_listening ?= {}
        tgname = trigger_name(table, select, watch)
        if @_listening[tgname] > 0


    # add and remove user from a project, maintaining our data structures (@_accounts, @_projects, @_collabs)
    _add_user_to_project: (account_id, project_id) =>
        if account_id?.length != 36 or project_id?.length != 36
            throw Error("invalid account_id or project_id")
        if @_projects[account_id]?[project_id]
            return
        users = @_users[project_id] ?= {}
