anchor.diff:      |> String.concat ""
       |> sprintf "http://www.gravatar.com/avatar/%s?s=200"
   
  -  let onFindUserSuccess (getStreamClient : GetStream.Client) userProfileViewModel (userMayBe : User option) = 
  +  let onFindUserSuccess getStreamClient userProfileViewModel (userMayBe : User option) = 
       match userMayBe with
       | None -> 
         let msg = 
  
positive.code:       let (UserId userId) = user.UserId
        let userFeed = 
          GetStream.userFeed getStreamClient userId
        
        let vm = 
          { userProfileViewModel with 
              GravatarUrl = gravatarUrl user.EmailAddress
              Username = user.Username.Value
              UserId = userId
              UserFeedToken = userFeed.ReadOnlyToken
              ApiKey = getStreamClient.Config.ApiKey
              AppId = getStreamClient.Config.AppId
          }
        page "user/profile.liquid" vm
  
  
negative.code:     page "server_error.liquid" "something went wrong"
  
  
    let renderUserProfile (getStreamClient : GetStream.Client) findUser username userMayBe ctx = async {
      match Username.TryCreate username with
      | Success validatedUsername -> 
        let vm = 
          {emptyUserProfileViewModel with
             Username = validatedUsername.Value
             ApiKey = getStreamClient.Config.ApiKey
             AppId = getStreamClient.Config.AppId
          }
        match userMayBe with
        | None -> 
          let! webpart =
              findUser validatedUsername
              |> AR.either 
                     (onFindUserSuccess getStreamClient vm) onFindUserFailure
          return! webpart ctx
        | Some (user : User) -> 
          let vm = {vm with IsLoggedIn = true}
  