make width and height optional