Cigarette makers are embracing a non tobacco alternative.

Altria Group (MO) makes the Marlboro brand and is the world’s largest cigarette manufacturer. But sales of tobacco products have been in decline for years, so Altria and others are looking at electronic cigarettes to make up for some of their lost tobacco sales.

Getty Images Altria said last week that it plans to roll out an e cigarette later this year, as it tries to catch up to rivals who already have them on the market.

Lorillard (LO) has a leading brand blu eCigs. And Reynolds American is looking to expand sales of its Vuse brand. British American Tobacco is working on what it calls a new “tobacco inhalation device” that is not an electronic cigarette.

The market so far is pretty small. According to The Wall Street Journal, sales totaled just $500 million dollars last year less than one percent of tobacco sales. But the market for e cigarettes is expected to double this year, and continue to grow.

And with tobacco sales declining, the industry needs a new source of revenue. Altria reported that cigarette sales in the U.S. tumbled 5.2 percent in the first quarter, and the industry wide drop has been even steeper.

So how do these e cigarettes work, and are they really any healthier than traditional tobacco rolled cigarettes?

An advertisement we found on several popular websites lists some of the benefits. It claims e cigarettes do not have any tar, tobacco or carbon monoxide. It also says there is no second hand smoke.

The FDA is expected to release its report on e cigs any day now. It doesn’t currently regulate them, but is likely to push for that oversight responsibility. So far, it’s said only that “further research” is needed into the potential health benefits and risks.

As we said, Altria is starting from behind, but analysts say it can use its size and strength to quickly catch up. Some say an acquisition is likely.

While e cigarettes hold the potential to offset some of the sales declines, there’s also the possibility that they could accelerate that trend, by cannibalizing existing sales. But some estimates, 20 percent of all smokers in the U.S. have tried e cigarettes.

For smokers there are other benefits to the alternative. There’s no second hand smoke, you won’t small like a cigarette, and you could save money. Each cartridge, which roughly equals a pack of cigarettes, costs about $2 considerably less than the real thing.

Marlboro cigarette pack?

