Redo campaigns backend to use ContentHandler

WIP, do not merge!