30: refactor