diff --git a/main.cpp b/main.cpp
index b7d8a18..aad8be2 100644
--- a/main.cpp
+++ b/main.cpp
@@ -68,7 +68,7 @@
 
     QApplication a(argc, argv);
 
-    GlobalInstances::setPixmapManipulator(std::unique_ptr<Interfaces::PixbufManipulator>(new Interfaces::PixbufManipulator()));
+    GlobalInstances::setPixmapManipulator(std::unique_ptr<PixbufManipulator>(new PixbufManipulator()));
 
     auto startMinimized = false;
     QString uri = "";
diff --git a/pixbufmanipulator.cpp b/pixbufmanipulator.cpp
index 65a6e4f..ef33a9b 100644
--- a/pixbufmanipulator.cpp
+++ b/pixbufmanipulator.cpp
@@ -48,8 +48,6 @@
     return ba;
 }
 
-namespace Interfaces {
-
 QImage
 PixbufManipulator::scaleAndFrame(const QImage photo, const QSize& size)
 {
@@ -139,9 +137,9 @@
 }
 
 QVariant
-PixbufManipulator::collectionIcon(const CollectionInterface* interface, PixmapManipulatorI::CollectionIconHint hint) const
+PixbufManipulator::collectionIcon(const CollectionInterface* colItf, PixmapManipulatorI::CollectionIconHint hint) const
 {
-    Q_UNUSED(interface)
+    Q_UNUSED(colItf)
     Q_UNUSED(hint)
     return QVariant();
 }
@@ -249,5 +247,3 @@
 
     return avatar;
 }
-
-} // namespace Interfaces
diff --git a/pixbufmanipulator.h b/pixbufmanipulator.h
index 2abbc9a..bcd00a5 100644
--- a/pixbufmanipulator.h
+++ b/pixbufmanipulator.h
@@ -29,9 +29,7 @@
 
 QByteArray QImageToByteArray(QImage image);
 
-namespace Interfaces {
-
-class PixbufManipulator : public PixmapManipulatorI {
+class PixbufManipulator : public Interfaces::PixmapManipulatorI {
 public:
     QVariant callPhoto(Call* c, const QSize& size, bool displayPresence = true) override;
     QVariant callPhoto(const ContactMethod* n, const QSize& size, bool displayPresence = true) override;
@@ -42,7 +40,9 @@
     QVariant   numberCategoryIcon(const QVariant& p, const QSize& size, bool displayPresence = false, bool isPresent = false) override;
     QVariant   securityIssueIcon(const QModelIndex& index) override;
     QByteArray toByteArray(const QVariant& pxm) override;
-    QVariant   collectionIcon(const CollectionInterface* interface, PixmapManipulatorI::CollectionIconHint hint = PixmapManipulatorI::CollectionIconHint::NONE) const override;
+    QVariant   collectionIcon(const CollectionInterface* colItf,
+                              Interfaces::PixmapManipulatorI::CollectionIconHint hint =
+                                Interfaces::PixmapManipulatorI::CollectionIconHint::NONE) const override;
     QVariant   securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const override;
     QVariant   historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const override;
     QVariant   contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const override;
@@ -52,12 +52,12 @@
     QVariant   decorationRole(const ContactMethod* cm) override;
     QVariant   decorationRole(const Person* p) override;
     QVariant   decorationRole(const Account* acc) override;
+    static QImage scaleAndFrame(const QImage photo, const QSize& size);
+    static QImage scaleAndFrame(const QImage photo, const int& size);
+
 
 private:
-    QImage scaleAndFrame(const QImage photo, const QSize& size);
     const QSize imgSize_ {48, 48};
     static QImage fallbackAvatar(const QSize size, const char color, const char letter);
 };
 
-} // namespace Interfaces
-
