can read/write from catch. still needs a lot of work