fixed preserve 'this' in map function