add functional constructs