use cStringIO