add extent and other fn