self reproduction