input from David