Work in progress, interface is done.

(Must still implement it for every number of type argument from 0 to 4).