functional data structure