An EDSL for defining and creating surveys