Separated read and write into their own modules