logic impl