Add parameter checking and introduced an optional parameter for the number of changes