some subtle bugs about data forwarding