diff --git a/libcore/asobj/NetConnection_as.cpp b/libcore/asobj/NetConnection_as.cpp
index 1b3db88..113acd8 100644
--- a/libcore/asobj/NetConnection_as.cpp
+++ b/libcore/asobj/NetConnection_as.cpp
@@ -281,22 +281,36 @@ public:
     }
 
     virtual void call(as_object* asCallback, const std::string& methodName,
-            const std::vector<as_value>& args)
-    {
-        SimpleBuffer buf;
-        amf::Writer aw(buf);
-        aw.writeString(methodName);
-        const size_t id = asCallback ? callNo() : 0;
-        aw.writeNumber(id);
-
-        for (size_t i = 0; i < args.size(); ++i) {
-            args[i].writeAMF0(aw);
-        }
-        _rtmp.call(buf);
-        if (asCallback) {
-            pushCallback(id, asCallback);
-        }
-    }
+            const std::vector<as_value>& args) {
+
+        if(methodName == "play") {
+            SimpleBuffer buf;
+            amf::Writer aw(buf);
+            aw.writeString("play");
+            aw.writeNumber(0);
+            aw.writeNull();
+            for (size_t i = 0; i < args.size(); ++i) {
+               args[i].writeAMF0(aw);
+            }
+           // TODO Use the play method and the streamId from createStream
+           _rtmp.call(buf);
+	} else {
+            SimpleBuffer buf;
+            amf::Writer aw(buf);
+            aw.writeString(methodName);
+            const size_t id = asCallback ? callNo() : 0;
+            aw.writeNumber(id);
+
+            for (size_t i = 0; i < args.size(); ++i) {
+               args[i].writeAMF0(aw);
+            }
+           _rtmp.call(buf);
+           if (asCallback) {
+              pushCallback(id, asCallback);
+           }
+	}
+
+    }   
 
     bool hasPendingCalls() const {
         return false;
@@ -384,7 +398,6 @@ public:
 private:
 
     void handleInvoke(const boost::uint8_t* payload, const boost::uint8_t* end);
-
     rtmp::RTMP _rtmp;
     bool _connectionComplete;
     const URL _url;
@@ -630,9 +643,15 @@ NetConnection_as::getStream(const std::string& name)
     
     if(isRTMP())
     {
-       std::string rtmpUrl = _uri + "/" + name;
-       URL url(rtmpUrl, streamProvider.baseURL());
-       return streamProvider.getStream(url, rcfile.saveStreamingMedia());
+        as_object *obj = &owner(); // Use the callBack of the object to get the streamId
+        createStream(obj);//Create Stream called
+        // USe streamId in the call of play
+        std::vector<as_value> args;
+        args.push_back(name); // TODO Add args[1] to be the return from createStream 
+	_currentConnection->call(obj, "play", args);
+        std::string rtmpUrl = _uri + "/" + name;
+        URL url(rtmpUrl, streamProvider.baseURL());
+        return streamProvider.getStream(url, rcfile.saveStreamingMedia());
     }
     else 
     { 
@@ -1262,7 +1281,7 @@ HTTPConnection::call(as_object* asCallback, const std::string& methodName,
         pushCallback(callID, asCallback);
     }
 }
-
+ 
 void
 RTMPConnection::handleInvoke(const boost::uint8_t* payload,
         const boost::uint8_t* end)
diff --git a/libcore/asobj/NetStream_as.cpp b/libcore/asobj/NetStream_as.cpp
index de6c30a..91311d5 100644
--- a/libcore/asobj/NetStream_as.cpp
+++ b/libcore/asobj/NetStream_as.cpp
@@ -48,7 +48,6 @@
 #include "AMFConverter.h"
 #include "AMF.h"
 #include "SoundUtils.h"
-#include "RTMP.h"
 #include "VideoDecoder.h"
 #include "AudioDecoder.h"
 
@@ -1589,7 +1588,6 @@ netstream_new(const fn_call& fn)
 
         NetConnection_as* nc;
         if (isNativeType(toObject(fn.arg(0), getVM(fn)), nc)) {
-            nc->createStream(obj);
             ns->setNetCon(nc);
             if ( nc->isConnected() ) {
                 // TODO: initialize only once ?
@@ -1644,7 +1642,6 @@ as_value
 netstream_play(const fn_call& fn)
 {
     NetStream_as* ns = ensure<ThisIsNative<NetStream_as> >(fn);
-    
   
     if (!fn.nargs) {
         IF_VERBOSE_ASCODING_ERRORS(
@@ -1661,26 +1658,6 @@ netstream_play(const fn_call& fn)
         return as_value();
     }
     
-    NetConnection_as *nc = ns -> getNetCon();
-    if (nc -> isRTMP()) {
-        std::vector<as_value> args;
-	
-        SimpleBuffer buf;
-        rtmp::RTMP rtmpObj;
-        args = std::vector<as_value>(fn.getArgs().begin(),
- 		fn.getArgs().end());
-        amf::Writer aw(buf);
-        aw.writeString("play");
-        aw.writeNumber(0);
-        aw.writeNull();
-        for (size_t i = 0; i < args.size(); ++i) 
-        {
-            args[i].writeAMF0(aw);
-        }
-        // TODO Use the play method and the streamId from createStream
-        rtmpObj.call(buf);
-    }
-
     ns->play(fn.arg(0).to_string());
 
     return as_value();
