terdade: refactor