updated the functional specification