add functional interfaces