added Voteable module to DRY up the code