add FunctionalInterface annotations