updated functional spec