title: Solidity, Member "transfer" not found or not visible after argument-dependent
body: <p>Using Solidity ^0.5.0, 
  I'm actually trying to implement an old code working in ^0.4.17, but it throws an error on Remix.
  I checked syntax and everything but just can't catch what's wrong.
  Any help highly appreciated.</p>
  
  <pre><code>pragma solidity ^0.5.0;
  
  contract Lottery{
    address public manager;
    address[] public players;
  
    constructor() public {
        manager = msg.sender;
    }
  
     function participate() public payable {
         require(msg.value &gt; .01 ether);
         players.push(msg.sender);
    }
  
     function pseudoRandom() private view returns(uint){
      return uint(keccak256(abi.encodePacked(block.difficulty, now, players)));
    }
  
    function pickWinner() public {
      uint index = pseudoRandom() % players.length;
      players[index].transfer(address(this).balance);
    }
  }
  </code></pre>
  
  <p>Here is the error message: </p>
  
  <p>browser/Lottery.sol:22:8: TypeError: Member "transfer" not found or not visible after argument-dependent 
  lookup in address.</p>
  
  <p>players[index].transfer(address(msg.sender).balance);</p>
  
  <p>^---------------------^</p>