requires application controller first to avoid conflicts