Laziness (pure functions). Used PureMD5, haskell implementation of MD5 Hash