generalized some props from rect/circle to shape