updated for singleton