Added type and parameter length enforcement
There's a still a bug with implicit evaluation such that it does not get
checked until runtime.