diff --git a/CarService.cc b/CarService.cc
index 6bdfb10e88f7e7ce5c7f754d909873dec2a5c6e9..a0722b81041e9d427d7ced5ae9b3ade7ba4a262f 100644
--- a/CarService.cc
+++ b/CarService.cc
@@ -1,34 +1,33 @@
+#include <algorithm>
+#include <math.h>
 #include <omnetpp.h>
 #include <stdlib.h>
-#include <math.h>
-#include <algorithm>
 
-#include "artery/traci/VehicleController.h"
-#include "artery/traci/MobilityBase.h"
-#include "artery/application/CaService.h"
-#include "artery/application/CaObject.h"
 #include "artery/application/Asn1PacketVisitor.h"
+#include "artery/application/CaObject.h"
+#include "artery/application/CaService.h"
 #include "artery/application/VehicleDataProvider.h"
+#include "artery/traci/MobilityBase.h"
+#include "artery/traci/VehicleController.h"
 
 #include <boost/units/cmath.hpp>
 #include <boost/units/systems/si/prefixes.hpp>
 
-#include <vanetza/btp/data_request.hpp>
-#include <vanetza/dcc/profile.hpp>
-#include <vanetza/geonet/interface.hpp>
 #include <vanetza/asn1/cam.hpp>
 #include <vanetza/asn1/its/CAM.h>
-#include <vanetza/asn1/its/ItsPduHeader.h>
 #include <vanetza/asn1/its/CoopAwareness.h>
+#include <vanetza/asn1/its/ItsPduHeader.h>
+#include <vanetza/btp/data_request.hpp>
 #include <vanetza/btp/ports.hpp>
 #include <vanetza/common/byte_order.hpp>
+#include <vanetza/dcc/profile.hpp>
+#include <vanetza/geonet/interface.hpp>
 
-
-#include <vanetza/asn1/its/MisbehaviorReportNZKP.h>
 #include <vanetza/asn1/its/MisbehaviorReport.h>
+#include <vanetza/asn1/its/MisbehaviorReportNZKP.h>
 
-#include "HelpFunctions.hpp"
 #include "Crust.h"
+#include "HelpFunctions.hpp"
 #include "art/NZKPObject.h"
 
 #include "CarService.h"
@@ -36,7 +35,6 @@
 using namespace omnetpp;
 using namespace vanetza;
 
-
 auto microdegree = vanetza::units::degree * boost::units::si::micro;
 auto decidegree = vanetza::units::degree * boost::units::si::deci;
 auto degree_per_second = vanetza::units::degree / vanetza::units::si::second;
@@ -47,250 +45,180 @@ static const simsignal_t scSignalCamSent = cComponent::registerSignal("CamSent")
 
 static const simsignal_t scSignalNZKPSent = cComponent::registerSignal("NZKPSent");
 
-
 static const auto scLowFrequencyContainerInterval = std::chrono::milliseconds(500);
 
-
 Define_Module(CarService);
 
 void CarService::finish() {
-    EV << "time misbehaviour detected for " << mVehicleDataProvider->getStationId() << "/" << mVehicleController->getVehicleId() << " : " << numReceieved << endl;
-    delete mLocalDynamicMap;
-    delete vehicleScope;
-}
+  EV << "time misbehaviour detected for " << mVehicleDataProvider->getStationId() << "/"
+     << mVehicleController->getVehicleId() << " : " << misbehaviourDetectedTime << ", nzkp verified : -1"
+     << ", already known malicious ITS detected : -1" << endl;
 
-void CarService::initialize()
-{
-    EV_STATICCONTEXT;
-    Enter_Method("CarService initialize");
-    CaService::initialize();
+  delete mLocalDynamicMap;
+  delete vehicleScope;
+}
 
