add singularity with test
initial singleton implementation