Semi-functional implementation