improved data abstraction & data hiding
added some comments