added back in require self