cleaning up half-impl