recursively define