added optional arguments for shape changes