implemented function application