auto require self