higher functions

more info at : blog.inadram.com