more work to support function types