make sure initialization is only done once