multiple improvements based on Ken Wesson's comments