diff --git a/Voting.sol b/Voting.sol
new file mode 100644
index 0000000..28b527f
--- /dev/null
+++ b/Voting.sol
@@ -0,0 +1,47 @@
+pragma solidity ^0.4.6;
+// We have to specify what version of compiler this code will compile with
+
+contract Voting {
+ /* mapping field below is equivalent to an associative array or hash.
+ The key of the mapping is candidate name stored as type bytes32 and value is
+ an unsigned integer to store the vote count
+ */
+
+ mapping (bytes32 => uint8) public votesReceived;
+
+ /* Solidity doesn't let you pass in an array of strings in the constructor (yet).
+ We will use an array of bytes32 instead to store the list of candidates
+ */
+
+ bytes32[] public candidateList;
+
+ /* This is the constructor which will be called once when you
+ deploy the contract to the blockchain. When we deploy the contract,
+ we will pass an array of candidates who will be contesting in the election
+ */
+ function Voting(bytes32[] candidateNames) {
+ candidateList = candidateNames;
+ }
+
+ // This function returns the total votes a candidate has received so far
+ function totalVotesFor(bytes32 candidate) returns (uint8) {
+ if (validCandidate(candidate) == false) throw;
+ return votesReceived[candidate];
+ }
+
+ // This function increments the vote count for the specified candidate. This
+ // is equivalent to casting a vote
+ function voteForCandidate(bytes32 candidate) {
+ if (validCandidate(candidate) == false) throw;
+ votesReceived[candidate] += 1;
+ }
+
+ function validCandidate(bytes32 candidate) returns (bool) {
+ for(uint i = 0; i < candidateList.length; i++) {
+ if (candidateList[i] == candidate) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/index.html b/index.html
index b05205f..d3b5ecc 100644
--- a/index.html
+++ b/index.html
@@ -1,126 +1,41 @@
-
-
-