kernels now propogate appropriate type