add singleton implements