allow static constructor