use pointers everywhere