implementation techniques