Refactored to use parent class read() / write()