create functional interfaces