Data abstraction part 2 and changes to prototype