stopPropagation vs preventDefault
removed dependence on Array.reduce() ( not ie8- compatible)