added special read/write and tests