@private
The decorator makes the function inaccessible from outside the contract.
The @public
decorator makes the function both visible and executable publicly. For example, even the Ethereum wallet will display such functions when viewing the contract.
@constant
@payable
Only functions with the decorator are allowed to transfer value.