updating with david's help