implement su's suggestions