the lifetimes situation worsens; std::rand -> rand; matching on strings