always passing struct to kernel is inefficient
always passing struct to kernel is inefficient