Add optional width, pass named arguments to the JS and improve specs