restructure, add effect