need not be a singleton class