draft from Tony Self with updated declarations