implement function abstractions and applications