try self, add singleton