defrecordp support dynamic name and fields