Use gadt to describe procedure's signatures