added swift's-functional-programing