sub singleton { $singleton = shift->new(@_) unless($singleton); return $singleton; }