simplify by ripping out singleton