changed based on zhou's doc