Added type checking to ensure operations on normal and kernel
types promote the normal types to kernel types