increased the abstraction
changes the pointers