Functional interfaces revisited