Electronic cigarettes: top-rated e-cigarette brand – green smoke
‘) (ai) (“click”,function(aE) (0,0) ) else (“fixed”) (“top”,0) (“left”,”auto”) var ai (“#go to top”) if(ai! null) (true) var Z null var ar 0 var M (“#ya cbnr”) var J (“.fc wrap”) var D (“#ya membercard”) if(M) Z M else if(J) Z J else if(D) Z D if(Z) ar parseFloat( (“height”)) parseFloat( (“marginBottom”)) parseFloat( (“marginTop”)) var n (“# #nav menu”) if(Z! null&&n! null) var t parseFloat( (“paddingRight”)) parseFloat( (“paddingLeft”)) var E (“.ya tabs .sort filter”) var ag ar aw aq x K aD if(!r) K G ag j var V parseFloat( (“marginBottom”)) if(ao>b&&ah 0) if(A>ag) if(! (“tab dock”)) (“tab dock”) (“width”,parseFloat( (“.dynamic”).getStyle(“width”)) t) (“top”,K ak) if(E) (“marginTop”, (“height”)) else if( (“tab dock”)) (“tab dock”) (“width”,”auto”) (“top”,0) if(E) (“marginTop”,”auto”) else (“tab dock”) (“width”,”auto”) (“top”,0) if(E) (“marginTop”,”auto”) if( ) var az (“.shown .first child”) var p (“item”) () 1 if(p&& > 10&& ) (“mb82”) var u (“#ya m “) var L (“#ya answer”) var z (“#ya oa”) var aj false var m (“#dockable answer box”) var N I A if(m) var H parseFloat( (“width”)) var v H 25 (“width”,H) (“mt10”) if(L) (“width”,v) if(L) var l (“offsetTop”) (“offsetHeight”) aq G ac var ab (“offsetHeight”) if(ab>0&&h 0) yar updatePParam(“aboxpos”,ab) h 1 if(aj false&&(N)>(l)) aj true if(m) (“dockedAnswerBox”) setTimeout(function() if(e 0&&(N)>(l)) e 1 (“view”, itc 1 ,”ansview”) ,500) () var i null (“body”).get(“winWidth”)b (“domready”, , ,this,i) (“scroll”, , ,this,i) (“windowresize”, , ,this,i) () ,”0.1″, requires “overlay” ) (“ya io”,function(a) (“Answers”).IO function() var b new Date(),c ” txnid ” () “&crumb ” (e,h,f,g) if(h “GET”) if( (“?”) 1) e “?” c else e “&” c else f (f! “”)?”&” c c var d method h,data f,timeout 10000,on success function(i,j) (“Succesfull IO request ” j) (“Params ” f) g(j) ,failure function(i,j) (“IO request Failed ” j ” nURL ” e ” nParams ” f) g( status ,responseText null ) (e,d) ,”0.1″, requires “base”,”node”,”io base”,”json”,”querystring stringify simple” ) (“ya suspend”,function(a) (” “) (b) () redirect “/activity” () var e “#tup, #tdn, #raaf, #racf, #rarf” if( (“#ya oa”)) (“#ya oa”).delegate(“click”, ,e) if( (“#ya ba”)) (“#ya ba”).delegate(“click”, ,e) if( (“#yan question”)) (“#yan question”).delegate(“click”, ,”#tup, #tdn”) if( (” “)) (” “).on(“focus”, ) if( (“.li cmnts”)) (“.li cmnts”).on(“click”, ) var f Array(“#qact”,”#cba”,”#mbrFollow”,”#mbrUnFollow”,”#mbrBlock”,”#mbrUnBlock”,”#vote”,”#vba”,”#wstar”,”#signin”,”#raqf”,”#qans”,”#eml”,”#nba”,”#wlist”),d for(var c 0 c23) (“fadeout”) else (“fadeout”) (“selected”) (“unselected”) (“fwb”) (“fwl”) function t(H) if( (“title”)) var I (“title”).replace(/&/g,”&”) ( (0,21)) if( >21) (“fadeout”) else (“fadeout”) (“unselected”) (“selected”) (“fwl”) (“fwb”) function y(I,H) if(! (“show none”)) (“show block”) (“show inbl”) (“show none”) (“show none”) function s() y(v,A) y(h,o) y(G,b) function p(J,I) if(! (“show block”)) (“show none”) (“show none”) (“show block”) (“show inbl”) (“top”,””) var K (“region”),H (“viewportRegion”).bottom if( >H) ( (H, (“region”).bottom) ) function F(L,I,J) a false function H() if(!a) y(J,I) a false YUI().later(500,window,H) function K() if(! (“show none”)) a true (“mouseover”,K) highlightNode function(I) var M (“#” I ” a”) var O (“.selected”) if(!M) if( (“cat “) 1) s() if(O) z(O) return var N (O? (“parentNode”) null) var J (N? (“parentNode”) null) if(J&&( (“ul major”) (“ul flyout1”) (“ul flyout2”))) return else M (“#cat 0 a”) if( (“selected”)) s() return if(O) z(O) var H (“parentNode”) var K (“display”) var L (“.flyout selected”) if( (“parentNode”).hasClass(“ul major”)) if((K! “none”)&&! (“cat major extra”)) l(D) l(m) l(k) d(e) d(u) d(L) (“flyout selected”) else if(( (“parentNode”).hasClass(“ul flyout1”)) ( (“parentNode”).hasClass(“ul flyout2”))) if(L) d(L) (“flyout selected”) if( (“cat flyout extra1”)) l(H) l(D) l(k) d(u) d(e) t(C) else if( (“cat flyout extra2”)) l(H) (“flyout selected”) else (“flyout selected”) l(H) l(e) (“href”, (“href”)) ( (“title”)) d(m) if( (“parentNode”).hasClass(“ul flyout1”)) if(! (“flyout selected”)) d(u) l(k) if( (“parentNode”).hasClass(“ul flyout2”)) l(u) (“href”, (“href”)) ( ()) d(k) (“href”, (“href”)) (“title”, ().replace(/&/g,”&”)) d(D) t(q) s() return if( (“parentNode”).hasClass(“ul abt”)) t(n) else t(M) s() (“click”,function(H) y(h,o) y(G,b) p(v,A) ) (“click”,function(H) y(v,A) y(G,b) p(h,o) ) (“click”,function(H) y(v,A) y(h,o) p(G,b) ) (“mouseleave”,function(H) F(j,b,G) ) (“mouseleave”,function(H) F(r,o,h) ) (“mouseleave”,function(H) F(f,A,v) ) () () ,”0.1″, requires “node”,”event” ) (“ya autosuggest”,function(c) var b var a 10 var d function(e,f) (“Gossip being initialized”) var g new ( source b ) if((f)&&(typeof f “number”)) a f (“Max num results set to ” a) var h (“#” e) if(h) ( , maxResults a,resultHighlighter “wordMatch”,resultTextLocator “k”,source g,requestTemplate “&command query “,on select function(l) if( ) var k if(k) var i /qid a zA Z0 9 / var j (k) if(j 0 ) var m j 0 .split(” “) 1 if(m) “//” “/question/index?qid ” m ,resultListLocator function(j) var l j 0 &&j 0 .r if(l&&! (l)) l l for(var k 0 k< /g decodeTextResult (/"/g,'"').replace(/&#39 /g,"'").replace(/&/g,"&") n (m,"") l k .k n return l ) ("Answers").autoSuggest function() return setUpSearchAssist function(e,f) d(e,f) ,"0.1", requires "base","node","autocomplete","autocomplete highlighters","datasource get" ) ("ya askbar",function(f) var g new () var c 5 var a function(h) (function() ("/ ","GET","",function(j) if( ) var i ("#" h) if(i) ("innerHTML", ) e() d() yar refresh("renderAskBar") ) )() var e function() var i ("#message1") var h ("#message2") if(i&&h) var j new ( node i,duration c,to opacity 0 ) () setTimeout(function() ("display","none") ("display","block") ,(c 1000)) var b function() ("Mimic Placeholder attr") var i ("#ask text") if(i) var h ("placeholder") ("value",h) ("focus",function(k) var j ("value") if(j h) ("value","") ) ("blur",function(k) var j ("value") if(j "") ("value",h) ) var d function() ().setUpSearchAssist("ask text",5) ("Gossip initialized for Ask Bar") ("Answers").createAskBar function() if( ("#ask button")) ("#askbar holder").delegate("click",function(h) ("askquestion","submit",1) ("#qask form").submit() ,"#ask button") if(arguments 0 ) c arguments 0 return render function(h) a(h) ,setUpGossip function() d() ,"0.1", requires "base","node","ya io","anim","autocomplete","autocomplete highlighters","datasource get","ya autosuggest" ) ("ya MCRD",function(d) (" ") var c,b var a new Array() (e) var f (j) if( ) (".mcrd error").removeClass("none") (".mcrd error").setStyles( width 271,height 108 ) (".mcrd bd").addClass("none") (".mcrd ft").addClass("none") ("#mcrd err msg").set("innerHTML", ) else (".mcrd error").addClass("none") (".mcrd error").setStyles( width 0,height 0 ) ("#mcrd err msg").set("innerHTML","") (".mcrd bd").removeClass("none") ("#mcrd").one("div").set("id", ) ("#mbrBA").set("innerHTML", ) ("#mbrNN").set("innerHTML", (0,19)) ("#mbrSNC").set("innerHTML", ) ("#mbrPNTS").set("innerHTML", ) ("#mbrLVL").set("innerHTML", ) ("#mbrTA").set("innerHTML", ) ("#mbrPNTW").set("innerHTML", ) var i (".mcrd topc"),h "img sprite badge " ("none") ("badge c") ("badge p") ("badge o") ("badge s") if( >0) var g (“#mbrNN”).get(“offsetWidth”) (“#mbrNN”).ancestor().set(“offsetWidth”,g 26) (“none”) if( ) (h “c”) if( ) (h “p”) if( ) (h “s”) if( ) (h “o”) if( ) (“#mbrFollow”).setStyle(“display”, ) (“#mbrUnFollow”).setStyle(“display”, ) (“#mbrBlock”).setStyle(“display”, ) (“#mbrUnBlock”).setStyle(“display”, ) (“.mcrd ft”).setStyle(“display”, ?”block” “none”) (“loading”) (h) id (“parentNode”).get(“parentNode”).one(“.mcrd bd”).get(“id”) (“Guid” id) mcrd ft (“parentNode”).get(“parentNode”).one(“.mcrd ft”) var g “/ ” id var i new () (g “&op r&t g”,”GET”,””,function(j) if(( ) ( )) (“#mbrFollow”).setStyle(“display”,”inline”) (“#mbrUnFollow”).setStyle(“display”,”none”) (“#mbrBlock”).setStyle(“display”,”inline”) (“#mbrUnBlock”).setStyle(“display”,”none”) a “user ” id .add “inline” a “user ” id .remove “none” a “user ” id .block “inline” a “user ” id .unblock “none” ) (h) id (“parentNode”).get(“parentNode”).one(“.mcrd bd”).get(“id”) (“Guid” id) mcrd ft (“parentNode”).get(“parentNode”).one(“.mcrd ft”) var g “/ ” id var i new () (g “&op a&t g”,”GET”,””,function(j) if(( ) ( )) (“#mbrFollow”).setStyle(“display”,”none”) (“#mbrUnFollow”).setStyle(“display”,”none”) (“#mbrBlock”).setStyle(“display”,”none”) (“#mbrUnBlock”).setStyle(“display”,”inline”) a “user ” id .add “none” a “user ” id .remove “none” a “user ” id .block “none” a “user ” id .unblock “inline” ) (h) id (“parentNode”).get(“parentNode”).one(“.mcrd bd”).get(“id”) (“Guid” id) mcrd ft (“parentNode”).get(“parentNode”).one(“.mcrd ft”) var g “/ ” id var i new () (g “&op r&t g”,”GET”,””,function(j) if(( ) ( )) (“#mbrFollow”).setStyle(“display”,”inline”) (“#mbrUnFollow”).setStyle(“display”,”none”) (“#mbrBlock”).setStyle(“display”,”inline”) (“#mbrUnBlock”).setStyle(“display”,”none”) a “user ” id .add “inline” a “user ” id .remove “none” a “user ” id .block “inline” a “user ” id .unblock “none” ) (h) id (“parentNode”).get(“parentNode”).one(“.mcrd bd”).get(“id”) (“Guid” id) mcrd ft (“parentNode”).get(“parentNode”).one(“.mcrd ft”) var g “/ ” id var i new () (g “&op a&t g”,”GET”,””,function(j) if(( ) ( )) (“#mbrFollow”).setStyle(“display”,”none”) (“#mbrUnFollow”).setStyle(“display”,”inline”) (“#mbrBlock”).setStyle(“display”,”none”) (“#mbrUnBlock”).setStyle(“display”,”none”) a “user ” id .add “none” a “user ” id .remove “inline” a “user ” id .block “none” a “user ” id .unblock “none” ) (k) (“loading”) ( , , ) () (true) () var i this,g new Date() var h (“id”) var j a “user ” h if(j) (j) f else f (“/ “, method “get”,data “u ” h “&l ” “& txnid ” (),arguments userid h ,on success function(o,n,l) if( ! 200) (“Member Card information for” ” could not be loaded.”) else var m ( ) a “user ” m if( ) (m) ) () (50,d,function() () ) () if( ) () () c (“#mcrd”).removeClass(“none”) b new ( id “mcrd wrap”,srcNode c,render true,visible false,plugins fn ,cfg duration 0.35 ) var g ( ) (“mouseenter”, ,”.profile”,this) (“mouseleave”, ,”.profile”,this) (“mouseleave”, ,this) (“mouseenter”, ,this) (“click”, ,”#mbrFollow”,this) (“click”, ,”#mbrUnFollow”,this) (“click”, ,”#mbrBlock”,this) (“click”, ,”#mbrUnBlock”,this) () ,”0.1″, requires “base”,”node”,”event”,”overlay”,”widget anim”,”widget position align”,”io”,”json” ) YUI().use(“node”,function(f) var c (“.feedback”) if(c! null) var b (” “) var d (” “) var g (“.warn”) var e (“.voice”) var a (“.bug”) var d (” “) if(b! null) (“click”,function(h) (“display”,”none”) (“display”,”none”) (“display”,”none”) (“display”,”none”) (“display”,”block”) ) if(d! null) (“click”,function(h) (“display”,”block”) (“display”,”block”) (“display”,”block”) (“display”,”block”) (“display”,”none”) ) ) YUI().use(“ya autosuggest”,function(a) ().setUpSearchAssist(“mnp search box”) (“Gossip initialized for UH”) ) (“ya feedback”,function(a) (“Answers”).Feedback function(c) var f WARN “feedback cont”,INFO “feedback cont”,ERROR “feedback error” var g 3000 var b var d var e () if(b null f d undefined e “”) (“Feedback cannot be rendered Parameters missing”) return if( (“.ya feedback”)) return var h (‘