more clean ups, example functionptr delegate