added extra optional states