add functional data structures