add rec builder impl