diff --git a/Nomyx-Language.cabal b/Nomyx-Language.cabal
--- a/Nomyx-Language.cabal
+++ b/Nomyx-Language.cabal
@@ -1,5 +1,5 @@
 name: Nomyx-Language
-version: 0.7.0
+version: 0.7.1
 cabal-version: >=1.6
 ---Warning: to use "cabal sdist", this patch is needed in cabal: https://github.com/haskell/cabal/pull/1110
 ---This allows cabal to work with exported generated modules (Paths_Nomyx_Language)
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/Setup.lhs b/Setup.lhs
deleted file mode 100644
--- a/Setup.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/runhaskell 
-> module Main where
-> import Distribution.Simple
-> main :: IO ()
-> main = defaultMain
-
diff --git a/src/Control/Shortcut.hs b/src/Control/Shortcut.hs
--- a/src/Control/Shortcut.hs
+++ b/src/Control/Shortcut.hs
@@ -3,8 +3,6 @@
 module Control.Shortcut where
 
 import Control.Applicative
-import Control.Monad
-import Data.Either
 import Data.Maybe
 
 -- | class of things that can be run in parallel and can be shortcuted.
diff --git a/src/Language/Nomyx/Events.hs b/src/Language/Nomyx/Events.hs
--- a/src/Language/Nomyx/Events.hs
+++ b/src/Language/Nomyx/Events.hs
@@ -20,10 +20,8 @@
 import Data.Typeable
 import Control.Monad.State
 import Control.Applicative
-import Control.Shortcut
 import Data.List
 import Data.Maybe
-import Data.Either
 import Data.Time hiding (getCurrentTime)
 import Data.Time.Recurrence hiding (filter)
 import Safe
diff --git a/src/Language/Nomyx/Examples.hs b/src/Language/Nomyx/Examples.hs
--- a/src/Language/Nomyx/Examples.hs
+++ b/src/Language/Nomyx/Examples.hs
@@ -34,6 +34,7 @@
    bravoButton,
    enterHaiku,
    displayBankAccount,
+   helloButton,
    module X) where
 
 import Data.Function
@@ -44,7 +45,6 @@
 import Data.Maybe
 import Control.Arrow
 import Control.Monad as X
-import Control.Applicative
 import Safe (readDef)
 import Language.Nomyx
 
@@ -201,34 +201,14 @@
    delPlayer pn
    void $ onEvent_ (playerEvent Arrive) $ const $ void $ delPlayer pn
 
--- * Referendum & elections
 
--- | triggers a referendum, if the outcome is yes player 2 will be kicked
---referendumOnKickPlayer :: Rule
---referendumOnKickPlayer = referendum " kick player 2" (void $ delPlayer 2)
---
----- | triggers elections (all players are candidates), the winner becomes game master
---gameMasterElections :: Rule
---gameMasterElections = do
---   pls <- liftEffect getPlayers
---   elections "Game Master" pls makeGM
-
-makeGM :: PlayerNumber -> Nomex ()
-makeGM pn = do
-   newMsgVar "GameMaster" pn
-   void $ modifyPlayerName pn ("GameMaster " ++)
-
-gameMaster :: MsgVar PlayerNumber
-gameMaster = msgVar "GameMaster"
-
 -- | display a button and greets you when pressed (for player 1)
 bravoButton :: Rule
 bravoButton = void $ onInputButton_ "Click here:" (const $ outputAll_ "Bravo!") 1
 
 -- | display a button to greet other players
 helloButton :: Rule
-helloButton =
-  do
+helloButton = do
    --get your own player number
    me <- getProposerNumber_
    --create an output for me only
@@ -241,6 +221,27 @@
 
 enterHaiku :: Rule
 enterHaiku = void $ onInputTextarea_ "Enter a haiku:" outputAll_ 1
+
+
+-- * Referendum & elections
+
+-- | triggers a referendum, if the outcome is yes player 2 will be kicked
+--referendumOnKickPlayer :: Rule
+--referendumOnKickPlayer = referendum " kick player 2" (void $ delPlayer 2)
+--
+---- | triggers elections (all players are candidates), the winner becomes game master
+--gameMasterElections :: Rule
+--gameMasterElections = do
+--   pls <- liftEffect getPlayers
+--   elections "Game Master" pls makeGM
+
+makeGM :: PlayerNumber -> Nomex ()
+makeGM pn = do
+   newMsgVar "GameMaster" pn
+   void $ modifyPlayerName pn ("GameMaster " ++)
+
+gameMaster :: MsgVar PlayerNumber
+gameMaster = msgVar "GameMaster"
 
 tournamentMasterCandidates :: Rule
 tournamentMasterCandidates = do
diff --git a/src/Language/Nomyx/Expression.hs b/src/Language/Nomyx/Expression.hs
--- a/src/Language/Nomyx/Expression.hs
+++ b/src/Language/Nomyx/Expression.hs
@@ -231,7 +231,7 @@
               _evStatus    :: Status,
               _env         :: [FieldResult]}
 
