abstract contains changes from ben/gerald