What is a functional specification.