start data abstraction, 2.1 almost done