Move some horrible access point stuff to a generic controller trait