added reduce1
added collect method