-data FieldAddressElem = SumR | SumL | AppR | AppL | BindR | BindL | Index Int deriving (Show, Read, Ord, Eq, Generic)
+data FieldAddressElem = SumR | SumL | AppR | AppL | BindR | BindL | Shortcut deriving (Show, Read, Ord, Eq, Generic)
 type FieldAddress = [FieldAddressElem]
 
 data FieldResult = forall e. (Typeable e, Show e) =>
diff --git a/src/Language/Nomyx/Vote.hs b/src/Language/Nomyx/Vote.hs
--- a/src/Language/Nomyx/Vote.hs
+++ b/src/Language/Nomyx/Vote.hs
@@ -24,7 +24,6 @@
 import Control.Shortcut
 import Data.List
 import qualified Data.Map as M
-import Debug.Trace
 
 -- | a vote assessing function (such as unanimity, majority...)
 type AssessFunction = VoteStats -> Maybe Bool
@@ -47,23 +46,22 @@
    callVoteRule' assess endTime ri
 
 callVoteRule' :: AssessFunction -> UTCTime -> RuleInfo -> Nomex ()
-callVoteRule' assess endTime ri = do
-   let title = "Vote for rule: \"" ++ (_rName ri) ++ "\" (#" ++ (show $ _rNumber ri) ++ "):"
-   callVote assess endTime title (finishVote assess ri)
+callVoteRule' assess endTime ri = callVote assess endTime (_rName ri) (_rNumber ri) (finishVote assess ri)
 
 -- | actions to do when the vote is finished
 finishVote :: AssessFunction -> RuleInfo -> [(PlayerNumber, Maybe Bool)] -> Nomex ()
 finishVote assess ri vs = do
-       let passed = fromJust $ assess $ getVoteStats (map snd vs) True
-       activateOrRejectRule ri passed
-       void $ outputAll $ showFinishedVote (_rNumber ri) passed vs
+   let passed = fromJust $ assess $ getVoteStats (map snd vs) True
+   activateOrRejectRule ri passed
+   void $ outputAll $ showFinishedVote (_rNumber ri) passed vs
 
 
 -- | call a vote for every players, with an assessing function, a delay and a function to run on the result
-callVote :: AssessFunction -> UTCTime -> String -> ([(PlayerNumber, Maybe Bool)] -> Nomex ()) -> Nomex ()
-callVote assess endTime title payload = do
+callVote :: AssessFunction -> UTCTime -> String -> RuleNumber -> ([(PlayerNumber, Maybe Bool)] -> Nomex ()) -> Nomex ()
+callVote assess endTime name rn payload = do
+   let title = "Vote for rule: \"" ++ name ++ "\" (#" ++ (show rn) ++ "):"
    en <- onEventOnce (voteWith endTime assess title) payload
-   displayVote en
+   displayVote en rn
 
 -- | vote with a function able to assess the ongoing votes.
 -- | the vote can be concluded as soon as the result is known.
@@ -76,7 +74,6 @@
    (vs, _)<- shortcut2b voteEvents timerEvent isFinished
    return $ zip pns vs
 
-
 -- trigger the display of a radio button choice on the player screen, yelding either True or False.
 -- after the time limit, the value sent back is Nothing.
 singleVote :: String -> PlayerNumber -> Event Bool
@@ -134,13 +131,13 @@
 notVoted    vs = (nbParticipants vs) - (voted vs)
 voted       vs = M.findWithDefault 0 True (voteCounts vs) + M.findWithDefault 0 False (voteCounts vs)
 
-displayVote :: EventNumber -> Nomex ()
-displayVote en = void $ outputAll $ do
+displayVote :: EventNumber -> RuleNumber -> Nomex ()
+displayVote en rn = void $ outputAll $ do
    mds <- getIntermediateResults en
    let mbs = map getBooleanResult <$> mds
    pns <- getAllPlayerNumbers
    case mbs of
-      Just bs -> showOnGoingVote $ getVotes pns bs
+      Just bs -> showOnGoingVote (getVotes pns bs) rn
       Nothing -> return ""
 
 getVotes :: [PlayerNumber] -> [(PlayerNumber, Bool)] -> [(PlayerNumber, Maybe Bool)]
@@ -155,12 +152,11 @@
    Just a  -> (pn, a)
    Nothing -> error "incorrect vote field"
 
-
-showOnGoingVote :: [(PlayerNumber, Maybe Bool)] -> NomexNE String
-showOnGoingVote [] = return "Nobody voted yet"
-showOnGoingVote listVotes = do
+showOnGoingVote :: [(PlayerNumber, Maybe Bool)] -> RuleNumber -> NomexNE String
+showOnGoingVote [] rn = return $ "Votes for rule #" ++ (show rn) ++ ": Nobody voted yet"
+showOnGoingVote listVotes rn = do
    list <- mapM showVote listVotes
-   return $ "Votes:" ++ "\n" ++ concatMap (\(name, vote) -> name ++ "\t" ++ vote ++ "\n") list
+   return $ "Votes for rule #" ++ (show rn) ++ ":" ++ "\n" ++ concatMap (\(name, vote) -> name ++ "\t" ++ vote ++ "\n") list
 
 showFinishedVote :: RuleNumber -> Bool -> [(PlayerNumber, Maybe Bool)] -> NomexNE String
 showFinishedVote rn passed l = do