-    mVehicleController = &getFacilities().get_mutable<traci::VehicleController>();
-    mVehicleController->setMaxSpeed(10 * units::si::meter_per_second);
+void CarService::initialize() {
+  EV_STATICCONTEXT;
+  Enter_Method("CarService initialize");
+  CaService::initialize();
 
-	mVehicleDataProvider = &getFacilities().get_const<artery::VehicleDataProvider>();
+  mVehicleController = &getFacilities().get_mutable<traci::VehicleController>();
+  mVehicleController->setMaxSpeed(10 * units::si::meter_per_second);
 
-	mTimer = &getFacilities().get_const<artery::Timer>();
-	mLocalDynamicMap = new artery::LocalDynamicMap2(*(mTimer));
+  mVehicleDataProvider = &getFacilities().get_const<artery::VehicleDataProvider>();
 
+  mTimer = &getFacilities().get_const<artery::Timer>();
+  mLocalDynamicMap = new artery::LocalDynamicMap2(*(mTimer));
 
-    std::shared_ptr<traci::API> traci_API = mVehicleController->getTraCI();
-    vehicleScope = (traci::API::VehicleScope*)malloc(sizeof(traci::API::VehicleScope));
-    new (vehicleScope) traci::API::VehicleScope(*traci_API);
-    // Does vehicles have POIs by default? If not, adding a POI is necessary if no other way is possible.
-    standardColor = vehicleScope->getColor(mVehicleController->getVehicleId());
+  std::shared_ptr<traci::API> traci_API = mVehicleController->getTraCI();
+  vehicleScope = (traci::API::VehicleScope *)malloc(sizeof(traci::API::VehicleScope));
+  new (vehicleScope) traci::API::VehicleScope(*traci_API);
+  // Does vehicles have POIs by default? If not, adding a POI is necessary if no other way is possible.
+  standardColor = vehicleScope->getColor(mVehicleController->getVehicleId());
 
-    EV << " car init" << endl;
+  EV << " car init" << endl;
 
-    maliciousVehicles = {};
-    numSent = 0;
-    numReceieved = -1;
-    evilness = 0;
-    u_int32_t stationID = mVehicleDataProvider->getStationId();
-    WATCH(stationID);
-    WATCH(vectorString);
-    WATCH(numSent);
-    WATCH(numReceieved);
-    WATCH(evilness);
+  maliciousVehicles = {};
+  numSent = 0;
+  evilness = 0;
+  u_int32_t stationID = mVehicleDataProvider->getStationId();
+  WATCH(stationID);
+  WATCH(vectorString);
+  WATCH(numSent);
+  WATCH(misbehaviourDetectedTime);
+  WATCH(evilness);
+}
 
+void CarService::trigger() {
+  numSent += 1;
+  updateVectorString();
+  CaService::trigger();
+  time_t t = time(NULL);
+  Enter_Method("CarService trigger");
 }
 
