make it more like a continer when reading, add op<<()