begin adding primitives to protocol
utilize varargs