extends singleton