tightened up singleton methods