Added many useful functions whose idea is from Haskell
added a default downloading file