move writer.open to AbstractDataOutput