Move effect-related methods to Viewer