updated Shaffer