make width type stable, and all kwargs typed