add getters, setters, show, refactor I/O operations