anchor.diff:      IsSelf = false
     }
   
  +  type FindUserProfile = 
  +    Username -> AsyncResult<UserProfile option, Exception>
     let findUserProfile (findUser : FindUser) username = asyncTrial {
       let! userMayBe = findUser username
  -    match userMayBe with
  -    | None -> return None
  -    | Some user -> 
  -       return Some (newProfile user)
  +    return Option.map newProfile userMayBe
     }
   
  +  type HandleUserProfile = 
  +    Username -> User option -> AsyncResult<UserProfile option, Exception>
     let handleUserProfile findUserProfile (username : Username) loggedInUser  = asyncTrial {
       match loggedInUser with
       | None -> 
  
positive.code: 
    let renderProfileNotFound =
      page "not_found.liquid" "user not found"
    
    let handleUserProfileAsyncResult newUserProfileViewModel loggedInUser aResult = async {
      let! result = aResult |> Async.ofAsyncResult
      match result with
      | Success (Some (userProfile : UserProfile)) -> 
        let vm = {
          newUserProfileViewModel userProfile with
            IsLoggedIn = Option.isSome loggedInUser
            IsSelf = userProfile.IsSelf }
        return renderUserProfilePage vm
      | Success None -> 
        return renderProfileNotFound
      | Failure ex -> 
        printfn "%A" ex
        return page "server_error.liquid" "something went wrong"
    } 
      
  
    let renderUserProfile newUserProfileViewModel handleUserProfile username loggedInUser  ctx = async {
      match Username.TryCreate username with
      | Success validatedUsername -> 
        let! webpart = 
          handleUserProfile validatedUsername loggedInUser
          |> handleUserProfileAsyncResult newUserProfileViewModel loggedInUser
        return! webpart ctx
      | Failure _ -> 
        return! renderProfileNotFound ctx
  
negative.code:       Username = userProfile.User.Username.Value
        GravatarUrl = userProfile.GravatarUrl
        IsLoggedIn = false
        IsSelf = userProfile.IsSelf
        UserId = userId
        UserFeedToken = userFeed.ReadOnlyToken
        ApiKey = getStreamClient.Config.ApiKey
  