-void CarService::trigger()
-{
-    numSent += 1;
-    updateVectorString();
-    CaService::trigger();
-    time_t t = time(NULL);
-    Enter_Method("CarService trigger");
+void CarService::indicate(const vanetza::btp::DataIndication &ind, std::unique_ptr<vanetza::UpPacket> packet) {
+  Enter_Method("CarService indicate");
+  artery::Asn1PacketVisitor<vanetza::asn1::Cam> visitor;
+  const vanetza::asn1::Cam *message = boost::apply_visitor(visitor, *packet);
 
-}
+  // 294.025 400.75 <- cPos nPos -> 18220 35400
+  const artery::Position carPos = mVehicleDataProvider->position();
 
-void CarService::indicate(const vanetza::btp::DataIndication& ind, std::unique_ptr<vanetza::UpPacket> packet) {
-    Enter_Method("CarService indicate");
-    artery::Asn1PacketVisitor<vanetza::asn1::Cam> visitor;
-	const vanetza::asn1::Cam* message = boost::apply_visitor(visitor, *packet);
+  // ->speed() returns m/s. km/h used in comparison.
+  double carSpeed = boost::units::quantity_cast<double>(mVehicleDataProvider->speed()) * 3.6;
 
-    // 294.025 400.75 <- cPos nPos -> 18220 35400 
-    const artery::Position carPos = mVehicleDataProvider->position();
-    
-    // ->speed() returns m/s. km/h used in comparison. 
-    double carSpeed = boost::units::quantity_cast<double>(mVehicleDataProvider->speed()) * 3.6;
+  if (message) {
+    artery::CaObject obj = visitor.shared_wrapper;
 
-	if (message) {
-		artery::CaObject obj = visitor.shared_wrapper;
-        
-        const vanetza::asn1::Cam& msg = obj.asn1();
+    const vanetza::asn1::Cam &msg = obj.asn1();
 
-        // CAMs store long/lat in 10s of microdegrees.
-        artery::Position nPos = getPositionFromCam(msg);
+    unsigned long fromStationID = msg->header.stationID;
 
-        unsigned long fromStationID = msg->header.stationID;
+    EV << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
 
-        EV << " DISTANCE: " << artery::distance(nPos, carPos).value() << " :ecnatsid ";
-        EV << nPos.x.value() << " " << nPos.y.value() << " 1-pos-2 " << carPos.x.value() << " " << carPos.y.value() << " ";
-        EV << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-        //EV << "WITHIN DISTANCE " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-        // For simulation purposes, cars outside range are out of range.
-        /*
-        if (artery::distance(nPos, carPos).value() > SAFE_DISTANCE) {
-            EV << "RETURN " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-            return;
-        }
-        */
-
-        long fromGenDeltaTime = msg->cam.generationDeltaTime;
-
-        u_int latestMessage = 0;
-        long timeDiff = LONG_MAX;
- 
-        // Find the latest message by fromStationID. 
-        for(auto& x : mLocalDynamicMap->mCaMessages) {
-            if (x.first != fromStationID) continue;
-
-            const vanetza::asn1::Cam& msg = x.second.object.asn1();
-            long genDeltaTime = msg->cam.generationDeltaTime;
-
-            if (fromGenDeltaTime - genDeltaTime < timeDiff) {
-                latestMessage = x.first;
-                timeDiff = fromGenDeltaTime - genDeltaTime;
-            }
-        }
-
-        auto mapIt = mLocalDynamicMap->mCaMessages.find(latestMessage);
-        if (mapIt != mLocalDynamicMap->mCaMessages.end()) {
-            const vanetza::asn1::Cam& msg2 = mapIt->second.object.asn1();
-
-            double acc = checkCAM(msg2, msg);
-
-            // Check for misbehaviour from new nodes.
-            if (acc > 0) {
-                numReceieved = mVehicleController->getTraCI()->simulation.getTime();
-                std::array<char, 1024>* proof = new std::array<char, 1024>;
-                std::cerr << "Create proof " << std::endl;
-                const size_t p = create_proof(10 * acc, proof);
-                size_t status = verify_proof(proof, p);
-                std::cerr << "p: " << p << std::endl;
-
-                std::cerr << "create mr nzkp " << std::endl;
-                vanetza::asn1::Nzkp mrNZKP = CarService::createMrNZKP(acc, msg, msg2, proof, p);
-                bool val = mrNZKP.validate();   
-
-                bool success = CarService::sendMrNZKP(simTime(), mrNZKP);
-
-
-                std::cerr << "vali: " << val << ", status: " << status << std::endl;
-                if (status == 0) {
-                    EV << "PROOF CREATED (SIZE: " << p << ") AND VERIFIED" << endl;
-                } else {
-                    EV << "PROOF CREATED (SIZE: " << p << ") NOT VALID" << endl;
-                }
-            //    mVehicleController->setMaxSpeed(5 * units::si::meter_per_second);
-                EV << "SLOW DOWN ";
-                EV << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-
-           //     std::shared_ptr<traci::API> traci_API = mVehicleController->getTraCI();
-           //     vehicleScope->setColor(mVehicleController->getVehicleId(), libsumo::TraCIColor(0, 0, 255));
-                std::cerr << "SEND MR NZKP IN TEH HAAOAOUSUUSE" << std::endl;
-            } else if (std::find(maliciousVehicles.begin(), maliciousVehicles.end(), msg->header.stationID) == maliciousVehicles.end()) {
-                EV << "ASDKLFASDFKL STEADY ON1 " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-                evilness -= 1;
-            } else EV << "ASDKLFJASDFKLJ STEADY ON2 " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
-        }
-              
-        EV << " RECEIVED CAM " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << " " << (double)mVehicleController->getTraCI()->simulation.getCurrentTime()/1000 << endl;
-	//	emit(scSignalCamReceived, &obj);
-        mLocalDynamicMap->dropExpired();
-		mLocalDynamicMap->updateAwareness(obj);
-    }
-}
+    long fromGenDeltaTime = msg->cam.generationDeltaTime;
 
-void CarService::updateVectorString() {
-    std::stringstream mVehStr;
-    std::copy(maliciousVehicles.begin(), maliciousVehicles.end(), std::ostream_iterator<unsigned long>(mVehStr, " "));
-    vectorString = mVehStr.str();
-}
+    u_int latestMessage = -1;
+    long timeDiff = LONG_MAX;
+    long genDeltaTime = 0;
+
+    // Find the latest message by fromStationID.
+    for (auto &x : mLocalDynamicMap->mCaMessages) {
+      if (x.first != fromStationID)
+        continue;
 
-double CarService::checkCAM(const vanetza::asn1::Cam& cam1, const vanetza::asn1::Cam& cam2) {
-    // centimeter per second in the CAM.
-    double speed1 = (double)cam1->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency.speed.speedValue/100;
-    double speed2 = (double)cam2->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency.speed.speedValue/100;
-
-    // Milliseconds in the CAM.
-    double genDeltaTime1 = (double)cam1->cam.generationDeltaTime/1000;
-    double genDeltaTime2 = (double)cam2->cam.generationDeltaTime/1000;
-
-    unsigned long vehicleID = cam1->header.stationID;
-
-    double acceleration = (speed1 - speed2)/(genDeltaTime1 - genDeltaTime2);
-    EV_INFO << "ACC: " << abs(acceleration) << " " << speed1 << " 1-speed-2 " << speed2 << " " << genDeltaTime1 << " 1-time-2 " << genDeltaTime2 << " ";
-    EV_INFO << cam1->header.stationID << " 1-id-2 " << cam2->header.stationID << endl;
-    bool misbehaviour = abs(acceleration) > 20;
-    if (misbehaviour && std::find(maliciousVehicles.begin(), maliciousVehicles.end(), vehicleID) == maliciousVehicles.end()) {
-        EV << "YOU JUST MADE THE LIST BITCH " << cam1->header.stationID << " bitch-id-me " << mVehicleDataProvider->getStationId() << endl;;
-        maliciousVehicles.push_back(vehicleID);
-        return acceleration;
+      const vanetza::asn1::Cam &msg = x.second.object.asn1();
+      genDeltaTime = msg->cam.generationDeltaTime;
+
+      if (fromGenDeltaTime - genDeltaTime < timeDiff) {
+        latestMessage = x.first;
+        timeDiff = fromGenDeltaTime - genDeltaTime;
+      }
     }
-    return -1;
-}
- 
-vanetza::asn1::Nzkp CarService::createMrNZKP(const double acc, const vanetza::asn1::Cam& cam1, const vanetza::asn1::Cam& cam2, std::array<char, 1024>* proof, size_t p) {
 
-    std::cerr << "create mr nzkp start" << std::endl;
-    vanetza::asn1::Nzkp MRnzkp;
+    EV << "LATEST MESSAGE: " << latestMessage << endl;
 
+    auto mapIt = mLocalDynamicMap->mCaMessages.find(latestMessage);
+    if (mapIt != mLocalDynamicMap->mCaMessages.end()) {
+      const vanetza::asn1::Cam &msg2 = mapIt->second.object.asn1();
+      EV << "OTHER CAM FOUND " << mVehicleDataProvider->getStationId() << endl;
 
-    Header& h = (*MRnzkp).header;
-    h.messageID = 1;
-    h.stationID = mVehicleDataProvider->getStationId();
+      double acc = abs(checkCAM(msg2, msg));
 
-    
-    Payload& payload = (*MRnzkp).payload;
+      // Check for misbehaviour from new nodes.
+      if (acc > 0) {
+        if (misbehaviourDetectedTime == -1)
+          misbehaviourDetectedTime = mVehicleController->getTraCI()->simulation.getTime();
 
-    OCTET_STRING octComitV = {};
-    octComitV.buf = new u_int8_t[32];
-    memcpy(octComitV.buf, proof->data(), 32);
-    octComitV.size = 32;
-    payload.nkzp.committedValue = octComitV;
+        vehicleScope->setColor(mVehicleController->getVehicleId(), libsumo::TraCIColor(0, 0, 255));
 
-    OCTET_STRING octProof = {}; 
-    octProof.buf = new u_int8_t[p-32];
-    memcpy(octProof.buf, proof->data() + 32, p-32);
-    octProof.size = p-32;
-    payload.nkzp.proof = octProof;
+        EV << "SLOW DOWN ";
+        EV << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << endl;
 
-    delete proof;
-    std::cerr << "create mr nzkp end" << std::endl;
-    return MRnzkp;
+        if (std::find(maliciousVehicles.begin(), maliciousVehicles.end(), msg->header.stationID) ==
+            maliciousVehicles.end()) {
+          EV << "ASDKLFASDFKL STEADY ON1 " << msg->header.stationID << " 1-id-2 "
+             << mVehicleDataProvider->getStationId() << endl;
+          evilness -= 1;
+        } else
+          EV << "ASDKLFJASDFKLJ STEADY ON2 " << msg->header.stationID << " 1-id-2 "
+             << mVehicleDataProvider->getStationId() << endl;
+
+        EV << " RECEIVED CAM " << msg->header.stationID << " 1-id-2 " << mVehicleDataProvider->getStationId() << " "
+           << (double)mVehicleController->getTraCI()->simulation.getCurrentTime() / 1000 << endl;
+        // mLocalDynamicMap->dropExpired();
+      }
+    } else {
+      EV << "NO OTHER CAM FOUND " << mVehicleDataProvider->getStationId() << endl;
+    }
+    emit(scSignalCamReceived, &obj);
+    mLocalDynamicMap->updateAwareness(obj);
+
+  } else {
+    EV << "MESSAGE IS FALSE" << endl;
+  }
+}
+
+void CarService::updateVectorString() {
+  std::stringstream mVehStr;
+  std::copy(maliciousVehicles.begin(), maliciousVehicles.end(), std::ostream_iterator<unsigned long>(mVehStr, " "));
+  vectorString = mVehStr.str();
 }
 
-bool CarService::sendMrNZKP(const omnetpp::SimTime& simTime, vanetza::asn1::Nzkp& mrNZKP) {
-
-    std::cerr << "SEND MR NZKP IN TEH HAAOAOUSUUSE 1234123412341234" << std::endl;
-    using namespace vanetza;
-	btp::DataRequestB request;
-	request.destination_port = host_cast<uint16_t>(2345);
-	request.gn.its_aid = aid::MR;
-	request.gn.transport_type = geonet::TransportType::SHB;
-	request.gn.maximum_lifetime = geonet::Lifetime { geonet::Lifetime::Base::One_Second, 1 };
-	request.gn.traffic_class.tc_id(static_cast<unsigned>(dcc::Profile::DP2));
-	request.gn.communication_profile = geonet::CommunicationProfile::ITS_G5;
-
-    unsigned char* b1 = (*mrNZKP).payload.nkzp.proof.buf;
-    unsigned char* b2 = (*mrNZKP).payload.nkzp.committedValue.buf;
-
-	artery::NZKPObject obj(std::move(mrNZKP));
-    emit(scSignalNZKPSent, &obj);
-
-	using NZKPByteBuffer = convertible::byte_buffer_impl<asn1::Nzkp>;
-    NZKPByteBuffer* b = new NZKPByteBuffer(obj.shared_ptr());
-    size_t bSize = b->size();
-
-	std::unique_ptr<geonet::DownPacket> payload { new geonet::DownPacket() };
-	std::unique_ptr<convertible::byte_buffer> buffer { b };
-	payload->layer(OsiLayer::Application) = std::move(buffer);
-	this->request(request, std::move(payload));
-    std::cerr << "NZKP send " << std::endl;
-    //delete b1;
-    //delete b2;
-    return true;
+double CarService::checkCAM(const vanetza::asn1::Cam &cam1, const vanetza::asn1::Cam &cam2) {
+  // centimeter per second in the CAM.
+  double speed1 =
+      (double)
+          cam1->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency.speed.speedValue /
+      100;
+  double speed2 =
+      (double)
+          cam2->cam.camParameters.highFrequencyContainer.choice.basicVehicleContainerHighFrequency.speed.speedValue /
+      100;
+
+  // Milliseconds in the CAM.
+  double genDeltaTime1 = (double)cam1->cam.generationDeltaTime / 1000;
+  double genDeltaTime2 = (double)cam2->cam.generationDeltaTime / 1000;
+
+  unsigned long vehicleID = cam1->header.stationID;
+
+  double acceleration = (speed1 - speed2) / (genDeltaTime1 - genDeltaTime2);
+  EV << "ACC: " << abs(acceleration) << " " << speed1 << " 1-speed-2 " << speed2 << " " << genDeltaTime1 << " 1-time-2 "
+     << genDeltaTime2 << " ";
+  EV << cam1->header.stationID << " 1-id-2 " << cam2->header.stationID
+     << ", CHECKED BY: " << mVehicleDataProvider->getStationId() << endl;
+
+  bool misbehaviour = abs(acceleration) > 20;
+  if (misbehaviour &&
+      std::find(maliciousVehicles.begin(), maliciousVehicles.end(), vehicleID) == maliciousVehicles.end()) {
+    EV << "YOU JUST MADE THE LIST BITCH " << cam1->header.stationID << " bitch-id-me "
+       << mVehicleDataProvider->getStationId() << endl;
+    ;
+    maliciousVehicles.push_back(vehicleID);
+    return acceleration;
+  } else
+    acceleration = -1;
+  return acceleration;
 }
\ No newline at end of file
diff --git a/CarService.h b/CarService.h
index 7632264c9fb717ef8739c89491f2c800130bf3dc..982d1712cd0d52e74eeb88b10daa155ae211d606 100644
--- a/CarService.h
+++ b/CarService.h
@@ -3,48 +3,53 @@
 
 #include <vector>
 
-#include "artery/application/ItsG5BaseService.h"
 #include "artery/application/CaService.h"
+#include "artery/application/ItsG5BaseService.h"
 
 #include "../scenario1-artery/art/LocalDynamicMap2.h"
 
 #include <vanetza/asn1/its/MisbehaviorReportNZKP.h>
 
-
-namespace traci { class VehicleController; }
-
-namespace artery { 
-    class VehicleDataProvider; class LocalDynamicMap2; class Timer; 
+namespace traci {
+class VehicleController;
 }
 
+namespace artery {
+class VehicleDataProvider;
+class LocalDynamicMap2;
+class Timer;
+} // namespace artery
 
 /*
 CarService broadcasts CAMs to the surroundings.
 */
-class CarService : public artery::CaService
-{
-    private:
-        long numSent;
-        double numReceieved;
-        long evilness;
-        std::vector<unsigned long> maliciousVehicles;
-        void updateVectorString();
-        std::string vectorString;
-        libsumo::TraCIColor standardColor;
-        double checkCAM(const vanetza::asn1::Cam&, const vanetza::asn1::Cam&);
-        bool sendMrNZKP(const omnetpp::SimTime&, vanetza::asn1::Nzkp&);
-        vanetza::asn1::Nzkp createMrNZKP(const double, const vanetza::asn1::Cam&, const vanetza::asn1::Cam&, std::array<char, 1024>*, const size_t);
-    public:
-        void trigger() override;
-        void initialize() override;
-        void finish() override;
-        void indicate(const vanetza::btp::DataIndication&, std::unique_ptr<vanetza::UpPacket>) override;
-    protected:
-        traci::VehicleController* mVehicleController = nullptr;
-        const artery::VehicleDataProvider* mVehicleDataProvider = nullptr;
-        artery::LocalDynamicMap2* mLocalDynamicMap = nullptr;
-        const artery::Timer* mTimer = nullptr;
-        traci::API::VehicleScope* vehicleScope = nullptr;
+class CarService : public artery::CaService {
+private:
+  long numSent;
+  double misbehaviourDetectedTime;
+  long evilness;
+  std::vector<unsigned long> maliciousVehicles;
+  void updateVectorString();
+  std::string vectorString;
+  libsumo::TraCIColor standardColor;
+  double checkCAM(const vanetza::asn1::Cam &, const vanetza::asn1::Cam &);
+  bool sendMrNZKP(const omnetpp::SimTime &, vanetza::asn1::Nzkp &);
+  vanetza::asn1::Nzkp createMrNZKP(const double, const vanetza::asn1::Cam &, const vanetza::asn1::Cam &,
+                                   std::array<char, 1024> *, const size_t);
+
+public:
+  CarService() : misbehaviourDetectedTime{-1} {}
+  void trigger() override;
+  void initialize() override;
+  void finish() override;
+  void indicate(const vanetza::btp::DataIndication &, std::unique_ptr<vanetza::UpPacket>) override;
+
+protected:
+  traci::VehicleController *mVehicleController = nullptr;
+  const artery::VehicleDataProvider *mVehicleDataProvider = nullptr;
+  artery::LocalDynamicMap2 *mLocalDynamicMap = nullptr;
+  const artery::Timer *mTimer = nullptr;
+  traci::API::VehicleScope *vehicleScope = nullptr;
 };
 
 #endif /* CARSERVICE_H_ */
diff --git a/omnetpp.ini b/omnetpp.ini
index 1b74248b4c497cf98493af4f1d8c7266f19f2992..fa7481a51d98164dd6b7045a684ca57b6b888df3 100644
--- a/omnetpp.ini
+++ b/omnetpp.ini
@@ -27,8 +27,7 @@ cmdenv-output-file = "log.log"
 *.node[*].wlan[*].typename = "VanetNic"
 *.node[*].wlan[*].radio.channelNumber = 180
 *.node[*].wlan[*].radio.carrierFrequency = 5.9 GHz
-*.node[*].wlan[*].radio.transmitter.power = 10 mW
-
+*.node[*].wlan[*].radio.transmitter.power = 0.009 mW
 
 *.node[*].middleware.updateInterval = 0.05s
 *.node[*].middleware.datetime = "2018-03-19 10:00:00"
@@ -44,7 +43,7 @@ cmdenv-output-file = "log.log"
 *.node[*].wlan[*].typename = "VanetNic"
 *.node[*].wlan[*].radio.channelNumber = 180
 *.node[*].wlan[*].radio.carrierFrequency = 5.9 GHz
-*.node[*].wlan[*].radio.transmitter.power = 10 mW
+*.node[*].wlan[*].radio.transmitter.power = 0.009 mW
 
 *.node[*].middleware.updateInterval = 0.3s
 *.node[*].middleware.datetime = "2013-06-01 12:35:00"