add @FuncitonalInterface annotation