Ending the first funtional version