completely removed dependence on MooseX::Singleton