Complete refactor to use array of Point objects