slightly farther with struct pointers