modularized to allow deploying admin separately from renderer