tried to use TH, but found out that singletons' TH does not match exactly our usecase. Need to manually create TH of our own.