The function optional parameters clears the other parameters set already. This is inconsistent because with your ways of returning the main object in all the funcions. (Sorry my bad english).
I think you should either return a new object and make this function static like a Fcatory function. Or just make this function override and concate the parameters passed.