diff --git a/sflphone-common/src/Codec.h b/sflphone-common/src/Codec.h
index 5afd4047072119e8f23cbc1ad880da147ab75c96..db1d7fe6b2f66d615685706b2da1065b9d5d12da 100644
--- a/sflphone-common/src/Codec.h
+++ b/sflphone-common/src/Codec.h
@@ -30,19 +30,36 @@
 #ifndef __SFL_CODEC_H__
 #define __SFL_CODEC_H__
 
-#include "MimeParameters.h" // TODO Move to some higher directory
-
 #include <cc++/digest.h>
 
 /**
  * Interface for both audio codecs as well as video codecs.
  */
 namespace sfl {
-class Codec : public MimeParameters
+class Codec
 {
     public:
         Codec() {};
         virtual ~Codec() {}
+        /**
+         * @return The mimesubtype for this codec. Eg. : "video"
+         */
+        virtual std::string getMimeType() const = 0;
+
+        /**
+         * @return The mimesubtype for this codec. Eg. : "theora"
+         */
+        virtual std::string getMimeSubtype() const = 0;
+
+        /**
+         * @return payload type numeric identifier.
+         */
+        virtual uint8 getPayloadType() const = 0;
+
+        /**
+         * @return RTP clock rate in Hz.
+         */
+        virtual uint32 getClockRate() const = 0;
 
         /**
          * @return The bitrate for which this codec is configured // TODO deal with VBR case.
diff --git a/sflphone-common/src/MimeParameters.h b/sflphone-common/src/MimeParameters.h
deleted file mode 100644
index 9ce67d76d679f8924105aebeb83c72eae812ca6a..0000000000000000000000000000000000000000
--- a/sflphone-common/src/MimeParameters.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- *  Copyright (C) 2004, 2005, 2006, 2009, 2008, 2009, 2010 Savoir-Faire Linux Inc.
- *  Author: Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 3 of the License, or
- *  (at your option) any later version.
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *  Additional permission under GNU GPL version 3 section 7:
- *
- *  If you modify this program, or any covered work, by linking or
- *  combining it with the OpenSSL project's OpenSSL library (or a
- *  modified version of that library), containing parts covered by the
- *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
- *  grants you additional permission to convey the resulting work.
- *  Corresponding Source for a non-source form of such a combination
- *  shall include the source code for the parts of OpenSSL used as well
- *  as that of the covered work.
- */
-
-#ifndef __SFL_MIME_PARAMETERS_H__
-#define __SFL_MIME_PARAMETERS_H__
-
-#include <cstddef>
-
-using std::ptrdiff_t;
-#include <ccrtp/rtp.h>
-#include <algorithm>
-#include <stdexcept>
-#include <vector>
-#include <map>
-#include <cerrno>
-
-#include "global.h"
-#include "sip/Fmtp.h"
-
-namespace sfl
-{
-
-/**
- * This exception is thrown in cases where a given format cannot
- * be parsed, or required pieces of information are missing.
- */
-class SdpFormatNegotiationException: public std::runtime_error
-{
-	public:
-	SdpFormatNegotiationException (const std::string& msg) : std::runtime_error (msg) {}
-};
-
-/**
- * Interface for exposing MIME parameters in SDP offer/answer model.
- */
-class MimeParameters
-{
-    public:
-        /**
-         * @return The mimesubtype for this codec. Eg. : "video"
-         */
-        virtual std::string getMimeType() const = 0;
-
-        /**
-         * @return The mimesubtype for this codec. Eg. : "theora"
-         */
-        virtual std::string getMimeSubtype() const = 0;
-
-        /**
-         * @return payload type numeric identifier.
-         */
-        virtual uint8 getPayloadType() const = 0;
-
-        /**
-         * @param payload The new payload to set
-         */
-        virtual void setPayloadType(uint8 payload) = 0;
-
-        /**
-         * @return RTP clock rate in Hz.
-         */
-        virtual uint32 getClockRate() const = 0;
-
-        /**
-         * @param name The name that identifies the MIME parameter.
-         * @param value The value this parameter should have.
-         */
-        virtual void setParameter (const std::string& name, const std::string& value) = 0;
-
-        /**
-         * @param name The name that identifies the MIME parameter.
-         * @return The value that is set for this parameter.
-         */
-        virtual std::string getParameter (const std::string& name) const = 0;
-
-        /**
-         * @return A string containing the codec specific parameters, formatted by default as :
-         * "PARAM_LIST : PARAM_NAME = VALUE SEMI_COLON PARAM_LIST | PARAM_END
-         *  PARAM_END : empty"
-         */
-        virtual std::string getParametersFormatted() const {
-        	// TODO Instead of putting everything into the same vector,
-        	// enforce the required vs optional aspect. Unfilled required params. should
-        	// result in exception throwing.
-        	std::vector<std::string> paramList = requiredParameters;
-        	std::copy(optionalParameters.begin(), optionalParameters.end(), std::back_inserter(paramList));
-
-        	std::string output("");
-        	std::vector<std::string>::iterator it;
-        	int numberParamsAppended = 0;
-        	for (it = paramList.begin(); it != paramList.end(); it++) {
-
-        		std::string name = *it;
-        		std::string value = getParameter(name);
-        		if (value != "") {
-        	   		if (numberParamsAppended != 0) {
-        	        	output.append("; ");
-        	        }
-
-        	   		output.append(name + "=" + value);
-
-        	   		numberParamsAppended += 1;
-        		}
-        	}
-
-        	return output;
-        }
-
-        /**
-         * Calls #setParameter() in a loop for every parameters of the format object.
-         * @param format The format object containing the parameters to set.
-         */
-        void setParameters(const sfl::Fmtp& format) {
-        	sfl::Fmtp::const_iterator it;
-        	for (it = format.begin(); it != format.end(); it++) {
-        		_info("****************** Setting parameters");
-        		setParameter((*it).first, (*it).second);
-        	}
-        }
-
-        void setNegotiatedParameters(const sfl::Fmtp& format) {
-        	negotiatedFormat = format;
-        }
-
-        void applyNegotiatedParameters() {
-        	setParameters(negotiatedFormat);
-        }
-
-    protected:
-        sfl::Fmtp negotiatedFormat;
-
-        /**
-         * @param name The name for the required parameter to add.
-         */
-        void addRequiredParameter(const std::string& name) {
-        	requiredParameters.push_back(name);
-        }
-        std::vector<std::string> requiredParameters;
-
-        /**
-         * @param name The name for the optional parameter to add.
-         */
-        void addOptionalParameter(const std::string& name) {
-        	optionalParameters.push_back(name);
-        }
-        std::vector<std::string> optionalParameters;
-
-        /**
-         * Negotiation handler type.
-         * @param localParam The local parameter.
-         * @param remoteParam The remote parameter.
-         * @param offerer The specified format for the offerer.
-         * @param answerer The specified format for the answerer.
-         * @param negotiatedFmtp The format in which to make changes, if any.
-         * @throw SdpFormatNegotiationException if the format can't be processed because of missing options,
-         * or wrong formatting.
-         */
-        typedef void (*ParameterNegotiationHandler)(
-        		const sfl::SdpParameter& localParam,
-        		const sfl::SdpParameter& remoteParam,
-        		const sfl::Fmtp& offerer,
-        		const sfl::Fmtp& answerer,
-        		sfl::Fmtp& negotiatedFmtp);
-
-        std::map<std::string, ParameterNegotiationHandler> parameterHandlerTable;
-
-        typedef std::pair<std::string, ParameterNegotiationHandler> ParameterHandlerEntry;
-
-        typedef std::map<std::string, ParameterNegotiationHandler>::iterator ParameterHandlerIterator;
-
-        /**
-         * Add a negotiation handler for the given property.
-         * @param name The parameter name (eg: "profile-level-id")
-         * @param handler A pointer to the negotiation handler function;
-         */
-        void addHandler(const std::string& name, ParameterNegotiationHandler handler) {
-        	parameterHandlerTable.insert(ParameterHandlerEntry(name, handler));
-        }
-
-    public:
-
-        /**
-         * The default behavior if this method is not overriden is to return the format from
-         * the answerer.
-         * @param offerer The specified format for the offerer.
-         * @param answerer The specified format for the answerer.
-         * @return A format object containing the negotiated format.
-         * @throw SdpFormatNegotiationException if the format can't be processed because of missing options,
-         * or wrong formatting.
-         */
-        virtual sfl::Fmtp negotiate(const sfl::Fmtp& offerer, const sfl::Fmtp& answerer) throw(SdpFormatNegotiationException) {
-        	sfl::Fmtp::iterator itAnswerer;
-
-        	// This object will be built iteratively
-			sfl::Fmtp negotiatedFmtp(offerer.getPayloadType());
-
-			sfl::Fmtp::const_iterator it;
-			// Iterate over all of the properties in the answer
-    		for (it = answerer.begin(); it != answerer.end(); it++) {
-    			std::string propertyName = (*it).first;
-    			std::string valueAnswerer = (*it).second;
-
-    			// Find the corresponding property in the offer
-    			std::string valueOfferer;
-    			sfl::Fmtp::const_iterator itOfferer = offerer.getParameter(propertyName);
-    			if (it == offerer.end()) {
-    				valueOfferer = "";
-    			} else {
-    				valueOfferer = (*itOfferer).second;
-    			}
-
-    			// Find a suitable property handler
-        		ParameterHandlerIterator itHandler = parameterHandlerTable.find(propertyName);
-        		if (itHandler != parameterHandlerTable.end()) {
-        			((*itHandler).second)(sfl::SdpParameter(propertyName, valueOfferer),
-        					sfl::SdpParameter(propertyName, valueAnswerer),
-        					offerer, answerer, negotiatedFmtp);
-        		} else {
-        			_error("Could not find any handler for property \"%s\"", propertyName.c_str());
-        		}
-    		}
-
-    		return negotiatedFmtp;
-    	}
-
-    protected:
-        /**
-         * This handler makes
-         */
-        static void addParameterIfEqual(
-        		const sfl::SdpParameter& localParam,
-        		const sfl::SdpParameter& remoteParam,
-        		const sfl::Fmtp& offerer UNUSED,
-        		const sfl::Fmtp& answerer UNUSED,
-        		sfl::Fmtp& negotiatedFmtp)
-        {
-        	if (localParam.getValue() == remoteParam.getValue()) {
-        		negotiatedFmtp[localParam.getName()] = localParam.getValue();
-        	}
-        }
-
-        static void addParameterMinimum(
-        		const sfl::SdpParameter& localParam,
-        		const sfl::SdpParameter& remoteParam,
-        		const sfl::Fmtp& offerer UNUSED,
-        		const sfl::Fmtp& answerer UNUSED,
-        		sfl::Fmtp& negotiatedFmtp)
-        {
-    		long int localValue = strtol(localParam.getValue().c_str(), NULL, 16);
-    		if (localValue == 0 && errno == EINVAL) {
-    			// Throw
-    		}
-
-    		long int remoteValue = strtol(remoteParam.getValue().c_str(), NULL, 16);
-    		if (remoteValue == 0 && errno == EINVAL) {
-    			// Throw
-    		}
-
-    		long int minimumValue = std::min(localValue, remoteValue);
-    		negotiatedFmtp[localParam.getName()] = minimumValue;
-        }
-
-        static void addParameterRemote(
-        		const sfl::SdpParameter& localParam UNUSED,
-        		const sfl::SdpParameter& remoteParam,
-        		const sfl::Fmtp& offerer UNUSED,
-        		const sfl::Fmtp& answerer UNUSED,
-        		sfl::Fmtp& negotiatedFmtp)
-        {
-        	negotiatedFmtp[remoteParam.getName()] = remoteParam.getValue();
-        }
-};
-
-}
-#endif
diff --git a/sflphone-common/src/audio/codecs/audiocodec.cpp b/sflphone-common/src/audio/codecs/audiocodec.cpp
index 51b29648c13513a0060fca4b3ec14d3a90ea070f..7c4c649a4a026c68debf2c5107ab3dd357299f7b 100644
--- a/sflphone-common/src/audio/codecs/audiocodec.cpp
+++ b/sflphone-common/src/audio/codecs/audiocodec.cpp
@@ -31,6 +31,8 @@
  */
 
 #include "audiocodec.h"
+using std::ptrdiff_t;
+#include <ccrtp/rtp.h>
 
 namespace sfl {
 
diff --git a/sflphone-common/src/audio/codecs/audiocodec.h b/sflphone-common/src/audio/codecs/audiocodec.h
index 7f97f2e1deb3e83701ffa89a1ae0e930cf01fb53..ccc765444f7000997fc4defc88c52764b6bb893f 100644
--- a/sflphone-common/src/audio/codecs/audiocodec.h
+++ b/sflphone-common/src/audio/codecs/audiocodec.h
@@ -38,6 +38,11 @@
 
 #include "Codec.h"
 
+namespace ost {
+    class PayloadFormat;
+    class DynamicPayloadFormat;
+}
+
 namespace sfl {
 
 class AudioCodec : public Codec
@@ -70,12 +75,12 @@ class AudioCodec : public Codec
         /**
          * @Override
          */
-        void setParameter (const std::string& name UNUSED, const std::string& value UNUSED) {};
+        void setParameter (const std::string& /*name*/, const std::string& /*value*/) {};
 
         /**
          * @Override
          */
-        std::string getParameter (const std::string& name UNUSED) const {
+        std::string getParameter (const std::string& /*name*/) const {
             return "";
         };