From 6345b3e8c6e3b90870d677b6e9ba3d99b535d711 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 10 Sep 2017 14:26:26 +0200
Subject: [PATCH] Rewrote the project in Kotlin

---
 .gitignore                                    |  22 +-
 .gitmodules                                   |   3 -
 AndroidSlidingUpPanel                         |   1 -
 COPYING.GPL.md                                | 596 -----------
 README.md                                     | 107 --
 app/.gitignore                                |   1 +
 app/build.gradle                              | 207 ----
 app/build.gradle.kts                          | 559 ++++++++++
 app/proguard-rules.pro                        |  78 +-
 .../ExampleInstrumentedTest.kt                |  22 +
 app/src/beta/res/mipmap-hdpi/ic_launcher.png  | Bin 3625 -> 0 bytes
 app/src/beta/res/mipmap-mdpi/ic_launcher.png  | Bin 2155 -> 0 bytes
 app/src/beta/res/mipmap-xhdpi/ic_launcher.png | Bin 5244 -> 0 bytes
 .../beta/res/mipmap-xxhdpi/ic_launcher.png    | Bin 8754 -> 0 bytes
 .../beta/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 12672 -> 0 bytes
 app/src/beta/res/values/colors.xml            |  26 -
 app/src/beta/res/values/strings.xml           |  24 -
 app/src/debug/res/mipmap-hdpi/ic_launcher.png | Bin 3695 -> 0 bytes
 app/src/debug/res/mipmap-mdpi/ic_launcher.png | Bin 2215 -> 0 bytes
 .../debug/res/mipmap-xhdpi/ic_launcher.png    | Bin 5299 -> 0 bytes
 .../debug/res/mipmap-xxhdpi/ic_launcher.png   | Bin 8677 -> 0 bytes
 .../debug/res/mipmap-xxxhdpi/ic_launcher.png  | Bin 12655 -> 0 bytes
 app/src/debug/res/values/colors.xml           |  26 +-
 app/src/debug/res/values/strings.xml          |  24 -
 app/src/main/AndroidManifest.xml              | 207 +---
 .../de/kuschku/libquassel/BusProvider.java    |  93 --
 .../de/kuschku/libquassel/CoreConnection.java | 359 -------
 .../kuschku/libquassel/IProtocolHandler.java  |  78 --
 .../kuschku/libquassel/ProtocolHandler.java   | 179 ----
 .../de/kuschku/libquassel/QuasselClient.java  |  83 --
 .../de/kuschku/libquassel/client/AClient.java | 110 --
 .../libquassel/client/BufferManager.java      | 200 ----
 .../de/kuschku/libquassel/client/Client.java  | 495 ---------
 .../kuschku/libquassel/client/ClientData.java |  75 --
 .../libquassel/client/FeatureFlags.java       |  52 -
 .../libquassel/client/IdentityManager.java    |  84 --
 .../libquassel/client/NetworkManager.java     | 138 ---
 .../de/kuschku/libquassel/client/QClient.java |  86 --
 .../libquassel/events/BacklogInitEvent.java   |  39 -
 .../events/BacklogReceivedEvent.java          |  34 -
 .../libquassel/events/BufferChangeEvent.java  |  25 -
 .../events/CertificateAcceptedEvent.java      |  32 -
 .../events/ConnectionChangeEvent.java         |  58 --
 .../events/CoreSetupFailedEvent.java          |  41 -
 .../events/CoreSetupRequiredEvent.java        |  25 -
 .../events/CoreSetupSuccessfulEvent.java      |  36 -
 .../libquassel/events/CriticalErrorEvent.java |  50 -
 .../libquassel/events/GeneralErrorEvent.java  |  54 -
 .../events/HandshakeFailedEvent.java          |  41 -
 .../kuschku/libquassel/events/InitEvent.java  |  39 -
 .../libquassel/events/LagChangedEvent.java    |  40 -
 .../libquassel/events/LoginRequireEvent.java  |  30 -
 .../events/PasswordChangeEvent.java           |  40 -
 .../libquassel/events/StatusMessageEvent.java |  33 -
 .../events/UnknownCertificateEvent.java       |  43 -
 .../exceptions/SyncInvocationException.java   |  41 -
 .../exceptions/UnknownTypeException.java      |  49 -
 .../libquassel/functions/FunctionType.java    |  60 --
 .../serializers/FunctionSerializer.java       |  34 -
 .../serializers/HeartbeatReplySerializer.java |  66 --
 .../serializers/HeartbeatSerializer.java      |  66 --
 .../InitDataFunctionSerializer.java           |  61 --
 .../InitRequestFunctionSerializer.java        |  86 --
 .../PackedInitDataFunctionSerializer.java     |  71 --
 .../PackedRpcCallFunctionSerializer.java      |  71 --
 .../PackedSyncFunctionSerializer.java         |  74 --
 .../UnpackedInitDataFunctionSerializer.java   |  71 --
 .../UnpackedRpcCallFunctionSerializer.java    |  69 --
 .../UnpackedSyncFunctionSerializer.java       |  73 --
 .../functions/types/HandshakeFunction.java    |  40 -
 .../libquassel/functions/types/Heartbeat.java |  46 -
 .../functions/types/HeartbeatReply.java       |  50 -
 .../functions/types/InitDataFunction.java     |  31 -
 .../functions/types/InitRequestFunction.java  |  46 -
 .../functions/types/PackedFunction.java       |  33 -
 .../types/PackedInitDataFunction.java         |  53 -
 .../functions/types/RpcCallFunction.java      |  53 -
 .../functions/types/SerializedFunction.java   |  29 -
 .../functions/types/SyncFunction.java         |  56 -
 .../functions/types/UnpackedFunction.java     |  33 -
 .../types/UnpackedInitDataFunction.java       |  53 -
 .../libquassel/localtypes/BacklogFilter.java  | 349 -------
 .../backlogstorage/BacklogStorage.java        |  66 --
 .../backlogstorage/HybridBacklogStorage.java  | 253 -----
 .../libquassel/localtypes/buffers/Buffer.java |  49 -
 .../localtypes/buffers/Buffers.java           |  48 -
 .../localtypes/buffers/ChannelBuffer.java     |  98 --
 .../localtypes/buffers/QueryBuffer.java       | 100 --
 .../localtypes/buffers/StatusBuffer.java      | 100 --
 .../localtypes/orm/ConnectedDatabase.java     |  30 -
 .../orm/converters/BufferTypeConverter.java   |  39 -
 .../orm/converters/DateTimeConverter.java     |  39 -
 .../orm/converters/MessageFlagsConverter.java |  39 -
 .../orm/converters/MessageTypeConverter.java  |  39 -
 .../kuschku/libquassel/message/Message.java   | 274 -----
 .../objects/MessageTypeRegistry.java          |  85 --
 .../serializers/ClientInitAckSerializer.java  | 105 --
 .../ClientInitRejectSerializer.java           |  79 --
 .../serializers/ClientInitSerializer.java     |  87 --
 .../serializers/ClientLoginAckSerializer.java |  73 --
 .../ClientLoginRejectSerializer.java          |  83 --
 .../serializers/ClientLoginSerializer.java    |  82 --
 .../serializers/CoreSetupAckSerializer.java   |  73 --
 .../serializers/CoreSetupDataSerializer.java  |  79 --
 .../CoreSetupRejectSerializer.java            |  79 --
 .../serializers/NetworkServerSerializer.java  | 100 --
 .../objects/serializers/ObjectSerializer.java |  44 -
 .../serializers/SessionInitSerializer.java    |  79 --
 .../serializers/SessionStateSerializer.java   |  82 --
 .../serializers/SetupDataInitializer.java     |  86 --
 .../serializers/StorageBackendSerializer.java |  87 --
 .../StringObjectMapSerializer.java            |  82 --
 .../libquassel/objects/types/ClientInit.java  |  55 -
 .../objects/types/ClientInitAck.java          |  32 -
 .../objects/types/ClientInitReject.java       |  42 -
 .../libquassel/objects/types/ClientLogin.java |  45 -
 .../objects/types/ClientLoginAck.java         |  35 -
 .../objects/types/ClientLoginReject.java      |  42 -
 .../libquassel/objects/types/Command.java     |  34 -
 .../objects/types/CoreSetupAck.java           |  36 -
 .../objects/types/CoreSetupData.java          |  41 -
 .../objects/types/CoreSetupReject.java        |  42 -
 .../libquassel/objects/types/CoreStatus.java  | 129 ---
 .../objects/types/NetworkServer.java          | 103 --
 .../libquassel/objects/types/SessionInit.java |  40 -
 .../objects/types/SessionState.java           |  55 -
 .../libquassel/objects/types/SetupData.java   |  57 --
 .../objects/types/StorageBackend.java         |  59 --
 .../libquassel/primitives/QMetaType.java      | 344 -------
 .../primitives/QMetaTypeRegistry.java         | 299 ------
 .../serializers/BoolSerializer.java           |  54 -
 .../serializers/BufferInfoSerializer.java     |  64 --
 .../serializers/ByteArraySerializer.java      |  89 --
 .../serializers/ByteSerializer.java           |  54 -
 .../serializers/CharSerializer.java           |  59 --
 .../serializers/DateTimeSerializer.java       |  89 --
 .../primitives/serializers/IntSerializer.java |  54 -
 .../serializers/LongSerializer.java           |  54 -
 .../serializers/MessageSerializer.java        |  80 --
 .../serializers/PrimitiveSerializer.java      |  36 -
 .../serializers/ProtocolSerializer.java       |  61 --
 .../serializers/ShortSerializer.java          |  54 -
 .../serializers/StringListSerializer.java     |  67 --
 .../serializers/StringSerializer.java         |  70 --
 .../serializers/TimeSerializer.java           |  54 -
 .../serializers/UserTypeSerializer.java       |  58 --
 .../serializers/VariantListSerializer.java    |  69 --
 .../serializers/VariantMapSerializer.java     |  72 --
 .../serializers/VariantSerializer.java        |  93 --
 .../VariantVariantListSerializer.java         |  69 --
 .../serializers/VoidSerializer.java           |  54 -
 .../primitives/types/BufferInfo.java          | 122 ---
 .../libquassel/primitives/types/Protocol.java |  49 -
 .../libquassel/primitives/types/QVariant.java |  93 --
 .../libquassel/protocols/DatastreamPeer.java  | 336 ------
 .../libquassel/protocols/LegacyPeer.java      | 252 -----
 .../libquassel/protocols/RemotePeer.java      |  70 --
 .../libquassel/ssl/CertificateManager.java    |  49 -
 .../libquassel/ssl/QuasselTrustManager.java   |  96 --
 .../ssl/UnknownCertificateException.java      |  37 -
 .../libquassel/syncables/Syncable.java        |  36 -
 .../syncables/SyncableRegistry.java           |  87 --
 .../kuschku/libquassel/syncables/Synced.java  |  29 -
 .../serializers/AliasManagerSerializer.java   | 101 --
 .../serializers/BufferSyncerSerializer.java   |  81 --
 .../BufferViewConfigSerializer.java           | 103 --
 .../BufferViewManagerSerializer.java          |  92 --
 .../serializers/CoreInfoSerializer.java       |  86 --
 .../serializers/IdentitySerializer.java       | 116 ---
 .../IgnoreListManagerSerializer.java          | 122 ---
 .../serializers/IrcChannelSerializer.java     |  90 --
 .../serializers/IrcUserSerializer.java        | 115 ---
 .../serializers/NetworkConfigSerializer.java  |  96 --
 .../serializers/NetworkInfoSerializer.java    | 135 ---
 .../serializers/NetworkSerializer.java        | 187 ----
 .../syncables/types/SyncableObject.java       | 146 ---
 .../types/abstracts/AAliasManager.java        |  41 -
 .../types/abstracts/ABacklogManager.java      |  59 --
 .../types/abstracts/ABufferSyncer.java        | 105 --
 .../types/abstracts/ABufferViewConfig.java    | 139 ---
 .../types/abstracts/ABufferViewManager.java   |  56 -
 .../syncables/types/abstracts/ACoreInfo.java  |  36 -
 .../syncables/types/abstracts/AIdentity.java  | 172 ----
 .../types/abstracts/AIgnoreListManager.java   |  70 --
 .../types/abstracts/AIrcChannel.java          | 123 ---
 .../syncables/types/abstracts/AIrcUser.java   | 188 ----
 .../syncables/types/abstracts/ANetwork.java   | 257 -----
 .../types/abstracts/ANetworkConfig.java       | 123 ---
 .../syncables/types/impl/AliasManager.java    | 277 -----
 .../syncables/types/impl/BacklogManager.java  | 228 -----
 .../syncables/types/impl/BufferSyncer.java    | 296 ------
 .../types/impl/BufferViewConfig.java          | 499 ---------
 .../types/impl/BufferViewManager.java         | 147 ---
 .../syncables/types/impl/CoreInfo.java        | 117 ---
 .../syncables/types/impl/Identity.java        | 484 ---------
 .../types/impl/IgnoreListManager.java         | 332 ------
 .../syncables/types/impl/IrcChannel.java      | 561 ----------
 .../syncables/types/impl/IrcUser.java         | 507 ---------
 .../syncables/types/impl/Network.java         | 909 ----------------
 .../syncables/types/impl/NetworkConfig.java   | 193 ----
 .../syncables/types/impl/NetworkInfo.java     | 376 -------
 .../types/interfaces/QAliasManager.java       |  78 --
 .../types/interfaces/QBacklogManager.java     |  82 --
 .../types/interfaces/QBufferSyncer.java       | 121 ---
 .../types/interfaces/QBufferViewConfig.java   | 212 ----
 .../types/interfaces/QBufferViewManager.java  |  59 --
 .../types/interfaces/QCertManager.java        |  43 -
 .../syncables/types/interfaces/QCoreInfo.java |  36 -
 .../syncables/types/interfaces/QIdentity.java | 202 ----
 .../types/interfaces/QIgnoreListManager.java  | 145 ---
 .../types/interfaces/QIrcChannel.java         | 161 ---
 .../syncables/types/interfaces/QIrcUser.java  | 218 ----
 .../syncables/types/interfaces/QNetwork.java  | 419 --------
 .../types/interfaces/QNetworkConfig.java      | 122 ---
 .../types/interfaces/QObservable.java         |  30 -
 .../types/interfaces/QSyncableObject.java     |  54 -
 .../types/invokers/IAliasManager.java         |  58 --
 .../types/invokers/IBacklogManager.java       |  65 --
 .../types/invokers/IBufferSyncer.java         |  78 --
 .../types/invokers/IBufferViewConfig.java     | 106 --
 .../types/invokers/IBufferViewManager.java    |  62 --
 .../types/invokers/ICertManager.java          |  58 --
 .../syncables/types/invokers/IClient.java     |  88 --
 .../syncables/types/invokers/ICoreInfo.java   |  61 --
 .../syncables/types/invokers/IIdentity.java   | 140 ---
 .../types/invokers/IIgnoreListManager.java    |  65 --
 .../syncables/types/invokers/IIrcChannel.java | 100 --
 .../syncables/types/invokers/IIrcUser.java    | 144 ---
 .../syncables/types/invokers/INetwork.java    | 197 ----
 .../types/invokers/INetworkConfig.java        |  86 --
 .../syncables/types/invokers/Invoker.java     |  29 -
 .../types/invokers/InvokerHelper.java         |  45 -
 .../types/invokers/InvokerRegistry.java       |  68 --
 .../de/kuschku/quasseldroid_ng/Exceptions.kt  |   9 +
 .../quasseldroid_ng/QuasselDroidNG.java       |  75 --
 .../kuschku/quasseldroid_ng/QuasseldroidNG.kt |  60 ++
 .../persistence/QuasselDatabase.kt            | 207 ++++
 .../quasseldroid_ng/protocol/ClientData.kt    |  11 +
 .../protocol/HandshakeMessage.kt              | 255 +++++
 .../quasseldroid_ng/protocol/MetaType.kt      | 101 ++
 .../protocol/NetworkLayerProtocol.kt          |  13 +
 .../kuschku/quasseldroid_ng/protocol/QType.kt |  19 +
 .../quasseldroid_ng/protocol/QTypes.kt        | 116 +++
 .../quasseldroid_ng/protocol/QVariant.kt      |  45 +
 .../protocol/SignalProxyMessage.kt            | 172 ++++
 .../kuschku/quasseldroid_ng/protocol/Type.kt  | 104 ++
 .../primitive/serializer/BoolSerializer.kt    |  17 +
 .../serializer/BufferInfoSerializer.kt        |  32 +
 .../serializer/ByteArraySerializer.kt         |  29 +
 .../primitive/serializer/ByteSerializer.kt    |  15 +
 .../primitive/serializer/CharSerializer.kt    |  44 +
 .../serializer/DateTimeSerializer.kt          |  73 ++
 .../DccConfig_IpDetectionModeSerializer.kt    |  18 +
 .../DccConfig_PortSelectionModeSerializer.kt  |  18 +
 .../HandshakeVariantMapSerializer.kt          |  31 +
 .../serializer/HostAddressSerializer.kt       |  48 +
 .../primitive/serializer/IntSerializer.kt     |  15 +
 .../primitive/serializer/LongSerializer.kt    |  15 +
 .../primitive/serializer/MessageSerializer.kt |  40 +
 .../serializer/ProtocolSerializer.kt          |  23 +
 .../primitive/serializer/Serializer.kt        |  27 +
 .../primitive/serializer/ShortSerializer.kt   |  15 +
 .../serializer/StringListSerializer.kt        |  23 +
 .../primitive/serializer/StringSerializer.kt  | 101 ++
 .../primitive/serializer/TimeSerializer.kt    |  16 +
 .../serializer/VariantListSerializer.kt       |  27 +
 .../serializer/VariantMapSerializer.kt        |  26 +
 .../primitive/serializer/VariantSerializer.kt |  39 +
 .../primitive/serializer/VoidSerializer.kt    |  14 +
 .../quasseldroid_ng/quassel/BufferInfo.kt     |  38 +
 .../quasseldroid_ng/quassel/NetworkInfo.kt    |   2 +
 .../quassel/ProtocolFeature.kt                |  16 +
 .../quasseldroid_ng/quassel/ProtocolMeta.kt   |   5 +
 .../quasseldroid_ng/quassel/QuasselFeature.kt |  44 +
 .../quassel/syncables/AliasManager.kt         | 162 +++
 .../quassel/syncables/BacklogManager.kt       |  19 +
 .../quassel/syncables/BufferSyncer.kt         | 123 +++
 .../quassel/syncables/BufferViewConfig.kt     | 209 ++++
 .../quassel/syncables/BufferViewManager.kt    |  55 +
 .../quassel/syncables/CertManager.kt          |  47 +
 .../quassel/syncables/CoreInfo.kt             |  35 +
 .../quassel/syncables/DccConfig.kt            | 148 +++
 .../quassel/syncables/Identity.kt             | 198 ++++
 .../quassel/syncables/IgnoreListManager.kt    |  36 +
 .../quassel/syncables/IrcChannel.kt           | 317 ++++++
 .../quassel/syncables/IrcListHelper.kt        |  21 +
 .../quassel/syncables/IrcUser.kt              | 287 ++++++
 .../quassel/syncables/Network.kt              | 871 ++++++++++++++++
 .../quassel/syncables/NetworkConfig.kt        | 102 ++
 .../quassel/syncables/RpcHandler.kt           |  68 ++
 .../quassel/syncables/SyncableObject.kt       |  39 +
 .../syncables/interfaces/IAliasManager.kt     |  34 +
 .../syncables/interfaces/IBacklogManager.kt   |  36 +
 .../syncables/interfaces/IBufferSyncer.kt     |  85 ++
 .../syncables/interfaces/IBufferViewConfig.kt | 111 ++
 .../interfaces/IBufferViewManager.kt          |  50 +
 .../syncables/interfaces/ICertManager.kt      |  31 +
 .../quassel/syncables/interfaces/ICoreInfo.kt |  25 +
 .../syncables/interfaces/IDccConfig.kt        |  80 ++
 .../quassel/syncables/interfaces/IIdentity.kt | 118 +++
 .../interfaces/IIgnoreListManager.kt          |  46 +
 .../syncables/interfaces/IIrcChannel.kt       |  90 ++
 .../syncables/interfaces/IIrcListHelper.kt    |  33 +
 .../quassel/syncables/interfaces/IIrcUser.kt  | 138 +++
 .../quassel/syncables/interfaces/INetwork.kt  | 485 +++++++++
 .../syncables/interfaces/INetworkConfig.kt    | 100 ++
 .../syncables/interfaces/IRpcHandler.kt       |  57 ++
 .../syncables/interfaces/ISyncableObject.kt   |  25 +
 .../quassel/syncables/interfaces/ITransfer.kt |  54 +
 .../syncables/interfaces/ITransferManager.kt  |  20 +
 .../syncables/interfaces/invokers/Invoker.kt  |  11 +
 .../syncables/interfaces/invokers/Invokers.kt |  68 ++
 .../service/ClientBackgroundThread.java       | 117 ---
 .../service/QuasselService.java               |  86 --
 .../quasseldroid_ng/service/QuasselService.kt |  80 ++
 .../quasseldroid_ng/session/AuthHandler.kt    |  29 +
 .../quasseldroid_ng/session/Backend.kt        |  10 +
 .../session/ConnectionState.kt                |   9 +
 .../quasseldroid_ng/session/CoreConnection.kt | 224 ++++
 .../session/MessageRunnable.kt                |  32 +
 .../quasseldroid_ng/session/ObjectStorage.kt  |  33 +
 .../session/ProtocolHandler.kt                | 150 +++
 .../quasseldroid_ng/session/Session.kt        | 109 ++
 .../quasseldroid_ng/session/SignalProxy.kt    |  39 +
 .../quasseldroid_ng/session/SocketAddress.kt  |   7 +
 .../quasseldroid_ng/ui/LoginActivity.java     |  94 --
 .../quasseldroid_ng/ui/MainActivity.kt        | 125 +++
 .../ui/ServiceBoundActivity.kt                |  43 +
 .../quasseldroid_ng/ui/ViewIntBinder.java     |  60 --
 .../chat/BufferViewConfigSpinnerAdapter.java  | 140 ---
 .../ui/chat/ChannelDetailActivity.java        | 149 ---
 .../quasseldroid_ng/ui/chat/MainActivity.java | 657 ------------
 .../ui/chat/ToolbarWrapper.java               |  63 --
 .../ui/chat/chatview/ChatMessageRenderer.java | 327 ------
 .../ui/chat/chatview/MessageAdapter.java      | 108 --
 .../ui/chat/chatview/MessageViewHolder.java   |  59 --
 .../chat/dialogs/CoreInfoDialogBuilder.java   | 114 ---
 .../ui/chat/drawer/ActionModeHandler.java     | 116 ---
 .../chat/drawer/BufferViewConfigAdapter.java  | 318 ------
 .../ui/chat/drawer/BufferViewHolder.java      | 182 ----
 .../ui/chat/drawer/NetworkItem.java           | 212 ----
 .../ui/chat/drawer/NetworkViewHolder.java     |  53 -
 .../ui/chat/drawer/OnBufferClickListener.java |  28 -
 .../drawer/OnBufferLongClickListener.java     |  28 -
 .../ui/chat/fragment/ChatFragment.java        | 187 ----
 .../ui/chat/fragment/LoadingFragment.java     | 101 --
 .../ui/chat/nicklist/NickListAdapter.java     | 136 ---
 .../ui/chat/util/ScrollRefreshLayout.java     |  36 -
 .../ui/chat/util/ServiceHelper.java           |  84 --
 .../ui/chat/util/SlidingPanelHandler.java     | 360 -------
 .../quasseldroid_ng/ui/chat/util/Status.java  |  32 -
 .../aliases/AliasEditActivity.java            | 165 ---
 .../aliases/AliasListActivity.java            | 168 ---
 .../aliases/helper/AliasSerializerHelper.java |  45 -
 .../chatlist/ChatListCreateActivity.java      | 155 ---
 .../chatlist/ChatListEditActivity.java        | 253 -----
 .../chatlist/ChatListListActivity.java        | 148 ---
 .../chatlist/MinimumActivityAdapter.java      | 112 --
 .../identity/IdentityCreateActivity.java      | 189 ----
 .../identity/IdentityEditActivity.java        | 299 ------
 .../identity/IdentityListActivity.java        | 148 ---
 .../identity/IdentitySpinnerAdapter.java      | 182 ----
 .../identity/nick/IdentityNickAdapter.java    | 123 ---
 .../nick/IdentityNickListActivity.java        | 171 ----
 .../ignore/IgnoreListActivity.java            | 180 ----
 .../ignore/IgnoreRuleEditActivity.java        | 199 ----
 .../helper/IgnoreRuleSerializerHelper.java    |  55 -
 .../ignore/helper/IgnoreTypeAdapter.java      | 112 --
 .../ignore/helper/ScopeTypeAdapter.java       | 112 --
 .../ignore/helper/StrictnessTypeAdapter.java  | 115 ---
 .../coresettings/network/AllNetworksItem.java | 749 --------------
 .../network/FakeNetworksWrapper.java          | 114 ---
 .../network/NetworkCreateActivity.java        | 281 -----
 .../network/NetworkEditActivity.java          | 394 -------
 .../network/NetworkListActivity.java          | 148 ---
 .../network/NetworkSpinnerAdapter.java        | 130 ---
 .../network/server/NetworkServerAdapter.java  | 131 ---
 .../server/NetworkServerEditActivity.java     | 278 -----
 .../server/NetworkServerListActivity.java     | 160 ---
 .../server/helper/ItemTouchHelperAdapter.java |  64 --
 .../helper/ItemTouchHelperViewHolder.java     |  62 --
 .../helper/NetworkServerSerializeHelper.java  |  87 --
 .../server/helper/OnStartDragListener.java    |  54 -
 .../helper/SimpleItemTouchHelperCallback.java | 142 ---
 .../ui/editor/AdvancedEditor.java             | 214 ----
 .../quasseldroid_ng/ui/settings/Settings.java |  75 --
 .../ui/settings/SettingsActivity.java         |  95 --
 .../quasseldroid_ng/ui/setup/AccountItem.java | 175 ----
 .../ui/setup/AccountSelectActivity.java       |  97 --
 .../ui/setup/AccountSetupActivity.java        | 173 ----
 .../ui/setup/CoreSetupActivity.java           | 169 ---
 .../ui/setup/CreateAccountItem.java           | 125 ---
 .../ui/setup/StorageBackendItem.java          | 166 ---
 .../ui/setup/ValidUpdateCallback.java         |  26 -
 .../ui/setup/slides/AccountSelectSlide.java   | 156 ---
 .../setup/slides/AccountSetupCoreSlide.java   | 116 ---
 .../setup/slides/AccountSetupNameSlide.java   |  99 --
 .../setup/slides/AccountSetupUserSlide.java   | 111 --
 .../setup/slides/CoreBackendSelectSlide.java  | 103 --
 .../setup/slides/CoreBackendSetupSlide.java   | 404 --------
 .../ui/setup/slides/SlideFragment.java        |  89 --
 .../quasseldroid_ng/ui/theme/AppContext.java  | 113 --
 .../quasseldroid_ng/ui/theme/AppTheme.java    |  70 --
 .../ui/theme/PreferenceStrings.java           |  59 --
 .../quasseldroid_ng/ui/theme/ThemeUtil.java   | 969 ------------------
 .../util/CompatibilityUtils.kt                | 157 +++
 .../de/kuschku/quasseldroid_ng/util/Flag.kt   |  70 ++
 .../kuschku/quasseldroid_ng/util/LongFlag.kt  |  74 ++
 .../kuschku/quasseldroid_ng/util/ShortFlag.kt |  78 ++
 .../util/helpers/ByteBufferHelper.kt          |  10 +
 .../util/helpers/ContextHelper.kt             |  10 +
 .../quasseldroid_ng/util/helpers/LogHelper.kt | 233 +++++
 .../quasseldroid_ng/util/helpers/MapHelper.kt |   4 +
 .../util/helpers/MathHelper.kt                |   2 +
 .../util/helpers/TransformationsHelper.kt     |  69 ++
 .../util/helpers/WritableByteChannelHelper.kt |   9 +
 .../util/nio/ChainedByteBuffer.kt             | 111 ++
 .../util/nio/WrappedChannel.kt                | 192 ++++
 .../java/de/kuschku/util/AndroidAssert.java   | 377 -------
 .../de/kuschku/util/CompatibilityUtils.java   | 115 ---
 .../de/kuschku/util/accounts/Account.java     |  61 --
 .../kuschku/util/accounts/AccountManager.java |  63 --
 .../util/accounts/AccountManagerHelper.java   | 206 ----
 .../kuschku/util/accounts/ServerAddress.java  |  36 -
 .../util/annotationbind/AutoBinder.java       | 141 ---
 .../util/annotationbind/AutoColor.java        |  33 -
 .../util/annotationbind/AutoDimen.java        |  33 -
 .../kuschku/util/annotationbind/AutoInt.java  |  33 -
 .../util/annotationbind/AutoString.java       |  33 -
 .../de/kuschku/util/backports/Absent.java     |  86 --
 .../util/backports/BinaryFunction.java        |  29 -
 .../de/kuschku/util/backports/Consumer.java   |  26 -
 .../de/kuschku/util/backports/ICollector.java |  29 -
 .../kuschku/util/backports/NumberHelper.java  |  48 -
 .../de/kuschku/util/backports/Objects.java    | 142 ---
 .../de/kuschku/util/backports/Optional.java   |  56 -
 .../de/kuschku/util/backports/Optionals.java  |  50 -
 .../de/kuschku/util/backports/Present.java    |  90 --
 .../de/kuschku/util/backports/Stream.java     | 137 ---
 .../util/backports/collectors/Collectors.java |  45 -
 .../backports/collectors/ListCollector.java   |  37 -
 .../backports/collectors/MapCollector.java    |  50 -
 .../buffermetadata/BufferMetaDataHelper.java  | 190 ----
 .../buffermetadata/BufferMetaDataManager.java |  36 -
 .../SQLiteBufferMetaDataManager.java          |  62 --
 .../CertificateDatabaseHandler.java           | 184 ----
 .../util/certificates/CertificateUtils.java   |  80 --
 .../SQLiteCertificateManager.java             |  91 --
 .../util/instancestateutil/Storable.java      | 283 -----
 .../kuschku/util/instancestateutil/Store.java |  70 --
 .../de/kuschku/util/irc/IrcCaseMappers.java   |  94 --
 .../de/kuschku/util/irc/IrcUserUtils.java     | 111 --
 .../java/de/kuschku/util/irc/ModeUtils.java   |  60 --
 .../chanmodes/AbstractIrcModeProvider.java    |  55 -
 .../kuschku/util/irc/chanmodes/ChanMode.java  |  68 --
 .../util/irc/chanmodes/IrcModeProvider.java   |  34 -
 .../irc/chanmodes/IrcModeProviderFactory.java |  84 --
 .../chanmodes/impl/BewareIrcModeProvider.java | 124 ---
 .../impl/CharybdisIrcModeProvider.java        | 189 ----
 .../chanmodes/impl/DalIrcModeProvider.java    | 154 ---
 .../chanmodes/impl/DancerIrcModeProvider.java | 144 ---
 .../irc/chanmodes/impl/FqIrcModeProvider.java | 151 ---
 .../chanmodes/impl/HybridIrcModeProvider.java | 144 ---
 .../impl/HyperionIrcModeProvider.java         | 134 ---
 .../impl/InspireIrcModeProvider.java          | 212 ----
 .../chanmodes/impl/NeoIrcModeProvider.java    | 154 ---
 .../impl/NightstarIrcModeProvider.java        | 124 ---
 .../chanmodes/impl/RfcIrcModeProvider.java    | 114 ---
 .../chanmodes/impl/ShadowIrcModeProvider.java | 209 ----
 .../chanmodes/impl/SolidIrcModeProvider.java  | 194 ----
 .../impl/UndernetIrcModeProvider.java         | 114 ---
 .../chanmodes/impl/UnrealIrcModeProvider.java | 204 ----
 .../irc/format/IrcFormatDeserializer.java     | 361 -------
 .../util/irc/format/IrcFormatHelper.java      | 165 ---
 .../util/irc/format/IrcFormatSerializer.java  | 153 ---
 .../util/irc/format/spans/Copyable.java       |  26 -
 .../format/spans/IrcBackgroundColorSpan.java  |  39 -
 .../util/irc/format/spans/IrcBoldSpan.java    |  36 -
 .../format/spans/IrcForegroundColorSpan.java  |  39 -
 .../util/irc/format/spans/IrcItalicSpan.java  |  36 -
 .../irc/format/spans/IrcUnderlineSpan.java    |  31 -
 .../de/kuschku/util/niohelpers/Helper.java    |  57 --
 .../util/niohelpers/WrappedChannel.java       | 240 -----
 .../util/observables/AutoScroller.java        |  43 -
 .../util/observables/ContentComparable.java   |  30 -
 .../kuschku/util/observables/IObservable.java |  30 -
 .../callbacks/DrawerItemCallback.java         |  28 -
 .../callbacks/ElementCallback.java            |  35 -
 .../callbacks/GeneralCallback.java            |  26 -
 .../callbacks/GeneralObservable.java          |  49 -
 .../observables/callbacks/UICallback.java     |  47 -
 .../callbacks/UIChildCallback.java            |  35 -
 .../callbacks/UIChildParentCallback.java      |  25 -
 .../callbacks/UIParentCallback.java           |  38 -
 .../wrappers/AdapterUICallbackWrapper.java    |  85 --
 .../wrappers/ChildUICallbackWrapper.java      |  89 --
 .../wrappers/GeneralUICallbackWrapper.java    |  63 --
 .../wrappers/MultiDrawerItemCallback.java     |  70 --
 .../wrappers/MultiElementCallbackWrapper.java |  82 --
 .../wrappers/MultiGeneralCallback.java        |  69 --
 .../wrappers/MultiUICallbackWrapper.java      | 108 --
 .../wrappers/MultiUIChildCallback.java        |  74 --
 .../wrappers/MultiUIChildParentCallback.java  |  98 --
 .../wrappers/ParentUICallbackWrapper.java     |  80 --
 ...AndroidObservableComparableSortedList.java |  58 --
 .../lists/AndroidObservableSortedList.java    | 372 -------
 ...hildParentAndroidObservableSortedList.java |  79 --
 .../lists/IObservableCollection.java          |  71 --
 .../observables/lists/IObservableList.java    |  29 -
 .../observables/lists/IObservableSet.java     |  27 -
 .../lists/ObservableComparableSortedList.java |  56 -
 .../observables/lists/ObservableElement.java  |  63 --
 .../lists/ObservableElementList.java          | 166 ---
 .../observables/lists/ObservableList.java     | 176 ----
 .../util/observables/lists/ObservableSet.java | 160 ---
 .../lists/ObservableSortedList.java           | 212 ----
 .../AbstractPreferenceElement.java            |  75 --
 .../util/preferences/BooleanPreference.java   |  40 -
 .../util/preferences/FloatPreference.java     |  40 -
 .../util/preferences/IntPreference.java       |  40 -
 .../util/preferences/LongPreference.java      |  40 -
 .../util/preferences/OnChangeListener.java    |  26 -
 .../util/preferences/PreferenceElement.java   |  34 -
 .../util/preferences/StringPreference.java    |  40 -
 .../kuschku/util/regex/GlobTransformer.java   | 130 ---
 .../de/kuschku/util/regex/SmartRegEx.java     |  78 --
 .../util/servicebound/BoundActivity.java      | 154 ---
 .../util/servicebound/BoundFragment.java      | 111 --
 .../de/kuschku/util/ui/AnimationHelper.java   |  82 --
 .../java/de/kuschku/util/ui/Bindable.java     |  26 -
 .../kuschku/util/ui/DateTimeFormatHelper.java |  79 --
 .../util/ui/DividerItemDecoration.java        |  72 --
 .../ui/MaterialActionBarDrawerToggle.java     |  44 -
 .../java/de/kuschku/util/ui/MenuTint.java     | 622 -----------
 .../kuschku/util/ui/ObservableTextBinder.java |  47 -
 .../de/kuschku/util/ui/SpanFormatter.java     | 140 ---
 .../ui/parcelableUtil/QVariantParcelable.java | 107 --
 .../StorageBackendParcelable.java             | 133 ---
 .../preferences/MaterialListPreference.java   | 232 -----
 .../MaterialListSummaryPreference.java        |  66 --
 .../kuschku/util/ui/preferences/PrefUtil.java |  95 --
 .../ui/preferences/SeekBarPreference.java     | 208 ----
 app/src/main/res/drawable-hdpi/ic_splash.png  | Bin 0 -> 11789 bytes
 app/src/main/res/drawable-mdpi/ic_splash.png  | Bin 0 -> 8421 bytes
 app/src/main/res/drawable-nodpi/bg2.jpg~      | Bin 1183302 -> 0 bytes
 app/src/main/res/drawable-xhdpi/ic_splash.png | Bin 0 -> 18337 bytes
 .../main/res/drawable-xxhdpi/ic_splash.png    | Bin 0 -> 31338 bytes
 .../main/res/drawable-xxxhdpi/ic_splash.png   | Bin 0 -> 44876 bytes
 app/src/main/res/drawable/badge.xml           |  30 -
 app/src/main/res/drawable/bg_splash.xml       |   9 +
 app/src/main/res/drawable/ic_add.xml          |   8 +-
 app/src/main/res/drawable/ic_arrow_right.xml  |   8 +-
 app/src/main/res/drawable/ic_check.xml        |   8 +-
 app/src/main/res/drawable/ic_debug.xml        |   8 +-
 app/src/main/res/drawable/ic_delete.xml       |   8 +-
 app/src/main/res/drawable/ic_filter.xml       |   8 +-
 app/src/main/res/drawable/ic_format_bold.xml  |   8 +-
 app/src/main/res/drawable/ic_format_fill.xml  |   8 +-
 .../main/res/drawable/ic_format_italic.xml    |   8 +-
 app/src/main/res/drawable/ic_format_paint.xml |   8 +-
 .../main/res/drawable/ic_format_underline.xml |   8 +-
 app/src/main/res/drawable/ic_help.xml         |   8 +-
 app/src/main/res/drawable/ic_history.xml      |   8 +-
 app/src/main/res/drawable/ic_lock.xml         |   8 +-
 app/src/main/res/drawable/ic_lock_open.xml    |   8 +-
 app/src/main/res/drawable/ic_modify.xml       |   8 +-
 app/src/main/res/drawable/ic_reorder.xml      |   8 +-
 app/src/main/res/drawable/ic_scroll_down.xml  |   8 +-
 app/src/main/res/drawable/ic_send.xml         |   8 +-
 app/src/main/res/drawable/ic_server.xml       |   8 +-
 .../main/res/drawable/ic_shortcut_channel.xml |   5 +
 .../ic_shortcut_channel_foreground.xml        |  11 +
 .../main/res/drawable/ic_shortcut_query.xml   |   5 +
 .../drawable/ic_shortcut_query_foreground.xml |  10 +
 app/src/main/res/drawable/ic_status.xml       |   6 +-
 .../main/res/drawable/ic_status_channel.xml   |   6 +-
 .../drawable/ic_status_channel_offline.xml    |   8 +-
 .../main/res/drawable/ic_status_offline.xml   |   6 +-
 .../layout-sw600dp-land/activity_setup.xml    |  49 -
 .../main/res/layout-sw600dp-land/slide.xml    |  82 --
 .../res/layout-sw600dp/activity_setup.xml     |  56 -
 app/src/main/res/layout-sw600dp/slide.xml     |  74 --
 .../main/res/layout/activity_alias_edit.xml   |  87 --
 .../res/layout/activity_channel_detail.xml    | 109 --
 .../res/layout/activity_chatlist_edit.xml     | 164 ---
 .../res/layout/activity_chatlist_list.xml     |  66 --
 .../res/layout/activity_identity_edit.xml     | 208 ----
 .../res/layout/activity_ignorerule_edit.xml   | 170 ---
 app/src/main/res/layout/activity_main.xml     | 204 ++--
 .../main/res/layout/activity_network_edit.xml | 312 ------
 .../main/res/layout/activity_network_list.xml |  65 --
 .../layout/activity_networkserver_edit.xml    | 202 ----
 app/src/main/res/layout/activity_settings.xml |  48 -
 app/src/main/res/layout/activity_setup.xml    |  49 -
 app/src/main/res/layout/dialog_coreinfo.xml   | 240 -----
 app/src/main/res/layout/dialog_login.xml      |  56 -
 app/src/main/res/layout/fragment_chat.xml     |  66 --
 app/src/main/res/layout/fragment_loading.xml  |  56 -
 .../main/res/layout/seek_bar_preference.xml   |  51 -
 app/src/main/res/layout/slide.xml             |  68 --
 .../main/res/layout/slide_account_core.xml    |  55 -
 .../main/res/layout/slide_account_name.xml    |  41 -
 .../main/res/layout/slide_account_user.xml    |  54 -
 .../res/layout/slide_core_setup_backend.xml   |  34 -
 app/src/main/res/layout/slide_select.xml      |  26 -
 app/src/main/res/layout/widget_actionbar.xml  |  95 --
 app/src/main/res/layout/widget_buffer.xml     | 113 --
 .../main/res/layout/widget_channel_mode.xml   |  65 --
 app/src/main/res/layout/widget_chatlist.xml   |  39 -
 .../res/layout/widget_chatmessage_action.xml  |  56 -
 .../res/layout/widget_chatmessage_error.xml   |  57 --
 .../layout/widget_chatmessage_markerline.xml  |  27 -
 .../res/layout/widget_chatmessage_plain.xml   |  55 -
 .../res/layout/widget_chatmessage_server.xml  |  57 --
 .../main/res/layout/widget_core_account.xml   |  77 --
 .../res/layout/widget_core_account_add.xml    |  77 --
 .../main/res/layout/widget_core_backend.xml   |  66 --
 .../main/res/layout/widget_drawer_network.xml |  47 -
 app/src/main/res/layout/widget_editor.xml     |  98 --
 .../main/res/layout/widget_identitynick.xml   |  54 -
 .../main/res/layout/widget_input_boolean.xml  |  27 -
 .../main/res/layout/widget_input_string.xml   |  33 -
 .../main/res/layout/widget_networkserver.xml  |  62 --
 app/src/main/res/layout/widget_nick.xml       |  81 --
 app/src/main/res/layout/widget_nick_away.xml  |  85 --
 .../main/res/layout/widget_settings_alias.xml |  58 --
 .../res/layout/widget_settings_ignorerule.xml |  51 -
 .../res/layout/widget_settings_network.xml    |  40 -
 app/src/main/res/layout/widget_slider.xml     |  85 --
 .../res/layout/widget_spinner_item_inline.xml |  28 -
 .../layout/widget_spinner_item_toolbar.xml    |  30 -
 app/src/main/res/menu/chat.xml                |  62 --
 app/src/main/res/menu/chatlist.xml            |  38 -
 app/src/main/res/menu/confirm.xml             |  30 -
 app/src/main/res/menu/confirm_delete.xml      |  35 -
 .../main/res/menu/context_buffer_network.xml  |  54 -
 app/src/main/res/menu/formatting.xml          | 195 ----
 app/src/main/res/menu/main.xml                |   6 +
 .../res/mipmap-anydpi-v26/ic_launcher.xml     |   5 +
 app/src/main/res/mipmap-hdpi/ic_launcher.png  | Bin 3244 -> 3278 bytes
 .../mipmap-hdpi/ic_launcher_foreground.png    | Bin 0 -> 2884 bytes
 app/src/main/res/mipmap-mdpi/ic_launcher.png  | Bin 1988 -> 2546 bytes
 .../mipmap-mdpi/ic_launcher_foreground.png    | Bin 0 -> 2229 bytes
 app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4594 -> 4634 bytes
 .../mipmap-xhdpi/ic_launcher_foreground.png   | Bin 0 -> 4112 bytes
 .../main/res/mipmap-xxhdpi/ic_launcher.png    | Bin 7521 -> 7512 bytes
 .../mipmap-xxhdpi/ic_launcher_foreground.png  | Bin 0 -> 6812 bytes
 .../main/res/mipmap-xxxhdpi/ic_launcher.png   | Bin 10855 -> 10878 bytes
 .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 9911 bytes
 app/src/main/res/values-land/dimens.xml       |  25 -
 app/src/main/res/values-sw600dp/dimens.xml    |  26 -
 app/src/main/res/values-w820dp/dimens.xml     |  24 -
 app/src/main/res/values/attrs.xml             |  95 --
 app/src/main/res/values/colors.xml            |  37 +-
 app/src/main/res/values/dimens.xml            |  32 -
 app/src/main/res/values/ids.xml               |  29 -
 app/src/main/res/values/preferences.xml       |  63 --
 app/src/main/res/values/strings.xml           |  68 +-
 app/src/main/res/values/strings_actions.xml   |  55 -
 app/src/main/res/values/strings_chanmodes.xml | 140 ---
 .../main/res/values/strings_coresettings.xml  | 114 ---
 app/src/main/res/values/strings_format.xml    |  71 --
 app/src/main/res/values/strings_setup.xml     |  41 -
 app/src/main/res/values/strings_titles.xml    |  49 -
 app/src/main/res/values/styles.xml            | 181 +---
 app/src/main/res/values/themes_quassel.xml    | 109 --
 app/src/main/res/values/themes_solarized.xml  | 120 ---
 app/src/main/res/xml/pref_appearance.xml      |  55 -
 app/src/main/res/xml/pref_overview.xml        |  32 -
 .../quasseldroid_ng/SerializerUnitTest.kt     | 103 ++
 build.gradle                                  |  43 -
 build.gradle.kts                              |  17 +
 gradle.properties                             |  17 +
 gradle/project-schema.json                    |  73 ++
 gradle/wrapper/gradle-wrapper.jar             | Bin 53637 -> 52978 bytes
 gradle/wrapper/gradle-wrapper.properties      |  24 +-
 gradlew                                       |  72 +-
 gradlew.bat                                   |  14 +-
 install.sh                                    |  20 -
 invokerannotations/build.gradle.kts           |   3 +
 .../kuschku/libquassel/annotations/Slot.java  |  12 +
 .../libquassel/annotations/Syncable.java      |  12 +
 invokergenerator/build.gradle.kts             |  18 +
 .../annotations/InvokerProcessor.java         | 241 +++++
 settings.gradle                               |  23 +-
 685 files changed, 9701 insertions(+), 55465 deletions(-)
 delete mode 100644 .gitmodules
 delete mode 160000 AndroidSlidingUpPanel
 delete mode 100644 COPYING.GPL.md
 delete mode 100644 README.md
 create mode 100644 app/.gitignore
 delete mode 100644 app/build.gradle
 create mode 100644 app/build.gradle.kts
 create mode 100644 app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt
 delete mode 100644 app/src/beta/res/mipmap-hdpi/ic_launcher.png
 delete mode 100644 app/src/beta/res/mipmap-mdpi/ic_launcher.png
 delete mode 100644 app/src/beta/res/mipmap-xhdpi/ic_launcher.png
 delete mode 100644 app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
 delete mode 100644 app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
 delete mode 100644 app/src/beta/res/values/colors.xml
 delete mode 100644 app/src/beta/res/values/strings.xml
 delete mode 100644 app/src/debug/res/mipmap-hdpi/ic_launcher.png
 delete mode 100644 app/src/debug/res/mipmap-mdpi/ic_launcher.png
 delete mode 100644 app/src/debug/res/mipmap-xhdpi/ic_launcher.png
 delete mode 100644 app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
 delete mode 100644 app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
 delete mode 100644 app/src/debug/res/values/strings.xml
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/BusProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/CoreConnection.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/QuasselClient.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/AClient.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/BufferManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/Client.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/ClientData.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/FeatureFlags.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/client/QClient.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/BacklogReceivedEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/BufferChangeEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/CertificateAcceptedEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/ConnectionChangeEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/CoreSetupFailedEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/CoreSetupRequiredEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/CoreSetupSuccessfulEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/CriticalErrorEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/GeneralErrorEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/HandshakeFailedEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/InitEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/LagChangedEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/LoginRequireEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/PasswordChangeEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/StatusMessageEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/events/UnknownCertificateEvent.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/exceptions/SyncInvocationException.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/exceptions/UnknownTypeException.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/FunctionType.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/FunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatReplySerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/InitDataFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/InitRequestFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedInitDataFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedRpcCallFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedSyncFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedInitDataFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedRpcCallFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedSyncFunctionSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/HandshakeFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/Heartbeat.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/HeartbeatReply.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/InitDataFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/InitRequestFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/PackedFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/PackedInitDataFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/RpcCallFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/SerializedFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/SyncFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedInitDataFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffers.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/buffers/ChannelBuffer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/buffers/QueryBuffer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/buffers/StatusBuffer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/message/Message.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/MessageTypeRegistry.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitAckSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitRejectSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginAckSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginRejectSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupAckSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupDataSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupRejectSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/ObjectSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionInitSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionStateSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/SetupDataInitializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/StorageBackendSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/serializers/StringObjectMapSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientInit.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitAck.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitReject.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientLogin.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginAck.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginReject.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/Command.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupAck.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupData.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupReject.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/CoreStatus.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/SessionInit.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/SessionState.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/SetupData.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/objects/types/StorageBackend.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/QMetaType.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/QMetaTypeRegistry.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/BoolSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/BufferInfoSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteArraySerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/CharSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/DateTimeSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/IntSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/LongSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/MessageSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/PrimitiveSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/ProtocolSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/ShortSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/TimeSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/UserTypeSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantListSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantMapSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantVariantListSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/serializers/VoidSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/types/Protocol.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/primitives/types/QVariant.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/protocols/LegacyPeer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/ssl/CertificateManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/ssl/QuasselTrustManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/ssl/UnknownCertificateException.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/Syncable.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/SyncableRegistry.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/Synced.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/AliasManagerSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferSyncerSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewManagerSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/CoreInfoSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/IdentitySerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/IgnoreListManagerSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcChannelSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkConfigSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkInfoSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AAliasManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABacklogManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ACoreInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIdentity.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIgnoreListManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcChannel.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcUser.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetwork.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetworkConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QAliasManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCertManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCoreInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIdentity.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIgnoreListManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetwork.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetworkConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QObservable.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IAliasManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBacklogManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferSyncer.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICertManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IClient.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICoreInfo.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIdentity.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIgnoreListManager.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcChannel.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcUser.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetwork.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetworkConfig.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/Invoker.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerRegistry.java
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/Exceptions.kt
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/QuasselDroidNG.java
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/ClientData.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/HandshakeMessage.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/MetaType.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/NetworkLayerProtocol.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QType.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QTypes.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QVariant.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/SignalProxyMessage.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/Type.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BoolSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BufferInfoSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteArraySerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/CharSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DateTimeSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_IpDetectionModeSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_PortSelectionModeSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HandshakeVariantMapSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HostAddressSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/IntSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/LongSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/MessageSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ProtocolSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/Serializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ShortSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringListSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/TimeSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantListSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantMapSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VoidSerializer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/BufferInfo.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/NetworkInfo.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolFeature.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolMeta.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/QuasselFeature.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/AliasManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BacklogManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferSyncer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CertManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CoreInfo.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/DccConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Identity.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IgnoreListManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcChannel.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcListHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcUser.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Network.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/NetworkConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/RpcHandler.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/SyncableObject.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IAliasManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBacklogManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferSyncer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICertManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICoreInfo.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IDccConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIdentity.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIgnoreListManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcChannel.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcListHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcUser.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetwork.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetworkConfig.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IRpcHandler.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ISyncableObject.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransfer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransferManager.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invoker.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invokers.kt
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/AuthHandler.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/Backend.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/ConnectionState.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/CoreConnection.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/MessageRunnable.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/ObjectStorage.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/ProtocolHandler.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/Session.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/SignalProxy.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/session/SocketAddress.kt
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/MainActivity.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/ViewIntBinder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigSpinnerAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageViewHolder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/dialogs/CoreInfoDialogBuilder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkViewHolder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferClickListener.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/LoadingFragment.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/nicklist/NickListAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ScrollRefreshLayout.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/Status.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/helper/AliasSerializerHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityCreateActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentitySpinnerAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreRuleEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreRuleSerializerHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreTypeAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/ScopeTypeAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/StrictnessTypeAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/AllNetworksItem.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/FakeNetworksWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkSpinnerAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountItem.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CreateAccountItem.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/StorageBackendItem.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/ValidUpdateCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSelectSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSetupSlide.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/PreferenceStrings.java
 delete mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/CompatibilityUtils.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/Flag.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/LongFlag.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/ShortFlag.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ByteBufferHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ContextHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/LogHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MapHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MathHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/TransformationsHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/WritableByteChannelHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/ChainedByteBuffer.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/WrappedChannel.kt
 delete mode 100644 app/src/main/java/de/kuschku/util/AndroidAssert.java
 delete mode 100644 app/src/main/java/de/kuschku/util/CompatibilityUtils.java
 delete mode 100644 app/src/main/java/de/kuschku/util/accounts/Account.java
 delete mode 100644 app/src/main/java/de/kuschku/util/accounts/AccountManager.java
 delete mode 100644 app/src/main/java/de/kuschku/util/accounts/AccountManagerHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/accounts/ServerAddress.java
 delete mode 100644 app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
 delete mode 100644 app/src/main/java/de/kuschku/util/annotationbind/AutoColor.java
 delete mode 100644 app/src/main/java/de/kuschku/util/annotationbind/AutoDimen.java
 delete mode 100644 app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java
 delete mode 100644 app/src/main/java/de/kuschku/util/annotationbind/AutoString.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Absent.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/BinaryFunction.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Consumer.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/ICollector.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/NumberHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Objects.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Optional.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Optionals.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Present.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/Stream.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/collectors/Collectors.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/collectors/ListCollector.java
 delete mode 100644 app/src/main/java/de/kuschku/util/backports/collectors/MapCollector.java
 delete mode 100644 app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataManager.java
 delete mode 100644 app/src/main/java/de/kuschku/util/buffermetadata/SQLiteBufferMetaDataManager.java
 delete mode 100644 app/src/main/java/de/kuschku/util/certificates/CertificateDatabaseHandler.java
 delete mode 100644 app/src/main/java/de/kuschku/util/certificates/CertificateUtils.java
 delete mode 100644 app/src/main/java/de/kuschku/util/certificates/SQLiteCertificateManager.java
 delete mode 100644 app/src/main/java/de/kuschku/util/instancestateutil/Storable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/instancestateutil/Store.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/IrcCaseMappers.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/IrcUserUtils.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/ModeUtils.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/AbstractIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java
 delete mode 100644 app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java
 delete mode 100644 app/src/main/java/de/kuschku/util/niohelpers/Helper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/niohelpers/WrappedChannel.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/AutoScroller.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/ContentComparable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/IObservable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/DrawerItemCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/ElementCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/GeneralCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/GeneralObservable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/UICallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/UIChildCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/UIChildParentCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/UIParentCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/AdapterUICallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ChildUICallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/GeneralUICallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiDrawerItemCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiElementCallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiGeneralCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUICallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildParentCallback.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ParentUICallbackWrapper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableComparableSortedList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableSortedList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ChildParentAndroidObservableSortedList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/IObservableCollection.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/IObservableList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/IObservableSet.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableComparableSortedList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableElement.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableElementList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableSet.java
 delete mode 100644 app/src/main/java/de/kuschku/util/observables/lists/ObservableSortedList.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/AbstractPreferenceElement.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/BooleanPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/FloatPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/IntPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/LongPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/OnChangeListener.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/PreferenceElement.java
 delete mode 100644 app/src/main/java/de/kuschku/util/preferences/StringPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/regex/GlobTransformer.java
 delete mode 100644 app/src/main/java/de/kuschku/util/regex/SmartRegEx.java
 delete mode 100644 app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
 delete mode 100644 app/src/main/java/de/kuschku/util/servicebound/BoundFragment.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/AnimationHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/Bindable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/DividerItemDecoration.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/MaterialActionBarDrawerToggle.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/MenuTint.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/ObservableTextBinder.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/SpanFormatter.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/parcelableUtil/QVariantParcelable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/parcelableUtil/StorageBackendParcelable.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/preferences/MaterialListPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/preferences/MaterialListSummaryPreference.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/preferences/PrefUtil.java
 delete mode 100644 app/src/main/java/de/kuschku/util/ui/preferences/SeekBarPreference.java
 create mode 100644 app/src/main/res/drawable-hdpi/ic_splash.png
 create mode 100644 app/src/main/res/drawable-mdpi/ic_splash.png
 delete mode 100644 app/src/main/res/drawable-nodpi/bg2.jpg~
 create mode 100644 app/src/main/res/drawable-xhdpi/ic_splash.png
 create mode 100644 app/src/main/res/drawable-xxhdpi/ic_splash.png
 create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_splash.png
 delete mode 100644 app/src/main/res/drawable/badge.xml
 create mode 100644 app/src/main/res/drawable/bg_splash.xml
 create mode 100644 app/src/main/res/drawable/ic_shortcut_channel.xml
 create mode 100644 app/src/main/res/drawable/ic_shortcut_channel_foreground.xml
 create mode 100644 app/src/main/res/drawable/ic_shortcut_query.xml
 create mode 100644 app/src/main/res/drawable/ic_shortcut_query_foreground.xml
 delete mode 100644 app/src/main/res/layout-sw600dp-land/activity_setup.xml
 delete mode 100644 app/src/main/res/layout-sw600dp-land/slide.xml
 delete mode 100644 app/src/main/res/layout-sw600dp/activity_setup.xml
 delete mode 100644 app/src/main/res/layout-sw600dp/slide.xml
 delete mode 100644 app/src/main/res/layout/activity_alias_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_channel_detail.xml
 delete mode 100644 app/src/main/res/layout/activity_chatlist_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_chatlist_list.xml
 delete mode 100644 app/src/main/res/layout/activity_identity_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_ignorerule_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_network_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_network_list.xml
 delete mode 100644 app/src/main/res/layout/activity_networkserver_edit.xml
 delete mode 100644 app/src/main/res/layout/activity_settings.xml
 delete mode 100644 app/src/main/res/layout/activity_setup.xml
 delete mode 100644 app/src/main/res/layout/dialog_coreinfo.xml
 delete mode 100644 app/src/main/res/layout/dialog_login.xml
 delete mode 100644 app/src/main/res/layout/fragment_chat.xml
 delete mode 100644 app/src/main/res/layout/fragment_loading.xml
 delete mode 100644 app/src/main/res/layout/seek_bar_preference.xml
 delete mode 100644 app/src/main/res/layout/slide.xml
 delete mode 100644 app/src/main/res/layout/slide_account_core.xml
 delete mode 100644 app/src/main/res/layout/slide_account_name.xml
 delete mode 100644 app/src/main/res/layout/slide_account_user.xml
 delete mode 100644 app/src/main/res/layout/slide_core_setup_backend.xml
 delete mode 100644 app/src/main/res/layout/slide_select.xml
 delete mode 100644 app/src/main/res/layout/widget_actionbar.xml
 delete mode 100644 app/src/main/res/layout/widget_buffer.xml
 delete mode 100644 app/src/main/res/layout/widget_channel_mode.xml
 delete mode 100644 app/src/main/res/layout/widget_chatlist.xml
 delete mode 100644 app/src/main/res/layout/widget_chatmessage_action.xml
 delete mode 100644 app/src/main/res/layout/widget_chatmessage_error.xml
 delete mode 100644 app/src/main/res/layout/widget_chatmessage_markerline.xml
 delete mode 100644 app/src/main/res/layout/widget_chatmessage_plain.xml
 delete mode 100644 app/src/main/res/layout/widget_chatmessage_server.xml
 delete mode 100644 app/src/main/res/layout/widget_core_account.xml
 delete mode 100644 app/src/main/res/layout/widget_core_account_add.xml
 delete mode 100644 app/src/main/res/layout/widget_core_backend.xml
 delete mode 100644 app/src/main/res/layout/widget_drawer_network.xml
 delete mode 100644 app/src/main/res/layout/widget_editor.xml
 delete mode 100644 app/src/main/res/layout/widget_identitynick.xml
 delete mode 100644 app/src/main/res/layout/widget_input_boolean.xml
 delete mode 100644 app/src/main/res/layout/widget_input_string.xml
 delete mode 100644 app/src/main/res/layout/widget_networkserver.xml
 delete mode 100644 app/src/main/res/layout/widget_nick.xml
 delete mode 100644 app/src/main/res/layout/widget_nick_away.xml
 delete mode 100644 app/src/main/res/layout/widget_settings_alias.xml
 delete mode 100644 app/src/main/res/layout/widget_settings_ignorerule.xml
 delete mode 100644 app/src/main/res/layout/widget_settings_network.xml
 delete mode 100644 app/src/main/res/layout/widget_slider.xml
 delete mode 100644 app/src/main/res/layout/widget_spinner_item_inline.xml
 delete mode 100644 app/src/main/res/layout/widget_spinner_item_toolbar.xml
 delete mode 100644 app/src/main/res/menu/chat.xml
 delete mode 100644 app/src/main/res/menu/chatlist.xml
 delete mode 100644 app/src/main/res/menu/confirm.xml
 delete mode 100644 app/src/main/res/menu/confirm_delete.xml
 delete mode 100644 app/src/main/res/menu/context_buffer_network.xml
 delete mode 100644 app/src/main/res/menu/formatting.xml
 create mode 100644 app/src/main/res/menu/main.xml
 create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
 create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
 create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
 create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
 create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
 create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
 delete mode 100644 app/src/main/res/values-land/dimens.xml
 delete mode 100644 app/src/main/res/values-sw600dp/dimens.xml
 delete mode 100644 app/src/main/res/values-w820dp/dimens.xml
 delete mode 100644 app/src/main/res/values/attrs.xml
 delete mode 100644 app/src/main/res/values/dimens.xml
 delete mode 100644 app/src/main/res/values/ids.xml
 delete mode 100644 app/src/main/res/values/preferences.xml
 delete mode 100644 app/src/main/res/values/strings_actions.xml
 delete mode 100644 app/src/main/res/values/strings_chanmodes.xml
 delete mode 100644 app/src/main/res/values/strings_coresettings.xml
 delete mode 100644 app/src/main/res/values/strings_format.xml
 delete mode 100644 app/src/main/res/values/strings_setup.xml
 delete mode 100644 app/src/main/res/values/strings_titles.xml
 delete mode 100644 app/src/main/res/values/themes_quassel.xml
 delete mode 100644 app/src/main/res/values/themes_solarized.xml
 delete mode 100644 app/src/main/res/xml/pref_appearance.xml
 delete mode 100644 app/src/main/res/xml/pref_overview.xml
 create mode 100644 app/src/test/java/de/kuschku/quasseldroid_ng/SerializerUnitTest.kt
 delete mode 100644 build.gradle
 create mode 100644 build.gradle.kts
 create mode 100644 gradle.properties
 create mode 100644 gradle/project-schema.json
 delete mode 100755 install.sh
 create mode 100644 invokerannotations/build.gradle.kts
 create mode 100644 invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
 create mode 100644 invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
 create mode 100644 invokergenerator/build.gradle.kts
 create mode 100644 invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java

diff --git a/.gitignore b/.gitignore
index 258bee47c..6619e4329 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,10 @@
-bin/*
-gen/*
-/.classpath
-**/build/*
 *.iml
-local.properties
-.gradle/*
-.idea/*
-gradle.properties
-*/version.properties
-*.sh
-make
-signing.gradle
-**/libs/*
\ No newline at end of file
+.gradle
+/local.properties
+/signing.properties
+/.idea/
+.DS_Store
+/captures
+.externalNativeBuild
+build/
+/*/schemas/
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 5d4529c10..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "AndroidSlidingUpPanel"]
-	path = AndroidSlidingUpPanel
-	url = https://github.com/justjanne/AndroidSlidingUpPanel
diff --git a/AndroidSlidingUpPanel b/AndroidSlidingUpPanel
deleted file mode 160000
index 70f676b9e..000000000
--- a/AndroidSlidingUpPanel
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 70f676b9ef268f6b3383287a86687dd58514bf54
diff --git a/COPYING.GPL.md b/COPYING.GPL.md
deleted file mode 100644
index 16d89e0a3..000000000
--- a/COPYING.GPL.md
+++ /dev/null
@@ -1,596 +0,0 @@
-GNU GENERAL PUBLIC LICENSE
-==========================
-
-Version 3, 29 June 2007
-
-Copyright &copy; 2007 Free Software Foundation, Inc. &lt;<http://fsf.org/>&gt;
-
-Everyone is permitted to copy and distribute verbatim copies of this license
-document, but changing it is not allowed.
-
-## Preamble
-
-The GNU General Public License is a free, copyleft license for software and other
-kinds of works.
-
-The licenses for most software and other practical works are designed to take away
-your freedom to share and change the works. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change all versions of a
-program--to make sure it remains free software for all its users. We, the Free
-Software Foundation, use the GNU General Public License for most of our software; it
-applies also to any other work released this way by its authors. You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our General
-Public Licenses are designed to make sure that you have the freedom to distribute
-copies of free software (and charge for them if you wish), that you receive source
-code or can get it if you want it, that you can change the software or use pieces of
-it in new free programs, and that you know you can do these things.
-
-To protect your rights, we need to prevent others from denying you these rights or
-asking you to surrender the rights. Therefore, you have certain responsibilities if
-you distribute copies of the software, or if you modify it: responsibilities to
-respect the freedom of others.
-
-For example, if you distribute copies of such a program, whether gratis or for a fee,
-you must pass on to the recipients the same freedoms that you received. You must make
-sure that they, too, receive or can get the source code. And you must show them these
-terms so they know their rights.
-
-Developers that use the GNU GPL protect your rights with two steps: (1) assert
-copyright on the software, and (2) offer you this License giving you legal permission
-to copy, distribute and/or modify it.
-
-For the developers' and authors' protection, the GPL clearly explains that there is
-no warranty for this free software. For both users' and authors' sake, the GPL
-requires that modified versions be marked as changed, so that their problems will not
-be attributed erroneously to authors of previous versions.
-
-Some devices are designed to deny users access to install or run modified versions of
-the software inside them, although the manufacturer can do so. This is fundamentally
-incompatible with the aim of protecting users' freedom to change the software. The
-systematic pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we have designed
-this version of the GPL to prohibit the practice for those products. If such problems
-arise substantially in other domains, we stand ready to extend this provision to
-those domains in future versions of the GPL, as needed to protect the freedom of
-users.
-
-Finally, every program is threatened constantly by software patents. States should
-not allow patents to restrict development and use of software on general-purpose
-computers, but in those that do, we wish to avoid the special danger that patents
-applied to a free program could make it effectively proprietary. To prevent this, the
-GPL assures that patents cannot be used to render the program non-free.
-
-The precise terms and conditions for copying, distribution and modification follow.
-
-## TERMS AND CONDITIONS
-
-### 0. Definitions.
-
-&ldquo;This License&rdquo; refers to version 3 of the GNU General Public License.
-
-&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-&ldquo;The Program&rdquo; refers to any copyrightable work licensed under this
-License. Each licensee is addressed as &ldquo;you&rdquo;. &ldquo;Licensees&rdquo; and
-&ldquo;recipients&rdquo; may be individuals or organizations.
-
-To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of the work in
-a fashion requiring copyright permission, other than the making of an exact copy. The
-resulting work is called a &ldquo;modified version&rdquo; of the earlier work or a
-work &ldquo;based on&rdquo; the earlier work.
-
-A &ldquo;covered work&rdquo; means either the unmodified Program or a work based on
-the Program.
-
-To &ldquo;propagate&rdquo; a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for infringement under
-applicable copyright law, except executing it on a computer or modifying a private
-copy. Propagation includes copying, distribution (with or without modification),
-making available to the public, and in some countries other activities as well.
-
-To &ldquo;convey&rdquo; a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through a computer
-network, with no transfer of a copy, is not conveying.
-
-An interactive user interface displays &ldquo;Appropriate Legal Notices&rdquo; to the
-extent that it includes a convenient and prominently visible feature that (1)
-displays an appropriate copyright notice, and (2) tells the user that there is no
-warranty for the work (except to the extent that warranties are provided), that
-licensees may convey the work under this License, and how to view a copy of this
-License. If the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-### 1. Source Code.
-
-The &ldquo;source code&rdquo; for a work means the preferred form of the work for
-making modifications to it. &ldquo;Object code&rdquo; means any non-source form of a
-work.
-
-A &ldquo;Standard Interface&rdquo; means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of interfaces
-specified for a particular programming language, one that is widely used among
-developers working in that language.
-
-The &ldquo;System Libraries&rdquo; of an executable work include anything, other than
-the work as a whole, that (a) is included in the normal form of packaging a Major
-Component, but which is not part of that Major Component, and (b) serves only to
-enable use of the work with that Major Component, or to implement a Standard
-Interface for which an implementation is available to the public in source code form.
-A &ldquo;Major Component&rdquo;, in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system (if any) on which
-the executable work runs, or a compiler used to produce the work, or an object code
-interpreter used to run it.
-
-The &ldquo;Corresponding Source&rdquo; for a work in object code form means all the
-source code needed to generate, install, and (for an executable work) run the object
-code and to modify the work, including scripts to control those activities. However,
-it does not include the work's System Libraries, or general-purpose tools or
-generally available free programs which are used unmodified in performing those
-activities but which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for the work, and
-the source code for shared libraries and dynamically linked subprograms that the work
-is specifically designed to require, such as by intimate data communication or
-control flow between those subprograms and other parts of the work.
-
-The Corresponding Source need not include anything that users can regenerate
-automatically from other parts of the Corresponding Source.
-
-The Corresponding Source for a work in source code form is that same work.
-
-### 2. Basic Permissions.
-
-All rights granted under this License are granted for the term of copyright on the
-Program, and are irrevocable provided the stated conditions are met. This License
-explicitly affirms your unlimited permission to run the unmodified Program. The
-output from running a covered work is covered by this License only if the output,
-given its content, constitutes a covered work. This License acknowledges your rights
-of fair use or other equivalent, as provided by copyright law.
-
-You may make, run and propagate covered works that you do not convey, without
-conditions so long as your license otherwise remains in force. You may convey covered
-works to others for the sole purpose of having them make modifications exclusively
-for you, or provide you with facilities for running those works, provided that you
-comply with the terms of this License in conveying all material for which you do not
-control copyright. Those thus making or running the covered works for you must do so
-exclusively on your behalf, under your direction and control, on terms that prohibit
-them from making any copies of your copyrighted material outside their relationship
-with you.
-
-Conveying under any other circumstances is permitted solely under the conditions
-stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
-
-### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-No covered work shall be deemed part of an effective technological measure under any
-applicable law fulfilling obligations under article 11 of the WIPO copyright treaty
-adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention
-of such measures.
-
-When you convey a covered work, you waive any legal power to forbid circumvention of
-technological measures to the extent such circumvention is effected by exercising
-rights under this License with respect to the covered work, and you disclaim any
-intention to limit operation or modification of the work as a means of enforcing,
-against the work's users, your or third parties' legal rights to forbid circumvention
-of technological measures.
-
-### 4. Conveying Verbatim Copies.
-
-You may convey verbatim copies of the Program's source code as you receive it, in any
-medium, provided that you conspicuously and appropriately publish on each copy an
-appropriate copyright notice; keep intact all notices stating that this License and
-any non-permissive terms added in accord with section 7 apply to the code; keep
-intact all notices of the absence of any warranty; and give all recipients a copy of
-this License along with the Program.
-
-You may charge any price or no price for each copy that you convey, and you may offer
-support or warranty protection for a fee.
-
-### 5. Conveying Modified Source Versions.
-
-You may convey a work based on the Program, or the modifications to produce it from
-the Program, in the form of source code under the terms of section 4, provided that
-you also meet all of these conditions:
-
-* **a)** The work must carry prominent notices stating that you modified it, and giving a
-relevant date.
-* **b)** The work must carry prominent notices stating that it is released under this
-License and any conditions added under section 7. This requirement modifies the
-requirement in section 4 to &ldquo;keep intact all notices&rdquo;.
-* **c)** You must license the entire work, as a whole, under this License to anyone who
-comes into possession of a copy. This License will therefore apply, along with any
-applicable section 7 additional terms, to the whole of the work, and all its parts,
-regardless of how they are packaged. This License gives no permission to license the
-work in any other way, but it does not invalidate such permission if you have
-separately received it.
-* **d)** If the work has interactive user interfaces, each must display Appropriate Legal
-Notices; however, if the Program has interactive interfaces that do not display
-Appropriate Legal Notices, your work need not make them do so.
-
-A compilation of a covered work with other separate and independent works, which are
-not by their nature extensions of the covered work, and which are not combined with
-it such as to form a larger program, in or on a volume of a storage or distribution
-medium, is called an &ldquo;aggregate&rdquo; if the compilation and its resulting
-copyright are not used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work in an aggregate
-does not cause this License to apply to the other parts of the aggregate.
-
-### 6. Conveying Non-Source Forms.
-
-You may convey a covered work in object code form under the terms of sections 4 and
-5, provided that you also convey the machine-readable Corresponding Source under the
-terms of this License, in one of these ways:
-
-* **a)** Convey the object code in, or embodied in, a physical product (including a
-physical distribution medium), accompanied by the Corresponding Source fixed on a
-durable physical medium customarily used for software interchange.
-* **b)** Convey the object code in, or embodied in, a physical product (including a
-physical distribution medium), accompanied by a written offer, valid for at least
-three years and valid for as long as you offer spare parts or customer support for
-that product model, to give anyone who possesses the object code either (1) a copy of
-the Corresponding Source for all the software in the product that is covered by this
-License, on a durable physical medium customarily used for software interchange, for
-a price no more than your reasonable cost of physically performing this conveying of
-source, or (2) access to copy the Corresponding Source from a network server at no
-charge.
-* **c)** Convey individual copies of the object code with a copy of the written offer to
-provide the Corresponding Source. This alternative is allowed only occasionally and
-noncommercially, and only if you received the object code with such an offer, in
-accord with subsection 6b.
-* **d)** Convey the object code by offering access from a designated place (gratis or for
-a charge), and offer equivalent access to the Corresponding Source in the same way
-through the same place at no further charge. You need not require recipients to copy
-the Corresponding Source along with the object code. If the place to copy the object
-code is a network server, the Corresponding Source may be on a different server
-(operated by you or a third party) that supports equivalent copying facilities,
-provided you maintain clear directions next to the object code saying where to find
-the Corresponding Source. Regardless of what server hosts the Corresponding Source,
-you remain obligated to ensure that it is available for as long as needed to satisfy
-these requirements.
-* **e)** Convey the object code using peer-to-peer transmission, provided you inform
-other peers where the object code and Corresponding Source of the work are being
-offered to the general public at no charge under subsection 6d.
-
-A separable portion of the object code, whose source code is excluded from the
-Corresponding Source as a System Library, need not be included in conveying the
-object code work.
-
-A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, which
-means any tangible personal property which is normally used for personal, family, or
-household purposes, or (2) anything designed or sold for incorporation into a
-dwelling. In determining whether a product is a consumer product, doubtful cases
-shall be resolved in favor of coverage. For a particular product received by a
-particular user, &ldquo;normally used&rdquo; refers to a typical or common use of
-that class of product, regardless of the status of the particular user or of the way
-in which the particular user actually uses, or expects or is expected to use, the
-product. A product is a consumer product regardless of whether the product has
-substantial commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-&ldquo;Installation Information&rdquo; for a User Product means any methods,
-procedures, authorization keys, or other information required to install and execute
-modified versions of a covered work in that User Product from a modified version of
-its Corresponding Source. The information must suffice to ensure that the continued
-functioning of the modified object code is in no case prevented or interfered with
-solely because modification has been made.
-
-If you convey an object code work under this section in, or with, or specifically for
-use in, a User Product, and the conveying occurs as part of a transaction in which
-the right of possession and use of the User Product is transferred to the recipient
-in perpetuity or for a fixed term (regardless of how the transaction is
-characterized), the Corresponding Source conveyed under this section must be
-accompanied by the Installation Information. But this requirement does not apply if
-neither you nor any third party retains the ability to install modified object code
-on the User Product (for example, the work has been installed in ROM).
-
-The requirement to provide Installation Information does not include a requirement to
-continue to provide support service, warranty, or updates for a work that has been
-modified or installed by the recipient, or for the User Product in which it has been
-modified or installed. Access to a network may be denied when the modification itself
-materially and adversely affects the operation of the network or violates the rules
-and protocols for communication across the network.
-
-Corresponding Source conveyed, and Installation Information provided, in accord with
-this section must be in a format that is publicly documented (and with an
-implementation available to the public in source code form), and must require no
-special password or key for unpacking, reading or copying.
-
-### 7. Additional Terms.
-
-&ldquo;Additional permissions&rdquo; are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions. Additional
-permissions that are applicable to the entire Program shall be treated as though they
-were included in this License, to the extent that they are valid under applicable
-law. If additional permissions apply only to part of the Program, that part may be
-used separately under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-When you convey a copy of a covered work, you may at your option remove any
-additional permissions from that copy, or from any part of it. (Additional
-permissions may be written to require their own removal in certain cases when you
-modify the work.) You may place additional permissions on material, added by you to a
-covered work, for which you have or can give appropriate copyright permission.
-
-Notwithstanding any other provision of this License, for material you add to a
-covered work, you may (if authorized by the copyright holders of that material)
-supplement the terms of this License with terms:
-
-* **a)** Disclaiming warranty or limiting liability differently from the terms of
-sections 15 and 16 of this License; or
-* **b)** Requiring preservation of specified reasonable legal notices or author
-attributions in that material or in the Appropriate Legal Notices displayed by works
-containing it; or
-* **c)** Prohibiting misrepresentation of the origin of that material, or requiring that
-modified versions of such material be marked in reasonable ways as different from the
-original version; or
-* **d)** Limiting the use for publicity purposes of names of licensors or authors of the
-material; or
-* **e)** Declining to grant rights under trademark law for use of some trade names,
-trademarks, or service marks; or
-* **f)** Requiring indemnification of licensors and authors of that material by anyone
-who conveys the material (or modified versions of it) with contractual assumptions of
-liability to the recipient, for any liability that these contractual assumptions
-directly impose on those licensors and authors.
-
-All other non-permissive additional terms are considered &ldquo;further
-restrictions&rdquo; within the meaning of section 10. If the Program as you received
-it, or any part of it, contains a notice stating that it is governed by this License
-along with a term that is a further restriction, you may remove that term. If a
-license document contains a further restriction but permits relicensing or conveying
-under this License, you may add to a covered work material governed by the terms of
-that license document, provided that the further restriction does not survive such
-relicensing or conveying.
-
-If you add terms to a covered work in accord with this section, you must place, in
-the relevant source files, a statement of the additional terms that apply to those
-files, or a notice indicating where to find the applicable terms.
-
-Additional terms, permissive or non-permissive, may be stated in the form of a
-separately written license, or stated as exceptions; the above requirements apply
-either way.
-
-### 8. Termination.
-
-You may not propagate or modify a covered work except as expressly provided under
-this License. Any attempt otherwise to propagate or modify it is void, and will
-automatically terminate your rights under this License (including any patent licenses
-granted under the third paragraph of section 11).
-
-However, if you cease all violation of this License, then your license from a
-particular copyright holder is reinstated (a) provisionally, unless and until the
-copyright holder explicitly and finally terminates your license, and (b) permanently,
-if the copyright holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-Moreover, your license from a particular copyright holder is reinstated permanently
-if the copyright holder notifies you of the violation by some reasonable means, this
-is the first time you have received notice of violation of this License (for any
-work) from that copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-Termination of your rights under this section does not terminate the licenses of
-parties who have received copies or rights from you under this License. If your
-rights have been terminated and not permanently reinstated, you do not qualify to
-receive new licenses for the same material under section 10.
-
-### 9. Acceptance Not Required for Having Copies.
-
-You are not required to accept this License in order to receive or run a copy of the
-Program. Ancillary propagation of a covered work occurring solely as a consequence of
-using peer-to-peer transmission to receive a copy likewise does not require
-acceptance. However, nothing other than this License grants you permission to
-propagate or modify any covered work. These actions infringe copyright if you do not
-accept this License. Therefore, by modifying or propagating a covered work, you
-indicate your acceptance of this License to do so.
-
-### 10. Automatic Licensing of Downstream Recipients.
-
-Each time you convey a covered work, the recipient automatically receives a license
-from the original licensors, to run, modify and propagate that work, subject to this
-License. You are not responsible for enforcing compliance by third parties with this
-License.
-
-An &ldquo;entity transaction&rdquo; is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an organization, or
-merging organizations. If propagation of a covered work results from an entity
-transaction, each party to that transaction who receives a copy of the work also
-receives whatever licenses to the work the party's predecessor in interest had or
-could give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if the predecessor
-has it or can get it with reasonable efforts.
-
-You may not impose any further restrictions on the exercise of the rights granted or
-affirmed under this License. For example, you may not impose a license fee, royalty,
-or other charge for exercise of rights granted under this License, and you may not
-initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging
-that any patent claim is infringed by making, using, selling, offering for sale, or
-importing the Program or any portion of it.
-
-### 11. Patents.
-
-A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The work thus
-licensed is called the contributor's &ldquo;contributor version&rdquo;.
-
-A contributor's &ldquo;essential patent claims&rdquo; are all patent claims owned or
-controlled by the contributor, whether already acquired or hereafter acquired, that
-would be infringed by some manner, permitted by this License, of making, using, or
-selling its contributor version, but do not include claims that would be infringed
-only as a consequence of further modification of the contributor version. For
-purposes of this definition, &ldquo;control&rdquo; includes the right to grant patent
-sublicenses in a manner consistent with the requirements of this License.
-
-Each contributor grants you a non-exclusive, worldwide, royalty-free patent license
-under the contributor's essential patent claims, to make, use, sell, offer for sale,
-import and otherwise run, modify and propagate the contents of its contributor
-version.
-
-In the following three paragraphs, a &ldquo;patent license&rdquo; is any express
-agreement or commitment, however denominated, not to enforce a patent (such as an
-express permission to practice a patent or covenant not to sue for patent
-infringement). To &ldquo;grant&rdquo; such a patent license to a party means to make
-such an agreement or commitment not to enforce a patent against the party.
-
-If you convey a covered work, knowingly relying on a patent license, and the
-Corresponding Source of the work is not available for anyone to copy, free of charge
-and under the terms of this License, through a publicly available network server or
-other readily accessible means, then you must either (1) cause the Corresponding
-Source to be so available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner consistent with
-the requirements of this License, to extend the patent license to downstream
-recipients. &ldquo;Knowingly relying&rdquo; means you have actual knowledge that, but
-for the patent license, your conveying the covered work in a country, or your
-recipient's use of the covered work in a country, would infringe one or more
-identifiable patents in that country that you have reason to believe are valid.
-
-If, pursuant to or in connection with a single transaction or arrangement, you
-convey, or propagate by procuring conveyance of, a covered work, and grant a patent
-license to some of the parties receiving the covered work authorizing them to use,
-propagate, modify or convey a specific copy of the covered work, then the patent
-license you grant is automatically extended to all recipients of the covered work and
-works based on it.
-
-A patent license is &ldquo;discriminatory&rdquo; if it does not include within the
-scope of its coverage, prohibits the exercise of, or is conditioned on the
-non-exercise of one or more of the rights that are specifically granted under this
-License. You may not convey a covered work if you are a party to an arrangement with
-a third party that is in the business of distributing software, under which you make
-payment to the third party based on the extent of your activity of conveying the
-work, and under which the third party grants, to any of the parties who would receive
-the covered work from you, a discriminatory patent license (a) in connection with
-copies of the covered work conveyed by you (or copies made from those copies), or (b)
-primarily for and in connection with specific products or compilations that contain
-the covered work, unless you entered into that arrangement, or that patent license
-was granted, prior to 28 March 2007.
-
-Nothing in this License shall be construed as excluding or limiting any implied
-license or other defenses to infringement that may otherwise be available to you
-under applicable patent law.
-
-### 12. No Surrender of Others' Freedom.
-
-If conditions are imposed on you (whether by court order, agreement or otherwise)
-that contradict the conditions of this License, they do not excuse you from the
-conditions of this License. If you cannot convey a covered work so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not convey it at all. For example, if you
-agree to terms that obligate you to collect a royalty for further conveying from
-those to whom you convey the Program, the only way you could satisfy both those terms
-and this License would be to refrain entirely from conveying the Program.
-
-### 13. Use with the GNU Affero General Public License.
-
-Notwithstanding any other provision of this License, you have permission to link or
-combine any covered work with a work licensed under version 3 of the GNU Affero
-General Public License into a single combined work, and to convey the resulting work.
-The terms of this License will continue to apply to the part which is the covered
-work, but the special requirements of the GNU Affero General Public License, section
-13, concerning interaction through a network will apply to the combination as such.
-
-### 14. Revised Versions of this License.
-
-The Free Software Foundation may publish revised and/or new versions of the GNU
-General Public License from time to time. Such new versions will be similar in spirit
-to the present version, but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies that
-a certain numbered version of the GNU General Public License &ldquo;or any later
-version&rdquo; applies to it, you have the option of following the terms and
-conditions either of that numbered version or of any later version published by the
-Free Software Foundation. If the Program does not specify a version number of the GNU
-General Public License, you may choose any version ever published by the Free
-Software Foundation.
-
-If the Program specifies that a proxy can decide which future versions of the GNU
-General Public License can be used, that proxy's public statement of acceptance of a
-version permanently authorizes you to choose that version for the Program.
-
-Later license versions may give you additional or different permissions. However, no
-additional obligations are imposed on any author or copyright holder as a result of
-your choosing to follow a later version.
-
-### 15. Disclaimer of Warranty.
-
-THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
-QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
-DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-### 16. Limitation of Liability.
-
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
-COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS
-PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
-INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE
-OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE
-WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-### 17. Interpretation of Sections 15 and 16.
-
-If the disclaimer of warranty and limitation of liability provided above cannot be
-given local legal effect according to their terms, reviewing courts shall apply local
-law that most closely approximates an absolute waiver of all civil liability in
-connection with the Program, unless a warranty or assumption of liability accompanies
-a copy of the Program in return for a fee.
-
-END OF TERMS AND CONDITIONS
-
-## How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible use to
-the public, the best way to achieve this is to make it free software which everyone
-can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest to attach them
-to the start of each source file to most effectively state the exclusion of warranty;
-and each file should have at least the &ldquo;copyright&rdquo; line and a pointer to
-where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program does terminal interaction, make it output a short notice like this
-when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type 'show c' for details.
-
-The hypothetical commands 'show w' and 'show c' should show the appropriate parts of
-the General Public License. Of course, your program's commands might be different;
-for a GUI interface, you would use an &ldquo;about box&rdquo;.
-
-You should also get your employer (if you work as a programmer) or school, if any, to
-sign a &ldquo;copyright disclaimer&rdquo; for the program, if necessary. For more
-information on this, and how to apply and follow the GNU GPL, see
-&lt;<http://www.gnu.org/licenses/>&gt;.
-
-The GNU General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may consider it
-more useful to permit linking proprietary applications with the library. If this is
-what you want to do, use the GNU Lesser General Public License instead of this
-License. But first, please read
-&lt;<http://www.gnu.org/philosophy/why-not-lgpl.html>&gt;.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index ccc46a010..000000000
--- a/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# QuasselDroid-ng
-
-[![Build Status](https://img.shields.io/jenkins/s/https/ci.kuschku.de/QuasselDroid-ng.svg)](https://ci.kuschku.de/job/QuasselDroid-ng/)
-[![Release Version](http://github-release-version.herokuapp.com/github/justjanne/QuasselDroid-ng/release.svg?style=flat)](https://github.com/justjanne/QuasselDroid-ng/releases)
-
-Quassel is a distributed, decentralized IRC client, written using C++ and Qt.
-QuasselDroid is a pure-java client for the Quassel core, allowing you to connect
-to your Quassel core using your Android ™ phone.
-
-*Inspired by and based on [QuasselDroid](https://github.com/sandsmark/QuasselDroid)*
-
-![Screenshot of QuasselDroid on Phone and Tablet](https://projects.kuschku.de/quasseldroid/assets/devices.png)
-
-##Build Requirements
-
-QuasselDroid requires you to have the latest version of gradle installed, and 
-a recent version of the Android SDK installed (and configured via the
-environment variable ANDROID_HOME)
-
-QuasselDroid uses the following libraries (although these are automatically
-downloaded from maven central):
-
-* [**AndroidSlidingUpPanel**](https://github.com/justjanne/AndroidSlidingUpPanel)
-  Apache 2.0
-* [**libquassel-java**](https://github.com/justjanne/libquassel-java)
-  LGPL 3.0
-* [**Guava**](https://github.com/google/guava)
-  Apache 2.0
-* [**Joda-Time**](https://github.com/JodaOrg/joda-time/)
-  Apache 2.0
-* [**Joda-Convert**](https://github.com/JodaOrg/joda-convert)
-  Apache 2.0
-* [**Material Drawer**](https://github.com/mikepenz/MaterialDrawer)
-  Apache 2.0
-* [**Material Dialogs**](https://github.com/google/guava)
-  MIT
-* [**ButterKnife**](https://github.com/JakeWharton/butterknife/)
-  Apache 2.0
-* [**Android Support Libraries**](http://developer.android.com/tools/support-library/index.html)
-  Apache 2.0  
-  *Android Support Library requires the corresponding package to be installed in
-  the SDK manager*
-
-##Building
-
-The build process uses gradle, and requires it to be available as command
-"gradle". Use the `install.sh` script to pull and build the dependencies.
-
-Run `gradle tasks` to see possible tasks, `gradle assembleRelease` to assemble a
-release build and `gradle installDebug` to install a debug build on a device
-connected via `adb`.
-
-To sign your releases, [generate a keypair](http://developer.android.com/tools/publishing/app-signing.html)
-and create a file named `signing.gradle` in the `app/` folder with the following
-content to let gradle automatically sign your builds.
-
-```
-    storeFile=/path/to/your/keystore/here.keystore
-    storePassword=passwordofyourkeystorehere
-    keyAlias=nameofyourkeyhere
-    keyPassword=passwordofyourkeyhere
-```
-
-##Note
-
-This is a very early alpha version, and should not be used as daily driver
-just yet.
-
-##Authors
-
-*(in chronological order of appearance)*
-
-* **Frederik M. J. Vestre** (freqmod)  
-  Initial qdatastream deserialization attempts
-* **Martin "Java Sucks" Sandsmark** (sandsmark)  
-  Previous protocol implementation, previous (de)serializers, project (de)moralizer
-* **Magnus Fjell** (magnuf)  
-  Legacy UI, Previous Android stuff
-* **Ken Børge Viktil** (Kenji)  
-  Legacy UI, Previous Android stuff
-* **Janne Koschinski** (justJanne)  
-  New deserialization, Current UI version, Annotation Processors, Push Notification frontend
-* **Pierre-Hugues Husson** (phhusson)  
-  Push Notification backend
-
-##History
-
-The project was originally started by freqmod in December 2010 as a simple PoC, and then expanded by magnuf, sandsmark and Kenji until late 2014 into a usable Android app. At that time justJanne started a first fork to introduce Holo design, then rebased that fork and turned it into a pull request. Later finding more and more missing features, and more and more bugs, justJanne ended up rewrite large parts of the code, and became the sole maintainer in late 2015.
-
-As it became obvious that it would be increasingly harder to properly maintain the software, justJanne decided to rewrite it around that time, and implement the full protocol (not just a subset) this time around, also focusing on better design this time.
-
-The older implementation is still available at <https://github.com/sandsmark/QuasselDroid>.
-
-##License
-
-> 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, see &lt;<http://www.gnu.org/licenses/>&gt;.
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index bfeb86063..000000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-apply plugin: 'com.android.application'
-apply plugin: 'me.tatarka.retrolambda'
-apply plugin: 'com.neenbedankt.android-apt'
-
-dependencies {
-    repositories {
-        flatDir {
-            dirs 'libs'
-        }
-    }
-}
-
-if (project.hasProperty("storeFile")) {
-    android {
-        signingConfigs {
-            release {
-                storeFile file(project.property("storeFile"))
-                storePassword project.property("storePassword")
-                keyAlias project.property("keyAlias")
-                keyPassword project.property("keyPassword")
-            }
-        }
-
-        buildTypes {
-            release {
-                signingConfig signingConfigs.release
-            }
-            beta {
-                signingConfig signingConfigs.release
-            }
-        }
-    }
-}
-
-def getGitHash = { ->
-    def stdout = new ByteArrayOutputStream()
-    exec {
-        commandLine 'git', 'rev-parse', '--short', 'HEAD'
-        standardOutput = stdout
-    }
-    return stdout.toString().trim()
-}
-
-def versionPropsFile = file('version.properties')
-def versionBuild = 0
-if (versionPropsFile.exists() && versionPropsFile.canRead()) {
-    def Properties versionProps = new Properties()
-
-    versionProps.load(new FileInputStream(versionPropsFile))
-    def runTasks = gradle.startParameter.taskNames
-    versionBuild = Integer.valueOf(versionProps['VERSION_BUILD'].toString())
-    if (':app:assembleBeta' in runTasks || 'assembleBeta' in runTasks || ':app:assembleRelease' in runTasks || 'assembleRelease' in runTasks || ':app:assemblebeta' in runTasks || 'assemblebeta' in runTasks || ':app:assemblerelease' in runTasks || 'assemblerelease' in runTasks) {
-        println "Increasing version number"
-        versionBuild = versionBuild + 1
-    }
-    versionProps['VERSION_BUILD'] = versionBuild.toString()
-    versionProps.store(versionPropsFile.newWriter(), null)
-} else {
-    // Get jenkins build number from environment
-    versionBuild = Integer.valueOf(System.getenv("BUILD_NUMBER"))
-}
-
-
-def rawVersionName = "0.2.0"
-
-android {
-    compileSdkVersion 24
-    buildToolsVersion "24.0.2"
-
-    defaultConfig {
-        applicationId "com.iskrembilen.quasseldroid"
-        minSdkVersion 16
-        targetSdkVersion 24
-        versionCode versionBuild
-        versionName rawVersionName + " Build #" + versionBuild
-        buildConfigField "String", "VERSION_HASH", "\"${getGitHash()}\""
-    }
-    defaultConfig {
-        vectorDrawables.useSupportLibrary = true
-    }
-    buildTypes {
-        release {
-            minifyEnabled true
-            shrinkResources true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-
-            applicationVariants.all { variant ->
-                variant.outputs.each { output ->
-                    if (output.zipAlign) {
-                        def fileName = output.outputFile.name
-                                .replace(".apk", String.format("-%s-build%d.apk", rawVersionName, versionBuild))
-                                .replace("app-", "QuasselDroidNG-")
-                        output.outputFile = new File(output.outputFile.parent, fileName)
-                    }
-                }
-            }
-        }
-
-        beta {
-            initWith release
-            applicationIdSuffix ".beta"
-        }
-
-        debug {
-            applicationIdSuffix ".debug"
-
-            minifyEnabled true
-            shrinkResources true
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-        }
-    }
-    applicationVariants.all { variant ->
-        variant.resValue "string", "versionName", variant.versionName
-        variant.resValue "string", "versionCode", String.valueOf(versionBuild)
-        variant.resValue "string", "versionHash", getGitHash()
-    }
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_1_8
-        targetCompatibility JavaVersion.VERSION_1_7
-    }
-    packagingOptions {
-        exclude 'META-INF/DEPENDENCIES.txt'
-        exclude 'META-INF/LICENSE.txt'
-        exclude 'META-INF/NOTICE.txt'
-        exclude 'META-INF/NOTICE'
-        exclude 'META-INF/LICENSE'
-        exclude 'META-INF/DEPENDENCIES'
-        exclude 'META-INF/notice.txt'
-        exclude 'META-INF/license.txt'
-        exclude 'META-INF/dependencies.txt'
-        exclude 'META-INF/LGPL2.1'
-    }
-    lintOptions {
-        abortOnError false
-    }
-}
-
-
-dependencies {
-    testCompile 'junit:junit:4.12'
-
-    // General Java libs
-    compile 'com.google.guava:guava:19.0'
-    compile 'org.greenrobot:eventbus:3.0.0'
-
-    compile 'net.danlew:android.joda:2.9.4.1'
-    compile 'org.joda:joda-convert:1.8'
-
-    // UI Libs
-    compile 'com.bignerdranch.android:expandablerecyclerview:2.0.4'
-    compile(name: 'library-release', ext: 'aar')
-    // This dependency can be removed as soon as the requires ressources are copied over.
-    compile('com.mikepenz:materialdrawer:5.0.3@aar') { transitive = true }
-    compile('com.github.afollestad.material-dialogs:core:0.8.5.3@aar') { transitive = true }
-    compile('com.github.afollestad.material-dialogs:commons:0.8.5.3@aar') { transitive = true }
-    compile 'com.afollestad:material-cab:0.1.12'
-    compile 'com.jenzz:materialpreference:1.3'
-
-    // ORM
-    apt "com.github.Raizlabs.DBFlow:dbflow-processor:3.1.1"
-    compile "com.github.Raizlabs.DBFlow:dbflow-core:3.1.1"
-    compile "com.github.Raizlabs.DBFlow:dbflow:3.1.1"
-
-    // Appcompat
-    compile 'com.android.support:appcompat-v7:24.2.0'
-    compile 'com.android.support:design:24.2.0'
-    compile 'com.android.support:support-v4:24.2.0'
-    compile 'com.android.support:recyclerview-v7:24.2.0'
-    compile 'com.android.support:preference-v14:24.2.0'
-    compile 'com.android.support:cardview-v7:24.2.0'
-
-    // SSL
-    compile 'org.cryptacular:cryptacular:1.1.0'
-
-    // Reactive Libs
-    compile 'io.reactivex:rxandroid:1.2.1'
-    compile 'io.reactivex:rxjava:1.1.6'
-    compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
-    compile 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:0.4.0'
-
-    // Crashreports
-    compile 'ch.acra:acra:4.9.0'
-
-    // UI autobinding
-    compile 'com.jakewharton:butterknife:7.0.1'
-}
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 000000000..49634d1c5
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,559 @@
+import com.android.build.gradle.AppExtension
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.*
+import org.jetbrains.kotlin.gradle.plugin.KaptAnnotationProcessorOptions
+import org.jetbrains.kotlin.gradle.plugin.KaptExtension
+import java.io.ByteArrayOutputStream
+import java.util.*
+
+apply {
+  plugin("com.android.application")
+  plugin("kotlin-android")
+  plugin("kotlin-kapt")
+}
+
+android {
+  compileSdkVersion(26)
+  buildToolsVersion("26.0.0")
+
+  signingConfigs {
+    val signing = project.rootProject.properties("signing.properties")
+    if (signing != null) {
+      create("release") {
+        storeFile = file(signing.getProperty("storeFile"))
+        storePassword = signing.getProperty("storePassword")
+        keyAlias = signing.getProperty("keyAlias")
+        keyPassword = signing.getProperty("keyPassword")
+      }
+    }
+  }
+
+  defaultConfig {
+    minSdkVersion(15)
+    targetSdkVersion(26)
+
+    applicationId = "de.kuschku.quasseldroid_ng.test"
+    versionCode = 1
+    versionName = cmd("git", "describe", "--tags", "HEAD") ?: "1.0.0"
+
+    buildConfigField("String", "GIT_HEAD", "\"${cmd("git", "rev-parse", "HEAD") ?: ""}\"")
+    buildConfigField("long", "GIT_COMMIT_DATE", "${cmd("git", "show", "-s", "--format=%ct") ?: 0}L")
+
+    signingConfig = signingConfigs.getByName("release")
+
+    setProperty("archivesBaseName", "QuasselDroidNG-$versionName")
+
+    javaCompileOptions {
+      annotationProcessorOptions {
+        arguments = mapOf(
+          "room.schemaLocation" to "$projectDir/schemas"
+        )
+      }
+    }
+  }
+
+  buildTypes {
+    getByName("release") {
+      //proguardFiles("proguard-rules.pro")
+    }
+
+    getByName("debug") {
+      applicationIdSuffix = "debug"
+    }
+  }
+}
+
+val appCompatVersion = "26.1.0"
+val appArchVersion = "1.0.0-alpha9-1"
+dependencies {
+  implementation(kotlin("stdlib"))
+
+  implementation(appCompat("support-v4")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appCompat("appcompat-v7")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appCompat("design")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appCompat("customtabs")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appCompat("cardview-v7")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appCompat("recyclerview-v7")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+
+  implementation(appArch("lifecycle", "runtime", version = "1.0.0")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  implementation(appArch("lifecycle", "extensions")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  kapt(appArch("lifecycle", "compiler"))
+
+  implementation(appArch("persistence.room", "runtime")) {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  kapt(appArch("persistence.room", "compiler"))
+
+  implementation(appArch("paging", "runtime", version = "1.0.0-alpha1")) {
+    exclude(group = "junit", module = "junit")
+  }
+
+  implementation("org.threeten:threetenbp:1.3.6") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+
+  implementation("com.jakewharton:butterknife:8.7.0") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  kapt("com.jakewharton:butterknife-compiler:8.7.0")
+
+  implementation("ch.acra:acra:4.9.2") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+
+  implementation(project(":invokerannotations"))
+  kapt(project(":invokergenerator"))
+
+  testImplementation("android.arch.persistence.room:testing:1.0.0-alpha9") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  testImplementation("junit:junit:4.12") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+
+  androidTestImplementation("com.android.support.test:runner:0.5") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+  androidTestImplementation("com.android.support.test:rules:0.5") {
+    exclude(group = "com.android.support", module = "support-media-compat")
+  }
+}
+
+kapt {
+  arguments(delegateClosureOf<KaptAnnotationProcessorOptions> {
+    arg("eventBusIndex", "de.kuschku.quasseldroid_ng.EventBusIndex")
+  })
+}
+
+fun cmd(vararg command: String) = try {
+  val stdOut = ByteArrayOutputStream()
+  exec {
+    commandLine(*command)
+    standardOutput = stdOut
+  }
+  stdOut.toString(Charsets.UTF_8.name()).trim()
+} catch (e: Throwable) {
+  e.printStackTrace()
+  null
+}
+
+fun Project.properties(fileName: String): Properties? {
+  val file = file(fileName)
+  if (!file.exists())
+    return null
+  val props = Properties()
+  props.load(file.inputStream())
+  return props
+}
+
+/**
+ * Builds the dependency notation for the named AppCompat [module] at the given [version].
+ *
+ * @param module simple name of the AppCompat module, for example "cardview-v7".
+ * @param version optional desired version, null implies [appCompatVersion].
+ */
+fun appCompat(module: String, version: String? = null)
+  = "com.android.support:$module:${version ?: appCompatVersion}"
+
+/**
+ * Builds the dependency notation for the named AppArch [module] at the given [version].
+ *
+ * @param module simple name of the AppArch module, for example "persistence.room".
+ * @param submodule simple name of the AppArch submodule, for example "runtime".
+ * @param version optional desired version, null implies [appCompatVersion].
+ */
+fun appArch(module: String, submodule: String, version: String? = null)
+  = "android.arch.$module:$submodule:${version ?: appArchVersion}"
+
+fun Project.android(f: AppExtension.() -> Unit)
+  = configure(f)
+
+fun Project.kapt(f: KaptExtension.() -> Unit)
+  = configure(f)
+
+fun DependencyHandlerScope.androidJacocoAgent(dependencyNotation: Any)
+  = "androidJacocoAgent"(dependencyNotation)
+
+fun DependencyHandlerScope.androidJacocoAgent(dependencyNotation: String,
+                                              dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidJacocoAgent"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidJacocoAnt(dependencyNotation: Any)
+  = "androidJacocoAnt"(dependencyNotation)
+
+fun DependencyHandlerScope.androidJacocoAnt(dependencyNotation: String,
+                                            dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidJacocoAnt"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestAnnotationProcessor(dependencyNotation: Any)
+  = "androidTestAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestAnnotationProcessor(dependencyNotation: String,
+                                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestApk(dependencyNotation: Any)
+  = "androidTestApk"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestApk(dependencyNotation: String,
+                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestImplementation(dependencyNotation: Any)
+  = "androidTestImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestImplementation(dependencyNotation: String,
+                                                     dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestJackPlugin(dependencyNotation: Any)
+  = "androidTestJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestJackPlugin(dependencyNotation: String,
+                                                 dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestProvided(dependencyNotation: Any)
+  = "androidTestProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestProvided(dependencyNotation: String,
+                                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.androidTestWearApp(dependencyNotation: Any)
+  = "androidTestWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.androidTestWearApp(dependencyNotation: String,
+                                              dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "androidTestWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.annotationProcessor(dependencyNotation: Any)
+  = "annotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.annotationProcessor(dependencyNotation: String,
+                                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "annotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.apk(dependencyNotation: Any)
+  = "apk"(dependencyNotation)
+
+fun DependencyHandlerScope.apk(dependencyNotation: String,
+                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "apk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.archives(dependencyNotation: Any)
+  = "archives"(dependencyNotation)
+
+fun DependencyHandlerScope.archives(dependencyNotation: String,
+                                    dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "archives"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.implementation(dependencyNotation: Any)
+  = "implementation"(dependencyNotation)
+
+fun DependencyHandlerScope.implementation(dependencyNotation: String,
+                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "implementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugAnnotationProcessor(dependencyNotation: Any)
+  = "debugAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.debugAnnotationProcessor(dependencyNotation: String,
+                                                    dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugApk(dependencyNotation: Any)
+  = "debugApk"(dependencyNotation)
+
+fun DependencyHandlerScope.debugApk(dependencyNotation: String,
+                                    dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugImplementation(dependencyNotation: Any)
+  = "debugImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.debugImplementation(dependencyNotation: String,
+                                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugJackPlugin(dependencyNotation: Any)
+  = "debugJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.debugJackPlugin(dependencyNotation: String,
+                                           dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugProvided(dependencyNotation: Any)
+  = "debugProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.debugProvided(dependencyNotation: String,
+                                         dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.debugWearApp(dependencyNotation: Any)
+  = "debugWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.debugWearApp(dependencyNotation: String,
+                                        dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "debugWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.default(dependencyNotation: Any)
+  = "default"(dependencyNotation)
+
+fun DependencyHandlerScope.default(dependencyNotation: String,
+                                   dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "default"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.jackPlugin(dependencyNotation: Any)
+  = "jackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.jackPlugin(dependencyNotation: String,
+                                      dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "jackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kapt(dependencyNotation: Any)
+  = "kapt"(dependencyNotation)
+
+fun DependencyHandlerScope.kapt(dependencyNotation: String,
+                                dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kapt"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptAndroidTest(dependencyNotation: Any)
+  = "kaptAndroidTest"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptAndroidTest(dependencyNotation: String,
+                                           dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptAndroidTest"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptDebug(dependencyNotation: Any)
+  = "kaptDebug"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptDebug(dependencyNotation: String,
+                                     dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptDebug"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptRelease(dependencyNotation: Any)
+  = "kaptRelease"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptRelease(dependencyNotation: String,
+                                       dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptRelease"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptTest(dependencyNotation: Any)
+  = "kaptTest"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptTest(dependencyNotation: String,
+                                    dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptTest"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptTestDebug(dependencyNotation: Any)
+  = "kaptTestDebug"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptTestDebug(dependencyNotation: String,
+                                         dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptTestDebug"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.kaptTestRelease(dependencyNotation: Any)
+  = "kaptTestRelease"(dependencyNotation)
+
+fun DependencyHandlerScope.kaptTestRelease(dependencyNotation: String,
+                                           dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "kaptTestRelease"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.provided(dependencyNotation: Any)
+  = "provided"(dependencyNotation)
+
+fun DependencyHandlerScope.provided(dependencyNotation: String,
+                                    dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "provided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseAnnotationProcessor(dependencyNotation: Any)
+  = "releaseAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseAnnotationProcessor(dependencyNotation: String,
+                                                      dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseApk(dependencyNotation: Any)
+  = "releaseApk"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseApk(dependencyNotation: String,
+                                      dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseImplementation(dependencyNotation: Any)
+  = "releaseImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseImplementation(dependencyNotation: String,
+                                                 dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseJackPlugin(dependencyNotation: Any)
+  = "releaseJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseJackPlugin(dependencyNotation: String,
+                                             dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseProvided(dependencyNotation: Any)
+  = "releaseProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseProvided(dependencyNotation: String,
+                                           dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.releaseWearApp(dependencyNotation: Any)
+  = "releaseWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.releaseWearApp(dependencyNotation: String,
+                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "releaseWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testAnnotationProcessor(dependencyNotation: Any)
+  = "testAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.testAnnotationProcessor(dependencyNotation: String,
+                                                   dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testApk(dependencyNotation: Any)
+  = "testApk"(dependencyNotation)
+
+fun DependencyHandlerScope.testApk(dependencyNotation: String,
+                                   dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testImplementation(dependencyNotation: Any)
+  = "testImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.testImplementation(dependencyNotation: String,
+                                              dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugAnnotationProcessor(dependencyNotation: Any)
+  = "testDebugAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugAnnotationProcessor(dependencyNotation: String,
+                                                        dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugApk(dependencyNotation: Any)
+  = "testDebugApk"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugApk(dependencyNotation: String,
+                                        dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugImplementation(dependencyNotation: Any)
+  = "testDebugImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugImplementation(dependencyNotation: String,
+                                                   dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugJackPlugin(dependencyNotation: Any)
+  = "testDebugJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugJackPlugin(dependencyNotation: String,
+                                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugProvided(dependencyNotation: Any)
+  = "testDebugProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugProvided(dependencyNotation: String,
+                                             dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testDebugWearApp(dependencyNotation: Any)
+  = "testDebugWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.testDebugWearApp(dependencyNotation: String,
+                                            dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testDebugWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testJackPlugin(dependencyNotation: Any)
+  = "testJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.testJackPlugin(dependencyNotation: String,
+                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testProvided(dependencyNotation: Any)
+  = "testProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.testProvided(dependencyNotation: String,
+                                        dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseAnnotationProcessor(dependencyNotation: Any)
+  = "testReleaseAnnotationProcessor"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseAnnotationProcessor(dependencyNotation: String,
+                                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseAnnotationProcessor"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseApk(dependencyNotation: Any)
+  = "testReleaseApk"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseApk(dependencyNotation: String,
+                                          dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseApk"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseImplementation(dependencyNotation: Any)
+  = "testReleaseImplementation"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseImplementation(dependencyNotation: String,
+                                                     dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseImplementation"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseJackPlugin(dependencyNotation: Any)
+  = "testReleaseJackPlugin"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseJackPlugin(dependencyNotation: String,
+                                                 dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseJackPlugin"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseProvided(dependencyNotation: Any)
+  = "testReleaseProvided"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseProvided(dependencyNotation: String,
+                                               dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseProvided"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testReleaseWearApp(dependencyNotation: Any)
+  = "testReleaseWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.testReleaseWearApp(dependencyNotation: String,
+                                              dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testReleaseWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.testWearApp(dependencyNotation: Any)
+  = "testWearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.testWearApp(dependencyNotation: String,
+                                       dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "testWearApp"(dependencyNotation, dependencyConfiguration)
+
+fun DependencyHandlerScope.wearApp(dependencyNotation: Any)
+  = "wearApp"(dependencyNotation)
+
+fun DependencyHandlerScope.wearApp(dependencyNotation: String,
+                                   dependencyConfiguration: ExternalModuleDependency.() -> Unit)
+  = "wearApp"(dependencyNotation, dependencyConfiguration)
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 08f3c6edc..d77f40f4e 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,8 +1,8 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in /opt/android-sdk/tools/proguard/proguard-android.txt
+# in /usr/lib/android-sdk/tools/proguard/proguard-android.txt
 # You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
+# directive in build.gradle.kts.
 #
 # For more details, see
 #   http://developer.android.com/guide/developing/tools/proguard.html
@@ -16,71 +16,13 @@
 #   public *;
 #}
 
--dontobfuscate
-
--dontwarn javax.**
--dontwarn com.google.**
--dontwarn sndroid.**
--dontwarn java.**
--dontwarn sun.**
--dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
--dontwarn com.nineoldandroids.view.animation.AnimatorProxy
-
--keepclasseswithmembernames class de.kuschku.** {
-    <methods>;
-    <fields>;
-}
-
--keepclassmembers class de.kuschku.** {
-    <methods>;
-    <fields>;
-}
-
--keepclasses class de.kuschku.** {
-    <methods>;
-    <fields>;
-}
-
-
-#########################################
-## Bufferknife                         ##
-#########################################
--keep class butterknife.** { *; }
--dontwarn butterknife.internal.**
--keep class **$$ViewBinder { *; }
-
--keepclasseswithmembernames class * {
-    @butterknife.* <fields>;
-}
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
 
--keepclasseswithmembernames class * {
-    @butterknife.* <methods>;
-}
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
 
-
-#########################################
-## EventBus                            ##
-#########################################
--keepclassmembers class ** {
-    public void onEvent*(***);
-}
-
--keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
-    <init>(java.lang.Throwable);
-}
-
-#########################################
-## RetroLambda                         ##
-#########################################
--dontwarn java.lang.invoke.*
-
-
-#########################################
-## DBFlow                              ##
-#########################################
--keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; }
-
-#########################################
-## AppCompat SearchView                ##
-#########################################
--keep class android.support.v7.widget.SearchView { *; }
\ No newline at end of file
+# The project is GPL anyway, obfuscation is useless.
+-dontobfuscate
diff --git a/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt b/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt
new file mode 100644
index 000000000..d3c465393
--- /dev/null
+++ b/app/src/androidTest/java/de/kuschku/quasseldroid_ng/ExampleInstrumentedTest.kt
@@ -0,0 +1,22 @@
+package de.kuschku.quasseldroid_ng
+
+import android.support.test.InstrumentationRegistry
+import android.support.test.runner.AndroidJUnit4
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+    @Test
+    fun useAppContext() {
+        // Context of the app under test.
+        val appContext = InstrumentationRegistry.getTargetContext()
+        assertEquals("de.kuschku.quasseldroid_ng", appContext.packageName)
+    }
+}
diff --git a/app/src/beta/res/mipmap-hdpi/ic_launcher.png b/app/src/beta/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 56f5cc5f5efc490b410618b8b1aa28b16a373d1d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3625
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
vu@Xd2lIS%0D2v-i`_6G@Wmab8|3Ur_0_$XUQTg}*00000NkvXXu0mjfb8G18

diff --git a/app/src/beta/res/mipmap-mdpi/ic_launcher.png b/app/src/beta/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 288e2a703b4f05b21b55ad49693dd1ae34fa6767..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2155
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

diff --git a/app/src/beta/res/mipmap-xhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 0a69007e9d6db2002eeaf2e44d07feae3c98ce44..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5244
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
Cj2*K8

diff --git a/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index bcba70459015762ec70574a5b5e6238ba08fac40..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8754
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
NC3$sFt*ph@{{wZ`9;yHU

diff --git a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 5e8cbc29bba2ee8df2f3e245bcca6cc79b95a226..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12672
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
B%PIf>

diff --git a/app/src/beta/res/values/colors.xml b/app/src/beta/res/values/colors.xml
deleted file mode 100644
index 7d2a19715..000000000
--- a/app/src/beta/res/values/colors.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <color name="colorPrimary">#ea3415</color>
-    <color name="colorPrimaryDark">#c73218</color>
-</resources>
diff --git a/app/src/beta/res/values/strings.xml b/app/src/beta/res/values/strings.xml
deleted file mode 100644
index 361e8cfbd..000000000
--- a/app/src/beta/res/values/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="appName">QuasselBeta</string>
-</resources>
diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/app/src/debug/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index f02f233b234fe04d3e7a1d5dce8795bf34a1332d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3695
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
N002ovPDHLkV1jO56}tcc

diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/app/src/debug/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 340ff3d1c529e6369b13682158699d4b32f55526..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2215
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

diff --git a/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 0030cbf7d5586f47799781df57c0c4149d15e274..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5299
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
FV1npjVx#~7

diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 033fbd78ef7a3b28198bbb70d7c7adfd618c7d01..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8677
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

diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 601e278f167ad46b52ec1f35f03e2f9cab08494e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12655
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

diff --git a/app/src/debug/res/values/colors.xml b/app/src/debug/res/values/colors.xml
index 4da0869ba..c30aee972 100644
--- a/app/src/debug/res/values/colors.xml
+++ b/app/src/debug/res/values/colors.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
 <resources>
-    <color name="colorPrimary">#009688</color>
-    <color name="colorPrimaryDark">#088278</color>
+  <color name="colorPrimary">#F57C00</color>
+  <color name="colorPrimaryDark">#E65100</color>
+  <color name="colorAccent">#afb42b</color>
 </resources>
diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml
deleted file mode 100644
index e3c49d182..000000000
--- a/app/src/debug/res/values/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="appName">QuasselDebug</string>
-</resources>
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ca96139bc..37bc00cb4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,183 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="de.kuschku.quasseldroid_ng">
-
-    <uses-permission android:name="android.permission.INTERNET"/>
-
-    <application
-        android:name=".QuasselDroidNG"
-        android:allowBackup="true"
-        android:icon="@mipmap/ic_launcher"
-        android:label="@string/appName"
-        android:supportsRtl="true">
-
-        <service android:name=".service.QuasselService"/>
-
-        <activity
-            android:name=".ui.LoginActivity"
-            android:label="@string/appName"
-            android:launchMode="singleTask"
-            android:theme="@style/AppTheme.Light">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-
-        <activity
-            android:name=".ui.chat.MainActivity"
-            android:label="@string/appName"
-            android:parentActivityName=".ui.LoginActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.chat.ChannelDetailActivity"
-            android:label="@string/titleChannelDetails"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.chatlist.ChatListListActivity"
-            android:label="@string/titleEditChatLists"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.chatlist.ChatListEditActivity"
-            android:label="@string/titleEditChatList"
-            android:parentActivityName=".ui.coresettings.chatlist.ChatListListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.chatlist.ChatListCreateActivity"
-            android:label="@string/titleCreateChatList"
-            android:parentActivityName=".ui.coresettings.chatlist.ChatListListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.network.NetworkListActivity"
-            android:label="@string/titleEditNetworks"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.network.NetworkEditActivity"
-            android:label="@string/titleEditNetwork"
-            android:parentActivityName=".ui.coresettings.network.NetworkListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.network.NetworkCreateActivity"
-            android:label="@string/titleCreateNetwork"
-            android:parentActivityName=".ui.coresettings.network.NetworkListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.network.server.NetworkServerListActivity"
-            android:label="@string/titleEditNetworkServers"
-            android:parentActivityName=".ui.coresettings.network.NetworkEditActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.identity.IdentityListActivity"
-            android:label="@string/titleEditIdentities"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.identity.IdentityEditActivity"
-            android:label="@string/titleEditIdentity"
-            android:parentActivityName=".ui.coresettings.identity.IdentityListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.identity.IdentityCreateActivity"
-            android:label="@string/titleCreateIdentity"
-            android:parentActivityName=".ui.coresettings.identity.IdentityListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.identity.nick.IdentityNickListActivity"
-            android:label="@string/titleEditNicks"
-            android:parentActivityName=".ui.coresettings.identity.IdentityEditActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.network.server.NetworkServerEditActivity"
-            android:label="@string/titleEditNetworkServer"
-            android:parentActivityName=".ui.coresettings.network.server.NetworkServerListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.ignore.IgnoreListActivity"
-            android:label="@string/titleEditIgnoreList"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.ignore.IgnoreRuleEditActivity"
-            android:label="@string/titleEditIgnoreRule"
-            android:parentActivityName=".ui.coresettings.ignore.IgnoreListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.aliases.AliasListActivity"
-            android:label="@string/titleEditAliases"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.coresettings.aliases.AliasEditActivity"
-            android:label="@string/titleEditAlias"
-            android:parentActivityName=".ui.coresettings.aliases.AliasListActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-        <activity
-            android:name=".ui.setup.AccountSetupActivity"
-            android:label="@string/titleAccountSetup"
-            android:parentActivityName=".ui.setup.AccountSelectActivity"
-            android:theme="@style/SetupTheme"/>
-
-        <activity
-            android:name=".ui.setup.AccountSelectActivity"
-            android:label="@string/titleAccountSelection"
-            android:parentActivityName=".ui.LoginActivity"
-            android:theme="@style/SetupTheme"/>
-
-        <activity
-            android:name=".ui.setup.CoreSetupActivity"
-            android:label="@string/titleCoreSetup"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/SetupTheme"/>
-
-        <activity
-            android:name=".ui.settings.SettingsActivity"
-            android:label="@string/titleSettings"
-            android:parentActivityName=".ui.chat.MainActivity"
-            android:theme="@style/AppTheme.Light"/>
-
-    </application>
+  package="de.kuschku.quasseldroid_ng">
+
+  <uses-permission android:name="android.permission.INTERNET" />
+  <uses-permission android:name="android.permission.READ_LOGS" />
+
+  <application
+    android:name=".QuasseldroidNG"
+    android:label="@string/app_name"
+    android:icon="@mipmap/ic_launcher"
+    android:theme="@style/AppTheme"
+    android:allowBackup="true"
+    android:supportsRtl="true">
+    <activity
+      android:name=".ui.MainActivity"
+      android:exported="true"
+      android:label="@string/app_name"
+      android:theme="@style/SplashTheme">
+      <intent-filter>
+        <action android:name="android.intent.action.MAIN" />
+        <category android:name="android.intent.category.LAUNCHER" />
+      </intent-filter>
+    </activity>
+    <service
+      android:name=".service.QuasselService"
+      android:label="@string/connection_service"
+      android:description="@string/connection_service_description"
+      android:exported="false" />
+  </application>
 
 </manifest>
diff --git a/app/src/main/java/de/kuschku/libquassel/BusProvider.java b/app/src/main/java/de/kuschku/libquassel/BusProvider.java
deleted file mode 100644
index 944cd7ccc..000000000
--- a/app/src/main/java/de/kuschku/libquassel/BusProvider.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel;
-
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.NoSubscriberEvent;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.UUID;
-
-import de.kuschku.libquassel.events.BacklogReceivedEvent;
-import de.kuschku.libquassel.events.LagChangedEvent;
-
-public class BusProvider {
-    @NonNull
-    private final String id;
-    @NonNull
-    public EventBus handle;
-    @NonNull
-    public EventBus dispatch;
-    @NonNull
-    public EventBus event;
-
-    public BusProvider() {
-        this.id = UUID.randomUUID().toString();
-        this.handle = new EventBus();
-        BusHandler handleHandler = new BusHandler("QHANDLE");
-        this.handle.register(handleHandler);
-        this.dispatch = new EventBus();
-        BusHandler dispatchHandler = new BusHandler("QDISPATCH");
-        this.dispatch.register(dispatchHandler);
-        this.event = new EventBus();
-        BusHandler eventHandler = new BusHandler("QEVENT");
-        this.event.register(eventHandler);
-    }
-
-    public void handle(Object o) {
-        this.handle.post(o);
-    }
-
-    public void dispatch(Object o) {
-        this.dispatch.post(o);
-    }
-
-    public void sendEvent(Object o) {
-        this.event.post(o);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "BusProvider{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-
-    public static class BusHandler {
-        private final String identifier;
-
-        public BusHandler(String identifier) {
-            this.identifier = identifier;
-        }
-
-        @Subscribe(threadMode = ThreadMode.MAIN)
-        public void onEvent(NoSubscriberEvent event) {
-            if (!(event.originalEvent instanceof LagChangedEvent) && !(event.originalEvent instanceof BacklogReceivedEvent))
-                Log.e(identifier, String.valueOf(event));
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/CoreConnection.java b/app/src/main/java/de/kuschku/libquassel/CoreConnection.java
deleted file mode 100644
index 251b900be..000000000
--- a/app/src/main/java/de/kuschku/libquassel/CoreConnection.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.Log;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import javax.security.cert.X509Certificate;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.client.ClientData;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.events.HandshakeFailedEvent;
-import de.kuschku.libquassel.events.UnknownCertificateEvent;
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.objects.types.ClientInit;
-import de.kuschku.libquassel.primitives.QMetaTypeRegistry;
-import de.kuschku.libquassel.primitives.serializers.ProtocolSerializer;
-import de.kuschku.libquassel.primitives.types.Protocol;
-import de.kuschku.libquassel.protocols.DatastreamPeer;
-import de.kuschku.libquassel.protocols.LegacyPeer;
-import de.kuschku.libquassel.protocols.RemotePeer;
-import de.kuschku.libquassel.ssl.CertificateManager;
-import de.kuschku.libquassel.ssl.UnknownCertificateException;
-import de.kuschku.util.accounts.ServerAddress;
-import de.kuschku.util.niohelpers.WrappedChannel;
-
-import static de.kuschku.libquassel.primitives.QMetaType.Type.UInt;
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-/**
- * Starts a connection to a core and handles the data in the backend.
- * Provides a Client object for interacting with a friendly tree structure of the data.
- *
- * @author Janne Koschinski
- */
-public class CoreConnection {
-
-    @NonNull
-    private final ServerAddress address;
-    @NonNull
-    private final ClientData clientData;
-    @NonNull
-    private final BusProvider busProvider;
-    @NonNull
-    private final Client client;
-    @NonNull
-    private final CertificateManager certificateManager;
-    @Nullable
-    private ExecutorService outputExecutor;
-    @Nullable
-    private EndableThread inputThread;
-    @Nullable
-    private EndableThread heartbeatThread;
-    @Nullable
-    private RemotePeer remotePeer;
-    @Nullable
-    private WrappedChannel channel;
-    @Nullable
-    private Socket socket;
-    @NonNull
-    private ConnectionChangeEvent.Status status = ConnectionChangeEvent.Status.DISCONNECTED;
-    private X509Certificate[] peerCertificateChain;
-
-    public CoreConnection(@NonNull final ServerAddress address,
-                          @NonNull final ClientData clientData,
-                          @NonNull final BusProvider busProvider,
-                          @NonNull final Client client,
-                          @NonNull CertificateManager certificateManager) {
-        this.address = address;
-        this.clientData = clientData;
-        this.busProvider = busProvider;
-        this.client = client;
-        this.certificateManager = certificateManager;
-    }
-
-    @NonNull
-    public ConnectionChangeEvent.Status getStatus() {
-        return status;
-    }
-
-    /**
-     * This method opens a socket to the specified address and starts the connection process.
-     *
-     * @param supportsKeepAlive If the connection may use keepAlive
-     * @throws IOException
-     */
-    public void open(boolean supportsKeepAlive) throws IOException {
-        assertNotNull(client);
-
-        status = ConnectionChangeEvent.Status.HANDSHAKE;
-        client.setConnectionStatus(status);
-
-        // Intialize socket
-        socket = new Socket();
-        if (supportsKeepAlive) socket.setKeepAlive(true);
-        socket.connect(new InetSocketAddress(address.host, address.port), 10000);
-
-        // Wrap socket in channel for nio functions
-        channel = WrappedChannel.ofSocket(socket);
-
-        busProvider.event.register(this);
-
-        // Create executor for write events
-        outputExecutor = Executors.newSingleThreadExecutor();
-
-        // Execute handshake
-        handshake();
-    }
-
-    /**
-     * Closes the connection and interrupts all threads this connection has spawned.
-     */
-    public void close() {
-        assertNotNull(client);
-
-        client.setConnectionStatus(ConnectionChangeEvent.Status.DISCONNECTED);
-
-        // We can do this because we clean up the file handles ourselves
-        if (inputThread != null) inputThread.end();
-        if (heartbeatThread != null) heartbeatThread.end();
-        if (outputExecutor != null) outputExecutor.shutdownNow();
-
-        // Which we do exactly here
-        try {
-            if (channel != null) channel.close();
-            if (socket != null) socket.close();
-        } catch (Exception e) {
-            // We won’t report these issues, as these don’t matter to us anyway anymore
-        }
-    }
-
-    @Nullable
-    public ExecutorService getOutputExecutor() {
-        return outputExecutor;
-    }
-
-    @NonNull
-    public ClientData getClientData() {
-        return clientData;
-    }
-
-    @NonNull
-    public WrappedChannel getChannel() {
-        assertNotNull(channel);
-
-        return channel;
-    }
-
-    @Nullable
-    public RemotePeer getRemotePeer() {
-        return remotePeer;
-    }
-
-    @Nullable
-    public Socket getSocket() {
-        return socket;
-    }
-
-    /**
-     * Starts the first handshake phase with negotiating the protocol and if SSL or compression are to be used.
-     *
-     * @throws IOException
-     */
-    private void handshake() throws IOException {
-        assertNotNull(channel);
-
-        // Start protocol handshake with magic version and feature flags
-        QMetaTypeRegistry.serialize(UInt, channel, 0x42b33f00 | clientData.flags.flags);
-
-        // Send list of supported protocols
-        for (int supportedProtocol : clientData.supportedProtocols) {
-            QMetaTypeRegistry.serialize(UInt, channel, supportedProtocol);
-        }
-        QMetaTypeRegistry.serialize(UInt, channel, 0x01 << 31);
-
-        // Spawn and start a new read thread
-        inputThread = new ReadThread();
-        heartbeatThread = new HeartbeatThread();
-        inputThread.start();
-    }
-
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onEventAsync(HandshakeFailedEvent event) {
-        this.close();
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull ConnectionChangeEvent event) {
-        this.status = event.status;
-        if (event.status == ConnectionChangeEvent.Status.INITIALIZING_DATA && heartbeatThread != null)
-            heartbeatThread.start();
-    }
-
-    public void setCompression(boolean supportsCompression) {
-        if (supportsCompression)
-            channel = WrappedChannel.withCompression(getChannel());
-    }
-
-    private void setSSL(boolean supportsSSL) {
-        if (supportsSSL) {
-            try {
-                channel = WrappedChannel.withSSL(getChannel(), certificateManager, address, client::setCertificateChain);
-            } catch (Exception e) {
-                if (e.getCause() instanceof UnknownCertificateException) {
-                    busProvider.sendEvent(new UnknownCertificateEvent((UnknownCertificateException) e.getCause()));
-                } else {
-                    busProvider.sendEvent(new GeneralErrorEvent(e));
-                }
-                close();
-            }
-        }
-    }
-
-    /**
-     * A runnable that reads from the channel and calls the functions responsible for processing the read data.
-     */
-    private class ReadThread extends EndableThread {
-        private boolean running = true;
-
-        public ReadThread() {
-            setName(getClass().getSimpleName());
-        }
-
-        @Override
-        public void run() {
-            assertNotNull(client);
-
-            try {
-                boolean hasReadPreHandshake = false;
-                while (running) {
-                    if (!hasReadPreHandshake) {
-                        final ByteBuffer buffer = ByteBuffer.allocate(4);
-                        assertNotNull(buffer);
-                        getChannel().read(buffer);
-
-                        final Protocol protocol = ProtocolSerializer.get().deserialize(buffer);
-
-                        // Wrap socket in SSL context if ssl is enabled
-                        setSSL(protocol.protocolFlags.supportsSSL);
-                        // Wrap socket in deflater if compression is enabled
-                        setCompression(protocol.protocolFlags.supportsCompression);
-
-                        // Initialize remote peer
-                        switch (protocol.protocolVersion) {
-                            case 0x01:
-                                remotePeer = new LegacyPeer(CoreConnection.this, busProvider);
-                                break;
-                            case 0x02:
-                                remotePeer = new DatastreamPeer(CoreConnection.this, busProvider);
-                                break;
-                            default:
-                                busProvider.sendEvent(new HandshakeFailedEvent("Core too new: Protocol Unsupported"));
-                                close();
-                                return;
-                        }
-
-                        // Mark prehandshake as read
-                        hasReadPreHandshake = true;
-                        assertNotNull(heartbeatThread);
-
-                        // Send client data to core
-                        String clientDate = new SimpleDateFormat("MMM dd yyyy HH:mm:ss", Locale.US).format(new Date());
-                        assertNotNull(clientDate);
-                        busProvider.dispatch(new HandshakeFunction(new ClientInit(
-                                clientDate,
-                                protocol.protocolFlags.supportsSSL,
-                                getClientData().identifier,
-                                false,
-                                getClientData().protocolVersion
-                        )));
-                    } else {
-                        remotePeer.processMessage();
-                    }
-                }
-            } catch (SocketException e) {
-                Log.e("libquassel", "Socket closed while reading");
-                client.setConnectionStatus(ConnectionChangeEvent.Status.DISCONNECTED);
-            } catch (Exception e) {
-                busProvider.sendEvent(new GeneralErrorEvent(e));
-            }
-        }
-
-        @Override
-        public void end() {
-            running = false;
-        }
-    }
-
-    private class HeartbeatThread extends EndableThread {
-        private boolean running = true;
-
-        public HeartbeatThread() {
-            setName(getClass().getSimpleName());
-        }
-
-        @Override
-        public void run() {
-            try {
-                assertNotNull(client);
-
-                while (running) {
-                    Heartbeat heartbeat = new Heartbeat();
-                    busProvider.dispatch(heartbeat);
-
-                    Thread.sleep(30 * 1000);
-                }
-            } catch (InterruptedException ignored) {
-            }
-        }
-
-        @Override
-        public void end() {
-            running = false;
-            this.interrupt();
-        }
-    }
-
-    private abstract class EndableThread extends Thread {
-        public abstract void end();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java b/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java
deleted file mode 100644
index c2ba4b244..000000000
--- a/app/src/main/java/de/kuschku/libquassel/IProtocolHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel;
-
-import android.support.annotation.NonNull;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.objects.types.ClientInitAck;
-import de.kuschku.libquassel.objects.types.ClientInitReject;
-import de.kuschku.libquassel.objects.types.ClientLoginAck;
-import de.kuschku.libquassel.objects.types.ClientLoginReject;
-import de.kuschku.libquassel.objects.types.SessionInit;
-
-public interface IProtocolHandler {
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    void onEventMainThread(InitDataFunction packedFunc);
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    void onEventMainThread(InitRequestFunction packedFunc);
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    void onEventMainThread(RpcCallFunction packedFunc);
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    void onEventMainThread(SyncFunction packedFunc);
-
-    @Subscribe
-    void onEvent(ClientInitReject message);
-
-    @Subscribe
-    void onEvent(ClientInitAck message);
-
-    @Subscribe
-    void onEvent(ClientLoginAck message);
-
-    @Subscribe
-    void onEvent(ClientLoginReject message);
-
-    @Subscribe
-    void onEvent(SessionInit message);
-
-    @Subscribe
-    void onEvent(Heartbeat message);
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    void onEventMainThread(HeartbeatReply message);
-
-    @NonNull
-    Client getClient();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java b/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java
deleted file mode 100644
index eca9bc5c2..000000000
--- a/app/src/main/java/de/kuschku/libquassel/ProtocolHandler.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel;
-
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-import org.joda.time.DateTime;
-import org.joda.time.Interval;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.CoreSetupRequiredEvent;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.events.HandshakeFailedEvent;
-import de.kuschku.libquassel.events.LoginRequireEvent;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.objects.types.ClientInitAck;
-import de.kuschku.libquassel.objects.types.ClientInitReject;
-import de.kuschku.libquassel.objects.types.ClientLoginAck;
-import de.kuschku.libquassel.objects.types.ClientLoginReject;
-import de.kuschku.libquassel.objects.types.CoreSetupAck;
-import de.kuschku.libquassel.objects.types.SessionInit;
-import de.kuschku.libquassel.syncables.SyncableRegistry;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.invokers.IClient;
-import de.kuschku.libquassel.syncables.types.invokers.InvokerRegistry;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class ProtocolHandler implements IProtocolHandler {
-    @NonNull
-    public final Client client;
-    @NonNull
-    private final BusProvider busProvider;
-
-    public ProtocolHandler(@NonNull BusProvider busProvider, @NonNull Client client) {
-        this.busProvider = busProvider;
-        this.busProvider.handle.register(this);
-        this.busProvider.event.register(this);
-        this.client = client;
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull InitDataFunction packedFunc) {
-        try {
-            SyncableObject object = SyncableRegistry.from(packedFunc);
-            assertNotNull(object);
-
-            client.initObject(packedFunc.className, packedFunc.objectName, object);
-        } catch (Exception e) {
-            busProvider.sendEvent(new GeneralErrorEvent(e));
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull InitRequestFunction packedFunc) {
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull RpcCallFunction packedFunc) {
-        try {
-            IClient.get().invoke(packedFunc, client);
-        } catch (Exception e) {
-            busProvider.sendEvent(new GeneralErrorEvent(e));
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull SyncFunction packedFunc) {
-        try {
-            final Object syncable = client.unsafe_getObjectByIdentifier(packedFunc.className, packedFunc.objectName);
-
-            if (syncable == null) {
-                Log.w("ProtocolHandler", String.format("Sync Failed: %s::%s(%s, %s)", packedFunc.className, packedFunc.methodName, packedFunc.objectName, packedFunc.params));
-                if (client.connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA)
-                    client.bufferSync(packedFunc);
-            } else {
-                if (syncable instanceof SyncableObject && !((SyncableObject) syncable).initialized()) {
-                    client.initObject(packedFunc.className, packedFunc.objectName, (SyncableObject) syncable);
-                } else {
-                    InvokerRegistry.invoke(packedFunc, syncable);
-                }
-            }
-        } catch (Exception e) {
-            busProvider.sendEvent(new GeneralErrorEvent(e, packedFunc.toString()));
-        }
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull ClientInitReject message) {
-        busProvider.sendEvent(new HandshakeFailedEvent(message.Error));
-    }
-
-    @Subscribe
-    public void onEvent(ClientInitAck message) {
-        client.setCore(message);
-
-        if (client.core().Configured) {
-            // Send an event to notify that login is necessary
-            busProvider.event.postSticky(new LoginRequireEvent(false));
-        } else {
-            // Send an event to notify that the core is not yet set up
-            busProvider.event.postSticky(new CoreSetupRequiredEvent());
-        }
-    }
-
-    @Subscribe
-    public void onEvent(CoreSetupAck message) {
-        busProvider.event.postSticky(new LoginRequireEvent(false));
-    }
-
-    @Subscribe
-    public void onEvent(ClientLoginAck message) {
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull ClientLoginReject message) {
-        busProvider.sendEvent(new LoginRequireEvent(true));
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull SessionInit message) {
-        client.setConnectionStatus(ConnectionChangeEvent.Status.INITIALIZING_DATA);
-
-        client.init(message.SessionState);
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull Heartbeat heartbeat) {
-        busProvider.dispatch(new HeartbeatReply(heartbeat));
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull HeartbeatReply heartbeat) {
-        DateTime dateTime = DateTime.now().toDateTimeISO();
-        Interval interval = new Interval(heartbeat.dateTime, dateTime);
-        long roundtrip = interval.toDurationMillis();
-        long lag = (long) (roundtrip * 0.5);
-
-        client.setLatency(lag);
-    }
-
-    @Subscribe
-    public void onEvent(@NonNull ConnectionChangeEvent event) {
-    }
-
-    @NonNull
-    @Override
-    public Client getClient() {
-        return client;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/QuasselClient.java b/app/src/main/java/de/kuschku/libquassel/QuasselClient.java
deleted file mode 100644
index bcfc9b11f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/QuasselClient.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.client.ClientData;
-import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage;
-import de.kuschku.libquassel.ssl.CertificateManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.util.accounts.ServerAddress;
-import de.kuschku.util.buffermetadata.BufferMetaDataManager;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class QuasselClient {
-    @NonNull
-    public final BusProvider provider;
-    @NonNull
-    public final ProtocolHandler handler;
-    @NonNull
-    public final Client client;
-    @NonNull
-    public final CertificateManager certificateManager;
-    @NonNull
-    private final ClientData data;
-    public CoreConnection connection;
-
-    public QuasselClient(@NonNull BusProvider provider, @NonNull ClientData data, @NonNull CertificateManager certificateManager, @NonNull BacklogStorage backlogStorage, @NonNull BufferMetaDataManager metaDataManager, String coreId) {
-        assertNotNull(provider);
-        assertNotNull(data);
-        assertNotNull(certificateManager);
-        assertNotNull(backlogStorage);
-
-        this.provider = provider;
-        this.data = data;
-        this.certificateManager = certificateManager;
-        this.client = new Client(provider, backlogStorage, metaDataManager, coreId);
-        this.handler = new ProtocolHandler(provider, this.client);
-    }
-
-    public void connect(@NonNull ServerAddress address) {
-        assertNotNull(client);
-        this.connection = new CoreConnection(address, data, provider, client, certificateManager);
-    }
-
-    public void disconnect() {
-        this.connection.close();
-        this.client.networkManager().networks().clear();
-        for (int bufferId : this.client.bufferManager().bufferIds()) {
-            this.client.backlogStorage().markBufferUnused(bufferId);
-        }
-        this.client.bufferManager().bufferIds().clear();
-        this.client.bufferManager().buffers().clear();
-        if (client.bufferViewManager() != null) {
-            for (QBufferViewConfig config : client.bufferViewManager().bufferViewConfigs()) {
-                config.networkList().clear();
-            }
-            client.bufferViewManager().bufferViewConfigs().clear();
-            client.bufferViewManager().bufferViewConfigMap().clear();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/AClient.java b/app/src/main/java/de/kuschku/libquassel/client/AClient.java
deleted file mode 100644
index d63f2584b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/AClient.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.NonNull;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.objects.types.ClientLogin;
-import de.kuschku.libquassel.objects.types.Command;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-import static de.kuschku.util.AndroidAssert.fail;
-import static junit.framework.Assert.assertNotNull;
-
-public abstract class AClient<T extends AClient<T>> extends SyncableObject<T> implements QClient {
-    @Override
-    public void sendInput(BufferInfo info, String message) {
-        smartRpc("sendInput(BufferInfo,QString)", info, message);
-    }
-
-    @Override
-    public void sendInput(@NonNull Command command) {
-        sendInput(command.buffer, command.command);
-    }
-
-    @Override
-    public void createIdentity(QIdentity identity, Map<String, QVariant> certs) {
-        smartRpcTyped("createIdentity(Identity,QVariantMap)", new QVariant<>(identity), new QVariant<>(certs));
-    }
-
-    @Override
-    public void updateIdentity(int id, Map<String, QVariant> serialized) {
-        smartRpcTyped("updateIdentity(IdentityId,QVariantMap)", new QVariant<>("IdentityId", id), new QVariant<>(serialized));
-    }
-
-    @Override
-    public void removeIdentity(int id) {
-        smartRpcTyped("removeIdentity(IdentityId)", new QVariant<>("IdentityId", id));
-    }
-
-    @Override
-    public void createNetwork(NetworkInfo info) {
-        createNetwork(info, Collections.emptyList());
-    }
-
-    @Override
-    public void createNetwork(NetworkInfo info, List<String> persistentChannels) {
-        smartRpcTyped("createNetwork(NetworkInfo,QStringList)", new QVariant<>(info), new QVariant<>(QMetaType.Type.QStringList, persistentChannels));
-    }
-
-    @Override
-    public void updateNetwork(NetworkInfo info) {
-        smartRpc("updateNetwork(NetworkInfo)", new QVariant<>(info));
-    }
-
-    @Override
-    public void removeNetwork(int id) {
-        smartRpcTyped("removeNetwork(NetworkId)", new QVariant<>("NetworkId", id));
-    }
-
-    @Override
-    public void changePassword(String username, String oldPassword, String newPassword) {
-        smartRpc("changePassword(PeerPtr,QString,QString,QString)", new QVariant<>("PeerPtr", 0x0000000000000000L), new QVariant<>(username), new QVariant<>(oldPassword), new QVariant<>(newPassword));
-    }
-
-    @Override
-    public void _update(T from) {
-        fail("This is not a real syncable");
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-        fail("This is not a real syncable");
-    }
-
-    @Override
-    public void login(@NonNull String username, @NonNull String password) {
-        assertNotNull(provider);
-
-        provider.dispatch(new HandshakeFunction(new ClientLogin(username, password)));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java b/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java
deleted file mode 100644
index cb76664d8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/BufferManager.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.events.BacklogInitEvent;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.localtypes.buffers.Buffers;
-import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer;
-import de.kuschku.libquassel.localtypes.buffers.QueryBuffer;
-import de.kuschku.libquassel.localtypes.buffers.StatusBuffer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class BufferManager {
-    @NonNull
-    private final Map<Integer, Buffer> buffers = new HashMap<>();
-    private final Client client;
-
-    private final Map<String, Integer> buffersByNick = new HashMap<>();
-    private final Map<String, Integer> buffersByChannel = new HashMap<>();
-    private final Map<Integer, Integer> statusBuffers = new HashMap<>();
-    private final Map<Integer, ObservableSet<Integer>> buffersByNetwork = new HashMap<>();
-    private final ObservableSet<Integer> bufferIds = new ObservableSet<>();
-    private final Set<Integer> laterRequests = new HashSet<>();
-
-    public BufferManager(Client client) {
-        this.client = client;
-    }
-
-    public void createBuffer(@NonNull Buffer buffer) {
-        buffers.put(buffer.getInfo().id, buffer);
-        bufferIds.add(buffer.getInfo().id);
-        byNetwork(buffer.getInfo().networkId).add(buffer.getInfo().id);
-        updateBufferMapEntries(buffer, buffer.getInfo().name);
-    }
-
-    public void removeBuffer(@IntRange(from = 0) int id) {
-        Buffer buffer = buffers.get(id);
-        if (buffer != null)
-            byNetwork(buffer.getInfo().networkId).remove(id);
-        buffers.remove(id);
-        bufferIds.remove(id);
-    }
-
-    public Buffer buffer(@IntRange(from = 0) int id) {
-        return buffers.get(id);
-    }
-
-    public void updateBufferInfo(@NonNull BufferInfo bufferInfo) {
-        Buffer buffer = buffer(bufferInfo.id);
-        if (buffer == null) return;
-        if (buffer.getInfo().networkId != bufferInfo.networkId) {
-            buffersByNetwork.get(buffer.getInfo().networkId).remove(bufferInfo.id);
-            buffersByNetwork.get(buffer.getInfo().networkId).add(bufferInfo.id);
-        }
-        buffer.setInfo(bufferInfo);
-    }
-
-    public void init(@NonNull List<BufferInfo> bufferInfos) {
-        for (BufferInfo info : bufferInfos) {
-            createBuffer(info);
-            laterRequests.add(info.id);
-        }
-    }
-
-    @NonNull
-    public Map<Integer, Buffer> buffers() {
-        return buffers;
-    }
-
-    public void createBuffer(@NonNull BufferInfo info) {
-        Buffer buffer = Buffers.fromType(info, client);
-        assertNotNull(buffer);
-        createBuffer(buffer);
-        if (client.connectionStatus() != ConnectionChangeEvent.Status.INITIALIZING_DATA) {
-            client.bufferViewManager().checkForNewBuffers(info.id);
-        }
-    }
-
-    public boolean exists(@NonNull BufferInfo info) {
-        return buffers.containsKey(info.id);
-    }
-
-    public void renameBuffer(int bufferId, @NonNull String newName) {
-        Buffer buffer = buffer(bufferId);
-        if (buffer != null) {
-            buffer.renameBuffer(newName);
-            bufferIds().notifyItemChanged(bufferId);
-        }
-    }
-
-    private void updateBufferMapEntries(@NonNull Buffer buffer, String name) {
-        if (buffer instanceof ChannelBuffer) {
-            buffersByChannel.remove(buffer.objectName());
-            buffersByChannel.put(buffer.objectName(name), buffer.getInfo().id);
-        } else if (buffer instanceof QueryBuffer) {
-            buffersByNick.remove(buffer.objectName());
-            buffersByNick.put(buffer.objectName(name), buffer.getInfo().id);
-        } else if (buffer instanceof StatusBuffer) {
-            statusBuffers.remove(buffer.getInfo().networkId);
-            statusBuffers.put(buffer.getInfo().networkId, buffer.getInfo().id);
-        }
-    }
-
-    @Nullable
-    public ChannelBuffer channel(@Nullable QIrcChannel channel) {
-        if (channel == null)
-            return null;
-        if (!buffersByChannel.containsKey(channel.getObjectName()))
-            return null;
-        Buffer buffer = buffer(buffersByChannel.get(channel.getObjectName()));
-        if (!(buffer instanceof ChannelBuffer))
-            return null;
-        return (ChannelBuffer) buffer;
-    }
-
-    @Nullable
-    public QueryBuffer user(@Nullable QIrcUser user) {
-        if (user == null)
-            return null;
-        if (!buffersByNick.containsKey(user.getObjectName()))
-            return null;
-        Buffer buffer = buffer(buffersByNick.get(user.getObjectName()));
-        if (!(buffer instanceof QueryBuffer))
-            return null;
-        return (QueryBuffer) buffer;
-    }
-
-    public ObservableSet<Integer> byNetwork(@IntRange(from = 0) int networkId) {
-        if (!buffersByNetwork.containsKey(networkId))
-            buffersByNetwork.put(networkId, new ObservableSet<>());
-        return buffersByNetwork.get(networkId);
-    }
-
-    @NonNull
-    public ObservableSet<Integer> bufferIds() {
-        return bufferIds;
-    }
-
-    public void doBacklogInit(int amount) {
-        BusProvider provider = client.provider();
-        assertNotNull(provider);
-
-        Set<Integer> visibleBuffers = new HashSet<>();
-        for (QBufferViewConfig bufferConfig : client.bufferViewManager().bufferViewConfigs()) {
-            visibleBuffers.addAll(bufferConfig.bufferIds());
-        }
-        laterRequests.retainAll(visibleBuffers);
-        for (int id : laterRequests) {
-            client.backlogManager().requestBacklogInitial(id, amount);
-        }
-        laterRequests.clear();
-        int waitingMax = client.backlogManager().waitingMax();
-        int waitingCurrently = client.backlogManager().waiting().size();
-
-        provider.sendEvent(new BacklogInitEvent(waitingMax - waitingCurrently, waitingMax));
-
-        client.backlogManager().checkWaiting();
-    }
-
-    public StatusBuffer network(int networkId) {
-        return (StatusBuffer) buffers.get(statusBuffers.get(networkId));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/Client.java b/app/src/main/java/de/kuschku/libquassel/client/Client.java
deleted file mode 100644
index f616da732..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/Client.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.Log;
-import android.util.Pair;
-
-import java.security.cert.X509Certificate;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.CriticalErrorEvent;
-import de.kuschku.libquassel.events.InitEvent;
-import de.kuschku.libquassel.events.LagChangedEvent;
-import de.kuschku.libquassel.events.PasswordChangeEvent;
-import de.kuschku.libquassel.events.StatusMessageEvent;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.objects.types.CoreStatus;
-import de.kuschku.libquassel.objects.types.SessionState;
-import de.kuschku.libquassel.primitives.QMetaTypeRegistry;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.impl.BacklogManager;
-import de.kuschku.libquassel.syncables.types.impl.CoreInfo;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QSyncableObject;
-import de.kuschku.util.buffermetadata.BufferMetaDataManager;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class Client extends AClient {
-    @NonNull
-    private final NetworkManager networkManager;
-    @NonNull
-    private final BufferManager bufferManager;
-    @NonNull
-    private final IdentityManager identityManager;
-    @NonNull
-    private final BacklogStorage backlogStorage;
-    private final List<String> initRequests = new LinkedList<>();
-    @NonNull
-    private final QBacklogManager backlogManager;
-    private final Map<String, List<SyncFunction>> bufferedSyncs = new HashMap<>();
-    private final Map<Integer, Pair<QBufferViewConfig, Integer>> bufferedBuffers = new HashMap<>();
-    private final BufferMetaDataManager metaDataManager;
-    private final String coreId;
-    private int initRequestMax = 0;
-    private QBufferViewManager bufferViewManager;
-    // local
-    private QBufferSyncer bufferSyncer;
-    private QAliasManager aliasManager;
-    private QIgnoreListManager ignoreListManager;
-    private QNetworkConfig globalNetworkConfig;
-    private CoreStatus core;
-    private CoreInfo coreInfo;
-    private long latency;
-    private ConnectionChangeEvent.Status connectionStatus;
-    private int r = 1;
-    private X509Certificate[] certificateChain;
-
-    public Client(@NonNull BusProvider provider, @NonNull BacklogStorage backlogStorage, @NonNull BufferMetaDataManager metaDataManager, String coreId) {
-        this.coreId = coreId;
-        this.provider = provider;
-        this.networkManager = new NetworkManager(this);
-        this.bufferManager = new BufferManager(this);
-        this.identityManager = new IdentityManager();
-        this.backlogStorage = backlogStorage;
-        backlogStorage.setClient(this);
-        this.backlogManager = new BacklogManager(this, backlogStorage);
-        this.backlogManager.init("", provider, this);
-        this.initialized = true;
-        this.metaDataManager = metaDataManager;
-    }
-
-    public QBufferViewManager bufferViewManager() {
-        return bufferViewManager;
-    }
-
-    public QBufferSyncer bufferSyncer() {
-        return bufferSyncer;
-    }
-
-    public QAliasManager aliasManager() {
-        return aliasManager;
-    }
-
-    @NonNull
-    public QBacklogManager backlogManager() {
-        return backlogManager;
-    }
-
-    public QIgnoreListManager ignoreListManager() {
-        return ignoreListManager;
-    }
-
-    public QNetworkConfig globalNetworkConfig() {
-        return globalNetworkConfig;
-    }
-
-    @Override
-    public void _displayMsg(Message msg) {
-        backlogManager.receiveBacklog(msg);
-    }
-
-    @Override
-    public void _displayStatusMsg(String network, String message) {
-        assertNotNull(provider);
-
-        provider.sendEvent(new StatusMessageEvent(network, message));
-    }
-
-    @Override
-    public void _bufferInfoUpdated(@NonNull BufferInfo bufferInfo) {
-        bufferManager.updateBufferInfo(bufferInfo);
-    }
-
-    @Override
-    public void _identityCreated(@NonNull Identity identity) {
-        identityManager.createIdentity(identity);
-        identity.init(String.valueOf(identity.id()), provider, this);
-    }
-
-    @Override
-    public void _identityRemoved(int id) {
-        identityManager.removeIdentity(id);
-    }
-
-    @Override
-    public void _networkCreated(int network) {
-        networkManager.createNetwork(network);
-    }
-
-    @Override
-    public void _networkRemoved(int network) {
-        networkManager.removeNetwork(network);
-    }
-
-    @Override
-    public void _passwordChanged(long peerPtr, boolean success) {
-        assertNotNull(provider);
-
-        if (peerPtr != 0x0000000000000000L)
-            provider.sendEvent(new CriticalErrorEvent("Your core has a critical vulnerability. Please update it."));
-        provider.sendEvent(new PasswordChangeEvent(success));
-    }
-
-    @Override
-    public void ___objectRenamed__(String type, String newName, String oldName) {
-        ((QSyncableObject) unsafe_getObjectByIdentifier(type, oldName)).setObjectName(newName);
-    }
-
-    public synchronized ConnectionChangeEvent.Status connectionStatus() {
-        return connectionStatus;
-    }
-
-    public synchronized void setConnectionStatus(@NonNull ConnectionChangeEvent.Status connectionStatus) {
-        assertNotNull(provider);
-
-        this.connectionStatus = connectionStatus;
-        provider.event.postSticky(new ConnectionChangeEvent(connectionStatus));
-
-        if (connectionStatus == ConnectionChangeEvent.Status.LOADING_BACKLOG) {
-            bufferManager().doBacklogInit(20);
-        } else if (connectionStatus == ConnectionChangeEvent.Status.CONNECTED) {
-            for (int bufferId : bufferManager().bufferIds()) {
-                metaDataManager().hiddendata(coreId(), bufferId);
-            }
-            // FIXME: Init buffer activity state and highlights
-        }
-    }
-
-    @Nullable
-    public Object unsafe_getObjectByIdentifier(@NonNull String className, @NonNull String objectName) {
-        switch (className) {
-            case "AliasManager": {
-                return aliasManager;
-            }
-            case "BacklogManager": {
-                return backlogManager;
-            }
-            case "BufferSyncer": {
-                return bufferSyncer;
-            }
-            case "BufferViewConfig": {
-                if (bufferViewManager == null)
-                    return null;
-
-                return bufferViewManager.bufferViewConfig(Integer.parseInt(objectName));
-            }
-            case "BufferViewManager": {
-                return bufferViewManager;
-            }
-            case "CoreInfo": {
-                return coreInfo;
-            }
-            case "Identity": {
-                if (identityManager == null)
-                    return null;
-                return identityManager.identity(Integer.parseInt(objectName));
-            }
-            case "IgnoreListManager": {
-                return ignoreListManager;
-            }
-            case "IrcChannel": {
-                String[] split = objectName.split("/");
-                if (split.length != 2) {
-                    Log.w("libquassel", "malformatted object name: " + objectName);
-                    return null;
-                }
-                QNetwork network = networkManager.network(Integer.parseInt(split[0]));
-                if (network == null) {
-                    Log.w("libquassel", "Network doesn’t exist yet: " + objectName);
-                    return null;
-                }
-                return network.ircChannel(split[1]);
-            }
-            case "IrcUser": {
-                String[] split = objectName.split("/");
-                if (split.length != 2) {
-                    Log.w("libquassel", "malformatted object name: " + objectName);
-                    return null;
-                }
-                QNetwork network = networkManager.network(Integer.parseInt(split[0]));
-                if (network == null) {
-                    Log.w("libquassel", "Network doesn’t exist yet: " + objectName);
-                    return null;
-                }
-                return network.ircUser(split[1]);
-            }
-            case "Network": {
-                return networkManager.network(Integer.parseInt(objectName));
-            }
-            case "NetworkConfig": {
-                return globalNetworkConfig;
-            }
-            case "NetworkInfo": {
-                QNetwork network = networkManager().network(Integer.parseInt(objectName));
-                if (network == null)
-                    return null;
-                else
-                    return network.networkInfo();
-            }
-            default: {
-                Log.w("libquassel", "Unknown type: " + className + " : " + objectName);
-                return null;
-            }
-        }
-    }
-
-    @Nullable
-    public <T> T getObjectByIdentifier(@NonNull String className, @NonNull String objectName) {
-        Class<T> cl = QMetaTypeRegistry.<T>getType(className).cl;
-        return getObjectByIdentifier(cl, className, objectName);
-    }
-
-    @Nullable
-    public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String objectName) {
-        return getObjectByIdentifier(cl, cl.getSimpleName(), objectName);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Nullable
-    public <T> T getObjectByIdentifier(@NonNull Class<T> cl, @NonNull String className, @NonNull String objectName) {
-        Object obj = unsafe_getObjectByIdentifier(className, objectName);
-        // The fancy version of "instanceof" that works with erased types, too
-        if (obj == null || !cl.isAssignableFrom(obj.getClass()))
-            return null;
-        else
-            return (T) obj;
-    }
-
-    public void init(@NonNull SessionState sessionState) {
-        networkManager.init(sessionState.NetworkIds);
-        identityManager.init(sessionState.Identities);
-        bufferManager.init(sessionState.BufferInfos);
-
-        requestInitObject("BufferSyncer", "");
-        requestInitObject("BufferViewManager", "");
-        requestInitObject("AliasManager", "");
-        requestInitObject("NetworkConfig", "GlobalNetworkConfig");
-        requestInitObject("IgnoreListManager", "");
-        requestInitObject("CoreInfo", "");
-        //sendInitRequest("TransferManager", "");
-        // This thing never gets sent...
-
-        assertNotNull(provider);
-        provider.event.postSticky(new InitEvent(initRequestMax - initRequests.size(), initRequestMax));
-    }
-
-    @NonNull
-    public NetworkManager networkManager() {
-        return networkManager;
-    }
-
-    @NonNull
-    public BufferManager bufferManager() {
-        return bufferManager;
-    }
-
-    @NonNull
-    public IdentityManager identityManager() {
-        return identityManager;
-    }
-
-    public void requestInitObject(@NonNull String className, String objectName) {
-        assertNotNull(provider);
-
-        if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) {
-            initRequests.add(hashName(className, objectName));
-            initRequestMax++;
-        }
-
-        provider.dispatch(new InitRequestFunction(className, objectName));
-    }
-
-    public void initObject(String className, @NonNull String objectName, @NonNull SyncableObject object) {
-        assertNotNull(provider);
-
-        object.init(objectName, provider, this);
-
-        if (connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) {
-            initRequests.remove(hashName(className, objectName));
-            provider.event.postSticky(new InitEvent(initRequestMax - initRequests.size(), initRequestMax));
-            if (initRequests.isEmpty()) {
-                setConnectionStatus(ConnectionChangeEvent.Status.LOADING_BACKLOG);
-            }
-        }
-
-        synchronized (bufferedSyncs) {
-            if (r > 0) r--;
-            else throw new RuntimeException();
-            // Execute cached sync requests
-            if (bufferedSyncs.size() > 0) {
-                String key = hashName(className, objectName);
-                if (bufferedSyncs.containsKey(key)) {
-                    Log.d("libquassel", "Unqueueing syncs: " + className + ":" + objectName);
-                    List<SyncFunction> functions = bufferedSyncs.get(key);
-                    for (SyncFunction function : functions)
-                        provider.handle(function);
-                    bufferedSyncs.remove(key);
-                }
-            }
-            r++;
-        }
-    }
-
-    @NonNull
-    private String hashName(String className, String objectName) {
-        return className + ":" + objectName;
-    }
-
-    public void setLatency(long latency) {
-        assertNotNull(provider);
-
-        this.latency = latency;
-        provider.sendEvent(new LagChangedEvent(latency));
-    }
-
-    public CoreInfo coreInfo() {
-        return coreInfo;
-    }
-
-    public void setCoreInfo(CoreInfo coreInfo) {
-        this.coreInfo = coreInfo;
-    }
-
-    public CoreStatus core() {
-        return core;
-    }
-
-    public void setCore(CoreStatus core) {
-        this.core = core;
-    }
-
-    public long latency() {
-        return latency;
-    }
-
-    public void setBufferSyncer(QBufferSyncer bufferSyncer) {
-        this.bufferSyncer = bufferSyncer;
-    }
-
-    public void setBufferViewManager(QBufferViewManager bufferViewManager) {
-        this.bufferViewManager = bufferViewManager;
-    }
-
-    public void setAliasManager(QAliasManager aliasManager) {
-        this.aliasManager = aliasManager;
-    }
-
-    public void setIgnoreListManager(QIgnoreListManager ignoreListManager) {
-        this.ignoreListManager = ignoreListManager;
-    }
-
-    public void setGlobalNetworkConfig(QNetworkConfig globalNetworkConfig) {
-        this.globalNetworkConfig = globalNetworkConfig;
-    }
-
-    @NonNull
-    public BacklogStorage backlogStorage() {
-        return backlogStorage;
-    }
-
-    public void bufferSync(@NonNull SyncFunction packedFunc) {
-        String key = hashName(packedFunc.className, packedFunc.objectName);
-        if (connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) {
-            Log.d("libquassel", "Queueing sync: " + packedFunc);
-        }
-
-        synchronized (bufferedSyncs) {
-            if (r > 0) r--;
-            else throw new RuntimeException();
-            if (!bufferedSyncs.containsKey(key))
-                bufferedSyncs.put(key, new LinkedList<>());
-            bufferedSyncs.get(key).add(packedFunc);
-            Log.d("libquassel", "Queued syncs: " + bufferedSyncs.keySet());
-            r++;
-        }
-    }
-
-    public void bufferBuffer(QBufferViewConfig bufferViewConfig, int bufferId, int pos) {
-        bufferedBuffers.put(bufferId, Pair.create(bufferViewConfig, pos));
-        Log.d("libquassel", "Queueing buffer: " + bufferId);
-        Log.d("libquassel", "Queued buffers: " + bufferedBuffers.keySet());
-    }
-
-    public void unbufferBuffer(@NonNull BufferInfo info) {
-        if (!bufferManager().exists(info)) {
-            bufferManager().createBuffer(info);
-            Log.d("libquassel", "Creating buffer from message info: " + info.id);
-        }
-        if (bufferedBuffers.containsKey(info.id)) {
-            Pair<QBufferViewConfig, Integer> pair = bufferedBuffers.get(info.id);
-            pair.first._addBuffer(info.id, pair.second);
-            Log.d("libquassel", "Un-Queueing buffer: " + info.id);
-        }
-    }
-
-    @Nullable
-    public BusProvider provider() {
-        return provider;
-    }
-
-    public BufferMetaDataManager metaDataManager() {
-        return metaDataManager;
-    }
-
-    public String coreId() {
-        return coreId;
-    }
-
-    public X509Certificate[] certificateChain() {
-        return certificateChain;
-    }
-
-    public void setCertificateChain(X509Certificate[] certificateChain) {
-        this.certificateChain = certificateChain;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/ClientData.java b/app/src/main/java/de/kuschku/libquassel/client/ClientData.java
deleted file mode 100644
index ed6d7b9a6..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/ClientData.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.NonNull;
-
-import java.util.Arrays;
-
-public class ClientData {
-    /**
-     * The flags the client supports.
-     */
-    @NonNull
-    public final FeatureFlags flags;
-
-    /**
-     * The list of protocols supported, 0x01 is Legacy and 0x02 is Datastream.
-     */
-    @NonNull
-    public final byte[] supportedProtocols;
-
-    /**
-     * A string identifying the client.
-     */
-    @NonNull
-    public final String identifier;
-
-    /**
-     * The protocol version of Quassel internally, for example 10.
-     */
-    public final int protocolVersion;
-
-    public ClientData(@NonNull FeatureFlags flags, @NonNull byte[] supportedProtocols, @NonNull String identifier, int protocolVersion) {
-        this.flags = flags;
-        this.supportedProtocols = supportedProtocols;
-        this.identifier = identifier;
-        this.protocolVersion = protocolVersion;
-    }
-
-    @NonNull
-    public byte[] getSupportedProtocols() {
-        return supportedProtocols;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientData{" +
-                "flags=" + flags +
-                ", supportedProtocols=" + Arrays.toString(supportedProtocols) +
-                ", identifier='" + identifier + '\'' +
-                ", protocolVersion=" + protocolVersion +
-                '}';
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/FeatureFlags.java b/app/src/main/java/de/kuschku/libquassel/client/FeatureFlags.java
deleted file mode 100644
index ab3cd609a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/FeatureFlags.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.NonNull;
-
-public class FeatureFlags {
-    public final boolean supportsSSL;
-    public final boolean supportsCompression;
-    public final byte flags;
-
-    public FeatureFlags(final byte flags) {
-        this.flags = flags;
-        this.supportsSSL = (flags & 0x01) > 0;
-        this.supportsCompression = (flags & 0x02) > 0;
-    }
-
-    public FeatureFlags(final boolean supportsSSL, final boolean supportsCompression) {
-        this.supportsSSL = supportsSSL;
-        this.supportsCompression = supportsCompression;
-        this.flags = (byte) ((this.supportsSSL ? 0x01 : 0x00) |
-                (this.supportsCompression ? 0x02 : 0x00));
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "FeatureFlags{" +
-                "supportsSSL=" + supportsSSL +
-                ", supportsCompression=" + supportsCompression +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java b/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
deleted file mode 100644
index feff60900..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/IdentityManager.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public class IdentityManager {
-    @NonNull
-    private final Map<Integer, QIdentity> identities = new HashMap<>();
-    private final AndroidObservableSortedList<QIdentity> identityList = new AndroidObservableSortedList<>(QIdentity.class, new AndroidObservableSortedList.ItemComparator<QIdentity>() {
-        @Override
-        public int compare(QIdentity o1, QIdentity o2) {
-            if (o1 == null && o2 == null)
-                return 0;
-            if (o1 == null)
-                return 1;
-            if (o2 == null)
-                return -1;
-            return o1.id() - o2.id();
-        }
-
-        @Override
-        public boolean areContentsTheSame(QIdentity oldItem, QIdentity newItem) {
-            return oldItem.equals(newItem);
-        }
-
-        @Override
-        public boolean areItemsTheSame(QIdentity item1, QIdentity item2) {
-            return item1.id() == item2.id();
-        }
-    });
-
-    public void createIdentity(@NonNull QIdentity identity) {
-        identities.put(identity.id(), identity);
-        identityList.add(identity);
-    }
-
-    public void removeIdentity(@IntRange(from = 0) int id) {
-        identityList.remove(identities.remove(id));
-    }
-
-    @Nullable
-    public QIdentity identity(@IntRange(from = 0) int id) {
-        return identities.get(id);
-    }
-
-    public void init(@NonNull List<QIdentity> identities) {
-        for (QIdentity identity : identities) {
-            createIdentity(identity);
-        }
-    }
-
-    public AndroidObservableSortedList<QIdentity> identities() {
-        return identityList;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java b/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
deleted file mode 100644
index 7bc59075f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/NetworkManager.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Observable;
-
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.syncables.types.impl.Network;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class NetworkManager extends Observable {
-    @NonNull
-    private final Map<Integer, QNetwork> networks = new HashMap<>();
-    @NonNull
-    private final AndroidObservableSortedList<QNetwork> list = new AndroidObservableSortedList<QNetwork>(QNetwork.class, new AndroidObservableSortedList.ItemComparator<QNetwork>() {
-        @Override
-        public int compare(QNetwork o1, QNetwork o2) {
-            assertNotNull(o1);
-            assertNotNull(o2);
-
-            String name1 = o1.networkName();
-            String name2 = o2.networkName();
-
-            if (name1 == null && name2 == null) {
-                return 0;
-            } else if (name1 == null) {
-                return 1;
-            } else if (name2 == null) {
-                return -1;
-            } else {
-                return name1.compareTo(name2);
-            }
-        }
-
-        @Override
-        public boolean areContentsTheSame(QNetwork oldItem, QNetwork newItem) {
-            return oldItem == newItem;
-        }
-
-        @Override
-        public boolean areItemsTheSame(QNetwork item1, QNetwork item2) {
-            return item1.networkId() == item2.networkId();
-        }
-    }) {
-        @Override
-        public boolean add(QNetwork object) {
-            if (object == null)
-                throw new Error();
-            return super.add(object);
-        }
-
-        @Override
-        public void add(int location, QNetwork object) {
-            if (object == null)
-                throw new Error();
-            super.add(location, object);
-        }
-    };
-    @NonNull
-    private final Client client;
-
-    public NetworkManager(@NonNull Client client) {
-        this.client = client;
-    }
-
-    public void createNetwork(@IntRange(from = 0) int networkId) {
-        createNetwork(Network.create(networkId));
-        client.requestInitObject("Network", String.valueOf(networkId));
-    }
-
-    public void createNetwork(@NonNull QNetwork network) {
-        QNetwork qNetwork = networks.get(network.networkId());
-        if (qNetwork != null && list.contains(qNetwork))
-            list.remove(qNetwork);
-        networks.put(network.networkId(), network);
-        list.add(network);
-
-        if (client.connectionStatus() == ConnectionChangeEvent.Status.CONNECTED)
-            for (QBufferViewConfig config : client.bufferViewManager().bufferViewConfigs()) {
-                config.updateNetworks();
-            }
-    }
-
-    public QNetwork network(@IntRange(from = 0) int networkId) {
-        return networks.get(networkId);
-    }
-
-    public void removeNetwork(@IntRange(from = 0) int network) {
-        QNetwork qNetwork = networks.get(network);
-        if (qNetwork != null)
-            list.remove(qNetwork);
-        networks.remove(network);
-        for (QBufferViewConfig config : client.bufferViewManager().bufferViewConfigs()) {
-            config.updateNetworks();
-        }
-    }
-
-
-    public void init(@NonNull List<Integer> networkIds) {
-        for (int networkId : networkIds) {
-            client.requestInitObject("Network", String.valueOf(networkId));
-        }
-    }
-
-    @NonNull
-    public AndroidObservableSortedList<QNetwork> networks() {
-        return list;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/client/QClient.java b/app/src/main/java/de/kuschku/libquassel/client/QClient.java
deleted file mode 100644
index a615d92e6..000000000
--- a/app/src/main/java/de/kuschku/libquassel/client/QClient.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.client;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.objects.types.Command;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-public interface QClient {
-    @Synced
-    void sendInput(BufferInfo info, String message);
-
-    @Synced
-    void sendInput(Command command);
-
-    @Synced
-    void createIdentity(QIdentity identity, Map<String, QVariant> certs);
-
-    @Synced
-    void updateIdentity(int id, final Map<String, QVariant> serialized);
-
-    @Synced
-    void removeIdentity(int id);
-
-    @Synced
-    void createNetwork(NetworkInfo info);
-
-    @Synced
-    void createNetwork(NetworkInfo info, List<String> persistentChannels);
-
-    @Synced
-    void updateNetwork(NetworkInfo info);
-
-    @Synced
-    void removeNetwork(int id);
-
-    @Synced
-    void changePassword(String username, String oldPassword, String newPassword);
-
-    void _displayMsg(final Message msg);
-
-    void _displayStatusMsg(String network, String message);
-
-    void _bufferInfoUpdated(BufferInfo bufferInfo);
-
-    void _identityCreated(Identity identity);
-
-    void _identityRemoved(int id);
-
-    void _networkCreated(int network);
-
-    void _networkRemoved(int network);
-
-    void _passwordChanged(long peerPtr, boolean success);
-
-    void ___objectRenamed__(String type, String oldName, String newName);
-
-    void login(String username, String password);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java b/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java
deleted file mode 100644
index 5696d9be4..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/BacklogInitEvent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import java.util.Locale;
-
-public class BacklogInitEvent {
-    public final int loaded;
-    public final int max;
-
-    public BacklogInitEvent(int loaded, int max) {
-        this.loaded = loaded;
-        this.max = max;
-    }
-
-    @Override
-    public String toString() {
-        return String.format(Locale.US, "LOADING_BACKLOG: %d/%d", loaded, max);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/BacklogReceivedEvent.java b/app/src/main/java/de/kuschku/libquassel/events/BacklogReceivedEvent.java
deleted file mode 100644
index 567c395a1..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/BacklogReceivedEvent.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.IntRange;
-
-@SuppressWarnings("WeakerAccess")
-public class BacklogReceivedEvent {
-    @IntRange(from = -1)
-    public final int bufferId;
-
-    public BacklogReceivedEvent(int bufferId) {
-        this.bufferId = bufferId;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/BufferChangeEvent.java b/app/src/main/java/de/kuschku/libquassel/events/BufferChangeEvent.java
deleted file mode 100644
index 2cef25718..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/BufferChangeEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-public class BufferChangeEvent {
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/CertificateAcceptedEvent.java b/app/src/main/java/de/kuschku/libquassel/events/CertificateAcceptedEvent.java
deleted file mode 100644
index a993bf6c8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/CertificateAcceptedEvent.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import java.security.cert.X509Certificate;
-
-public class CertificateAcceptedEvent {
-    public final X509Certificate certificate;
-
-    public CertificateAcceptedEvent(X509Certificate certificate) {
-        this.certificate = certificate;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/ConnectionChangeEvent.java b/app/src/main/java/de/kuschku/libquassel/events/ConnectionChangeEvent.java
deleted file mode 100644
index 7e556380f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/ConnectionChangeEvent.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-@SuppressWarnings("WeakerAccess")
-public class ConnectionChangeEvent {
-    @NonNull
-    public final Status status;
-    @NonNull
-    public final String reason;
-
-    public ConnectionChangeEvent(@NonNull Status status) {
-        this(status, "");
-    }
-
-    public ConnectionChangeEvent(@NonNull Status status, @NonNull String reason) {
-        this.status = status;
-        this.reason = reason;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ConnectionChangeEvent{" +
-                "status=" + status +
-                ", reason='" + reason + '\'' +
-                '}';
-    }
-
-    public enum Status {
-        DISCONNECTED,
-        HANDSHAKE,
-        INITIALIZING_DATA,
-        LOADING_BACKLOG,
-        CONNECTED
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupFailedEvent.java b/app/src/main/java/de/kuschku/libquassel/events/CoreSetupFailedEvent.java
deleted file mode 100644
index d4b362a76..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupFailedEvent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-@SuppressWarnings("WeakerAccess")
-public class CoreSetupFailedEvent {
-    public final String reason;
-
-    public CoreSetupFailedEvent(String reason) {
-        this.reason = reason;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CoreSetupFailedEvent{" +
-                "reason='" + reason + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupRequiredEvent.java b/app/src/main/java/de/kuschku/libquassel/events/CoreSetupRequiredEvent.java
deleted file mode 100644
index 4038cf60d..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupRequiredEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-public class CoreSetupRequiredEvent {
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupSuccessfulEvent.java b/app/src/main/java/de/kuschku/libquassel/events/CoreSetupSuccessfulEvent.java
deleted file mode 100644
index 7b1584f2e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/CoreSetupSuccessfulEvent.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-@SuppressWarnings("WeakerAccess")
-public class CoreSetupSuccessfulEvent {
-    public CoreSetupSuccessfulEvent() {
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CoreSetupSuccessfulEvent{}";
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/CriticalErrorEvent.java b/app/src/main/java/de/kuschku/libquassel/events/CriticalErrorEvent.java
deleted file mode 100644
index 2a8b8a247..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/CriticalErrorEvent.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-public class CriticalErrorEvent {
-    public String debugInfo;
-    public Exception exception;
-
-    public CriticalErrorEvent(String debugInfo) {
-        this.debugInfo = debugInfo;
-    }
-
-    public CriticalErrorEvent(Exception exception) {
-        this.exception = exception;
-    }
-
-    public CriticalErrorEvent(Exception exception, String debugInfo) {
-        this.debugInfo = debugInfo;
-        this.exception = exception;
-    }
-
-    @Override
-    public String toString() {
-        if (debugInfo == null)
-            return String.format("%s: %s", exception.getClass().getSimpleName(), exception.getLocalizedMessage());
-        else if (exception == null)
-            return debugInfo;
-        else
-            return String.format("%s: %s\n%s", exception.getClass().getSimpleName(), exception.getLocalizedMessage(), debugInfo);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/GeneralErrorEvent.java b/app/src/main/java/de/kuschku/libquassel/events/GeneralErrorEvent.java
deleted file mode 100644
index 00534a76e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/GeneralErrorEvent.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-@SuppressWarnings("WeakerAccess")
-public class GeneralErrorEvent {
-    public String debugInfo;
-    public Exception exception;
-
-    public GeneralErrorEvent(String debugInfo) {
-        this.debugInfo = debugInfo;
-    }
-
-    public GeneralErrorEvent(Exception exception) {
-        this.exception = exception;
-    }
-
-    public GeneralErrorEvent(Exception exception, String debugInfo) {
-        this.debugInfo = debugInfo;
-        this.exception = exception;
-    }
-
-    @Override
-    @NonNull
-    public String toString() {
-        if (debugInfo == null)
-            return String.format("%s: %s", exception.getClass().getSimpleName(), exception.getLocalizedMessage());
-        else if (exception == null)
-            return debugInfo;
-        else
-            return String.format("%s: %s\n%s", exception.getClass().getSimpleName(), exception.getLocalizedMessage(), debugInfo);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/HandshakeFailedEvent.java b/app/src/main/java/de/kuschku/libquassel/events/HandshakeFailedEvent.java
deleted file mode 100644
index a610e05c5..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/HandshakeFailedEvent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-@SuppressWarnings("WeakerAccess")
-public class HandshakeFailedEvent {
-    public final String reason;
-
-    public HandshakeFailedEvent(String reason) {
-        this.reason = reason;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "HandshakeFailedEvent{" +
-                "reason='" + reason + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java b/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java
deleted file mode 100644
index 8d2367971..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/InitEvent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import java.util.Locale;
-
-public class InitEvent {
-    public final int loaded;
-    public final int max;
-
-    public InitEvent(int loaded, int max) {
-        this.loaded = loaded;
-        this.max = max;
-    }
-
-    @Override
-    public String toString() {
-        return String.format(Locale.US, "INITIALIZING_DATA: %d/%d", loaded, max);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/LagChangedEvent.java b/app/src/main/java/de/kuschku/libquassel/events/LagChangedEvent.java
deleted file mode 100644
index 6c937b862..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/LagChangedEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-public class LagChangedEvent {
-    public final long lag;
-
-    public LagChangedEvent(long lag) {
-        this.lag = lag;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "LagChangedEvent{" +
-                "lag=" + lag +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/LoginRequireEvent.java b/app/src/main/java/de/kuschku/libquassel/events/LoginRequireEvent.java
deleted file mode 100644
index 6c47dfd21..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/LoginRequireEvent.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-public class LoginRequireEvent {
-    public final boolean failedLast;
-
-    public LoginRequireEvent(boolean failedLast) {
-        this.failedLast = failedLast;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/PasswordChangeEvent.java b/app/src/main/java/de/kuschku/libquassel/events/PasswordChangeEvent.java
deleted file mode 100644
index bcaf7c023..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/PasswordChangeEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-public class PasswordChangeEvent {
-    public final boolean success;
-
-    public PasswordChangeEvent(boolean success) {
-        this.success = success;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "PasswordChangeEvent{" +
-                "success=" + success +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/StatusMessageEvent.java b/app/src/main/java/de/kuschku/libquassel/events/StatusMessageEvent.java
deleted file mode 100644
index fe3404d04..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/StatusMessageEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-@SuppressWarnings("WeakerAccess")
-public class StatusMessageEvent {
-    public final String scope;
-    public final String message;
-
-    public StatusMessageEvent(String scope, String message) {
-        this.scope = scope;
-        this.message = message;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/events/UnknownCertificateEvent.java b/app/src/main/java/de/kuschku/libquassel/events/UnknownCertificateEvent.java
deleted file mode 100644
index 04d9b2bc6..000000000
--- a/app/src/main/java/de/kuschku/libquassel/events/UnknownCertificateEvent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.events;
-
-import android.support.annotation.NonNull;
-
-import java.security.cert.X509Certificate;
-
-import de.kuschku.libquassel.ssl.UnknownCertificateException;
-import de.kuschku.util.accounts.ServerAddress;
-
-public class UnknownCertificateEvent {
-    public final X509Certificate certificate;
-    public final ServerAddress address;
-
-    public UnknownCertificateEvent(X509Certificate certificate, ServerAddress address) {
-        this.certificate = certificate;
-        this.address = address;
-    }
-
-    public UnknownCertificateEvent(@NonNull UnknownCertificateException cause) {
-        this(cause.certificate, cause.address);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/exceptions/SyncInvocationException.java b/app/src/main/java/de/kuschku/libquassel/exceptions/SyncInvocationException.java
deleted file mode 100644
index 5ed768278..000000000
--- a/app/src/main/java/de/kuschku/libquassel/exceptions/SyncInvocationException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.exceptions;
-
-import java.lang.reflect.InvocationTargetException;
-
-public class SyncInvocationException extends InvocationTargetException {
-    public SyncInvocationException() {
-    }
-
-    public SyncInvocationException(String detailMessage) {
-        super(null, detailMessage);
-    }
-
-    public SyncInvocationException(Throwable exception) {
-        super(exception);
-    }
-
-    public SyncInvocationException(Throwable exception, String detailMessage) {
-        super(exception, detailMessage);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/exceptions/UnknownTypeException.java b/app/src/main/java/de/kuschku/libquassel/exceptions/UnknownTypeException.java
deleted file mode 100644
index 774f845c9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/exceptions/UnknownTypeException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.exceptions;
-
-import android.support.annotation.Nullable;
-
-public class UnknownTypeException extends IllegalArgumentException {
-    public final String typeName;
-    public final String additionalData;
-
-    public UnknownTypeException(String typeName) {
-        this(typeName, null);
-    }
-
-    public UnknownTypeException(String typeName, Object additionalData) {
-        this.typeName = typeName;
-        this.additionalData = String.valueOf(additionalData);
-    }
-
-    @Nullable
-    @Override
-    public String getLocalizedMessage() {
-        return getMessage();
-    }
-
-    @Override
-    public String getMessage() {
-        return String.format("Unknown type: %s; %s", typeName, additionalData);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/FunctionType.java b/app/src/main/java/de/kuschku/libquassel/functions/FunctionType.java
deleted file mode 100644
index e9307cd1b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/FunctionType.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions;
-
-import android.support.annotation.NonNull;
-
-public enum FunctionType {
-    INVALID(0),
-    SYNC(1),
-    RPCCALL(2),
-    INITREQUEST(3),
-    INITDATA(4),
-    HEARTBEAT(5),
-    HEARTBEATREPLY(6);
-
-    public final int id;
-
-    FunctionType(int id) {
-        this.id = id;
-    }
-
-    @NonNull
-    public static FunctionType fromId(int id) {
-        switch (id) {
-            case 1:
-                return SYNC;
-            case 2:
-                return RPCCALL;
-            case 3:
-                return INITREQUEST;
-            case 4:
-                return INITDATA;
-            case 5:
-                return HEARTBEAT;
-            case 6:
-                return HEARTBEATREPLY;
-            default:
-                return INVALID;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/FunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/FunctionSerializer.java
deleted file mode 100644
index bf25aabef..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/FunctionSerializer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-public interface FunctionSerializer<T> {
-    @NonNull
-    List serialize(@NonNull T data);
-
-    @NonNull
-    T deserialize(@NonNull List packedFunc);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatReplySerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatReplySerializer.java
deleted file mode 100644
index 88b60dc69..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatReplySerializer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-public class HeartbeatReplySerializer implements FunctionSerializer<HeartbeatReply> {
-    @NonNull
-    private static final HeartbeatReplySerializer serializer = new HeartbeatReplySerializer();
-
-    private HeartbeatReplySerializer() {
-    }
-
-    @NonNull
-    public static HeartbeatReplySerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull HeartbeatReply data) {
-        return Arrays.asList(
-                new QVariant<>(QMetaType.Type.Int, FunctionType.HEARTBEATREPLY.id),
-                new QVariant<>(QMetaType.Type.QDateTime, data.dateTime)
-        );
-    }
-
-    @NonNull
-    @Override
-    public HeartbeatReply deserialize(@NonNull List packedFunc) {
-        assertTrue(packedFunc.size() == 1);
-
-        return new HeartbeatReply((DateTime) ((QVariant) packedFunc.remove(0)).data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatSerializer.java
deleted file mode 100644
index 200daa3db..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/HeartbeatSerializer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-public class HeartbeatSerializer implements FunctionSerializer<Heartbeat> {
-    @NonNull
-    private static final HeartbeatSerializer serializer = new HeartbeatSerializer();
-
-    private HeartbeatSerializer() {
-    }
-
-    @NonNull
-    public static HeartbeatSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull Heartbeat data) {
-        return Arrays.asList(
-                new QVariant<>(QMetaType.Type.Int, FunctionType.HEARTBEAT.id),
-                new QVariant<>(QMetaType.Type.QDateTime, data.dateTime)
-        );
-    }
-
-    @NonNull
-    @Override
-    public Heartbeat deserialize(@NonNull List packedFunc) {
-        assertTrue(packedFunc.size() == 1);
-
-        return new Heartbeat((DateTime) ((QVariant) packedFunc.remove(0)).data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitDataFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitDataFunctionSerializer.java
deleted file mode 100644
index f11650520..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitDataFunctionSerializer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.PackedInitDataFunction;
-import de.kuschku.libquassel.functions.types.UnpackedInitDataFunction;
-
-public class InitDataFunctionSerializer implements FunctionSerializer<InitDataFunction> {
-    @NonNull
-    private static final InitDataFunctionSerializer serializer = new InitDataFunctionSerializer();
-
-    private InitDataFunctionSerializer() {
-    }
-
-    @NonNull
-    public static InitDataFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final InitDataFunction data) {
-        if (data instanceof UnpackedInitDataFunction) {
-            return PackedInitDataFunctionSerializer.get().serialize((UnpackedInitDataFunction) data);
-        } else if (data instanceof PackedInitDataFunction) {
-            return UnpackedInitDataFunctionSerializer.get().serialize((PackedInitDataFunction) data);
-        } else {
-            throw new IllegalArgumentException("Can not be applied to these arguments");
-        }
-    }
-
-    @NonNull
-    @Override
-    public InitDataFunction deserialize(@NonNull final List packedFunc) {
-        throw new IllegalArgumentException("Can not be applied to these arguments");
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitRequestFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitRequestFunctionSerializer.java
deleted file mode 100644
index dd714be92..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/InitRequestFunctionSerializer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.libquassel.primitives.QMetaType.Type.Int;
-import static de.kuschku.libquassel.primitives.QMetaType.Type.QByteArray;
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings("unchecked")
-public class InitRequestFunctionSerializer implements FunctionSerializer<InitRequestFunction> {
-    @NonNull
-    private static final InitRequestFunctionSerializer serializer = new InitRequestFunctionSerializer();
-
-    private InitRequestFunctionSerializer() {
-    }
-
-    @NonNull
-    public static InitRequestFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final InitRequestFunction data) {
-        return Lists.newArrayList(
-                FunctionType.INITREQUEST.id,
-                data.className,
-                data.objectName
-        );
-    }
-
-    // TODO: Add this for all such serializers
-    @NonNull
-    public List serializePacked(@NonNull final InitRequestFunction data) {
-        return Lists.newArrayList(
-                new QVariant<>(Int, FunctionType.INITREQUEST.id),
-                new QVariant<>(QByteArray, data.className),
-                new QVariant<>(QByteArray, data.objectName)
-        );
-    }
-
-    @NonNull
-    @Override
-    public InitRequestFunction deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 2);
-
-        String className = (String) packedFunc.remove(0);
-        String objectName = (String) packedFunc.remove(0);
-        assertNotNull(className);
-
-        return new InitRequestFunction(
-                className,
-                objectName
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedInitDataFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedInitDataFunctionSerializer.java
deleted file mode 100644
index 387835a6b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedInitDataFunctionSerializer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.UnpackedInitDataFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.protocols.DatastreamPeer;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class PackedInitDataFunctionSerializer implements FunctionSerializer<UnpackedInitDataFunction> {
-    @NonNull
-    private static final PackedInitDataFunctionSerializer serializer = new PackedInitDataFunctionSerializer();
-
-    private PackedInitDataFunctionSerializer() {
-    }
-
-    @NonNull
-    public static PackedInitDataFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final UnpackedInitDataFunction data) {
-        final List func = new ArrayList<>();
-        func.add(FunctionType.INITDATA.id);
-        func.add(data.className);
-        func.add(data.objectName);
-        func.add(data.getData());
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public UnpackedInitDataFunction deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 2);
-
-        return new UnpackedInitDataFunction(
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                DatastreamPeer.listToMap(packedFunc)
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedRpcCallFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedRpcCallFunctionSerializer.java
deleted file mode 100644
index 1cd1c9d2d..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedRpcCallFunctionSerializer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.protocols.DatastreamPeer;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class PackedRpcCallFunctionSerializer implements FunctionSerializer<RpcCallFunction> {
-    @NonNull
-    private static final PackedRpcCallFunctionSerializer serializer = new PackedRpcCallFunctionSerializer();
-
-    private PackedRpcCallFunctionSerializer() {
-    }
-
-    @NonNull
-    public static PackedRpcCallFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final RpcCallFunction data) {
-        final List func = new ArrayList<>();
-        func.add(new QVariant<>(QMetaType.Type.Int, FunctionType.RPCCALL.id));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.functionName));
-        func.addAll(data.params);
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public RpcCallFunction deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 1);
-
-        return new RpcCallFunction(
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                DatastreamPeer.unboxList(packedFunc)
-        );
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedSyncFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedSyncFunctionSerializer.java
deleted file mode 100644
index b71316ab3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/PackedSyncFunctionSerializer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.protocols.DatastreamPeer;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class PackedSyncFunctionSerializer<T> implements FunctionSerializer<SyncFunction<T>> {
-    @NonNull
-    private static final PackedSyncFunctionSerializer serializer = new PackedSyncFunctionSerializer();
-
-    private PackedSyncFunctionSerializer() {
-    }
-
-    @NonNull
-    public static PackedSyncFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final SyncFunction data) {
-        final List func = new ArrayList<>();
-        func.add(new QVariant<>(QMetaType.Type.Int, FunctionType.SYNC.id));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.className));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.objectName));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.methodName));
-        func.addAll(data.params);
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public SyncFunction<T> deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 3);
-
-        return new SyncFunction<>(
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                ((QVariant<String>) packedFunc.remove(0)).data,
-                DatastreamPeer.unboxList(packedFunc)
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedInitDataFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedInitDataFunctionSerializer.java
deleted file mode 100644
index e842e2eb3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedInitDataFunctionSerializer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.PackedInitDataFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class UnpackedInitDataFunctionSerializer implements FunctionSerializer<PackedInitDataFunction> {
-    @NonNull
-    private static final UnpackedInitDataFunctionSerializer serializer = new UnpackedInitDataFunctionSerializer();
-
-    private UnpackedInitDataFunctionSerializer() {
-    }
-
-    @NonNull
-    public static UnpackedInitDataFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final PackedInitDataFunction data) {
-        final List func = new ArrayList<>();
-        func.add(FunctionType.INITDATA.id);
-        func.add(data.className);
-        func.add(data.objectName);
-        func.add(data.getData());
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public PackedInitDataFunction deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 3);
-
-        return new PackedInitDataFunction(
-                (String) packedFunc.remove(0),
-                (String) packedFunc.remove(0),
-                (Map<String, QVariant>) packedFunc.remove(0)
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedRpcCallFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedRpcCallFunctionSerializer.java
deleted file mode 100644
index e28650f0a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedRpcCallFunctionSerializer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class UnpackedRpcCallFunctionSerializer implements FunctionSerializer<RpcCallFunction> {
-    @NonNull
-    private static final UnpackedRpcCallFunctionSerializer serializer = new UnpackedRpcCallFunctionSerializer();
-
-    private UnpackedRpcCallFunctionSerializer() {
-    }
-
-    @NonNull
-    public static UnpackedRpcCallFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final RpcCallFunction data) {
-        final List func = new ArrayList<>();
-        func.add(new QVariant<>(QMetaType.Type.Int, FunctionType.RPCCALL.id));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.functionName));
-        func.addAll(data.params);
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public RpcCallFunction deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 1);
-
-        return new RpcCallFunction(
-                (String) packedFunc.remove(0),
-                packedFunc
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedSyncFunctionSerializer.java b/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedSyncFunctionSerializer.java
deleted file mode 100644
index 27e933104..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/serializers/UnpackedSyncFunctionSerializer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class UnpackedSyncFunctionSerializer<T> implements FunctionSerializer<SyncFunction<T>> {
-    @NonNull
-    private static final UnpackedSyncFunctionSerializer serializer = new UnpackedSyncFunctionSerializer();
-
-    private UnpackedSyncFunctionSerializer() {
-    }
-
-    @NonNull
-    public static UnpackedSyncFunctionSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public List serialize(@NonNull final SyncFunction data) {
-        final List func = new ArrayList<>();
-        func.add(new QVariant<>(QMetaType.Type.Int, FunctionType.SYNC.id));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.className));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.objectName));
-        func.add(new QVariant<>(QMetaType.Type.QByteArray, data.methodName));
-        func.addAll(data.params);
-        return func;
-    }
-
-    @NonNull
-    @Override
-    public SyncFunction<T> deserialize(@NonNull final List packedFunc) {
-        assertTrue(packedFunc.size() >= 3);
-
-        return new SyncFunction<>(
-                (String) packedFunc.remove(0),
-                (String) packedFunc.remove(0),
-                (String) packedFunc.remove(0),
-                packedFunc
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/HandshakeFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/HandshakeFunction.java
deleted file mode 100644
index 75d7384ab..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/HandshakeFunction.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-public class HandshakeFunction {
-    public final Object data;
-
-    public HandshakeFunction(Object data) {
-        this.data = data;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "HandshakeFunction{" +
-                "data=" + data +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/Heartbeat.java b/app/src/main/java/de/kuschku/libquassel/functions/types/Heartbeat.java
deleted file mode 100644
index 8972e8ca8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/Heartbeat.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-public class Heartbeat {
-    public final DateTime dateTime;
-
-    public Heartbeat(DateTime dateTime) {
-        this.dateTime = dateTime;
-    }
-
-    public Heartbeat() {
-        this(DateTime.now().toDateTimeISO());
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "Heartbeat{" +
-                "dateTime=" + dateTime +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/HeartbeatReply.java b/app/src/main/java/de/kuschku/libquassel/functions/types/HeartbeatReply.java
deleted file mode 100644
index 8ae2cb05f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/HeartbeatReply.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-public class HeartbeatReply {
-    public final DateTime dateTime;
-
-    public HeartbeatReply(DateTime dateTime) {
-        this.dateTime = dateTime;
-    }
-
-    public HeartbeatReply() {
-        this(DateTime.now().toDateTimeISO());
-    }
-
-    public HeartbeatReply(@NonNull Heartbeat heartbeat) {
-        this(heartbeat.dateTime);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "HeartbeatReply{" +
-                "dateTime=" + dateTime +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/InitDataFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/InitDataFunction.java
deleted file mode 100644
index 8f66606da..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/InitDataFunction.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public abstract class InitDataFunction implements SerializedFunction<Map<String, QVariant>> {
-    public String className;
-    public String objectName;
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/InitRequestFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/InitRequestFunction.java
deleted file mode 100644
index 5822d3128..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/InitRequestFunction.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class InitRequestFunction {
-    @NonNull
-    public final String className;
-    @Nullable
-    public final String objectName;
-
-    public InitRequestFunction(@NonNull String className, @Nullable String objectName) {
-        this.className = className;
-        this.objectName = objectName;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "InitRequestFunction{" +
-                "className='" + className + '\'' +
-                ", objectName='" + objectName + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/PackedFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/PackedFunction.java
deleted file mode 100644
index c72444741..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/PackedFunction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public interface PackedFunction extends SerializedFunction<Map<String, QVariant>> {
-    @NonNull
-    Map<String, QVariant> getData();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/PackedInitDataFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/PackedInitDataFunction.java
deleted file mode 100644
index 943022e37..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/PackedInitDataFunction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class PackedInitDataFunction extends InitDataFunction implements PackedFunction {
-    @NonNull
-    private final Map<String, QVariant> data;
-
-    public PackedInitDataFunction(@NonNull String className, @NonNull String objectName, @NonNull Map<String, QVariant> data) {
-        this.className = className;
-        this.objectName = objectName;
-        this.data = data;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant> getData() {
-        return data;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "PackedInitDataFunction{" +
-                "data=" + data +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/RpcCallFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/RpcCallFunction.java
deleted file mode 100644
index 4f9dffe9f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/RpcCallFunction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class RpcCallFunction {
-    @NonNull
-    public final String functionName;
-    @NonNull
-    public final List params;
-
-    public RpcCallFunction(@NonNull String functionName, @NonNull List params) {
-        this.functionName = functionName;
-        this.params = params;
-    }
-
-    public RpcCallFunction(@NonNull String functionName, @NonNull Object... params) {
-        this.functionName = functionName;
-        this.params = Arrays.asList(params);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "RpcCallFunction{" +
-                "functionName='" + functionName + '\'' +
-                ", params=" + params +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/SerializedFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/SerializedFunction.java
deleted file mode 100644
index c2c9b56d6..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/SerializedFunction.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-public interface SerializedFunction<T> {
-    @NonNull
-    T getData();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/SyncFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/SyncFunction.java
deleted file mode 100644
index 1a157532a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/SyncFunction.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-public class SyncFunction<T> {
-    @NonNull
-    public final String className;
-    @Nullable
-    public final String objectName;
-    @NonNull
-    public final String methodName;
-    @NonNull
-    public final List<T> params;
-
-    public SyncFunction(@NonNull String className, @Nullable String objectName, @NonNull String methodName, @NonNull List<T> params) {
-        this.className = className;
-        this.objectName = objectName;
-        this.methodName = methodName;
-        this.params = params;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "SyncFunction{" +
-                "className='" + className + '\'' +
-                ", objectName='" + objectName + '\'' +
-                ", methodName='" + methodName + '\'' +
-                ", params=" + params +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedFunction.java
deleted file mode 100644
index 78bd30506..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedFunction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public interface UnpackedFunction extends SerializedFunction<Map<String, QVariant>> {
-    @NonNull
-    Map<String, QVariant> getData();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedInitDataFunction.java b/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedInitDataFunction.java
deleted file mode 100644
index 4a1ae753e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/functions/types/UnpackedInitDataFunction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.functions.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class UnpackedInitDataFunction extends InitDataFunction implements UnpackedFunction {
-    @NonNull
-    private final Map<String, QVariant> data;
-
-    public UnpackedInitDataFunction(@NonNull String className, @NonNull String objectName, @NonNull Map<String, QVariant> data) {
-        this.className = className;
-        this.objectName = objectName;
-        this.data = data;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant> getData() {
-        return data;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "UnpackedInitDataFunction{" +
-                "data=" + data +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java
deleted file mode 100644
index 441cdabdf..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/BacklogFilter.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.raizlabs.android.dbflow.sql.language.SQLite;
-
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.message.Message_Table;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class BacklogFilter implements UICallback {
-    @NonNull
-    private final Client client;
-    private final int bufferId;
-    @NonNull
-    private final AndroidObservableComparableSortedList<Message> unfiltered;
-    @NonNull
-    private final AndroidObservableComparableSortedList<Message> filtered;
-
-    private final EventBus bus = new EventBus();
-    ElementCallback<Message.Type> typeCallback = new ElementCallback<Message.Type>() {
-        @Override
-        public void notifyItemInserted(Message.Type element) {
-            bus.post(new UpdateRemoveEvent());
-        }
-
-        @Override
-        public void notifyItemRemoved(Message.Type element) {
-            bus.post(new UpdateAddEvent());
-        }
-
-        @Override
-        public void notifyItemChanged(Message.Type element) {
-
-        }
-    };
-    @Nullable
-    private CharSequence searchQuery;
-    private Message markerlineMessage;
-
-    public BacklogFilter(@NonNull Client client, int bufferId, @NonNull AndroidObservableComparableSortedList<Message> unfiltered, @NonNull AndroidObservableComparableSortedList<Message> filtered) {
-        this.client = client;
-        this.bufferId = bufferId;
-        this.unfiltered = unfiltered;
-        this.filtered = filtered;
-        this.bus.register(this);
-        client.bufferSyncer().getFilteredTypes(bufferId).addCallback(typeCallback);
-        updateDayChangeMessages();
-    }
-
-    public void loadBackload() {
-        bus.post(new LoadBacklogEvent());
-    }
-
-    private Message createMarkerlineMessage(int id) {
-        return Message.create(
-                id,
-                null,
-                Message.Type.Markerline,
-                new Message.Flags((byte) 0x00),
-                BufferInfo.create(
-                        bufferId,
-                        -1,
-                        BufferInfo.Type.INVALID,
-                        -1,
-                        null
-                ),
-                null,
-                null
-        );
-    }
-
-    public void setMarkerlineMessage(int id) {
-        /*
-        Message markerlineMessage = this.markerlineMessage;
-        bus.post(new MessageRemoveEvent(markerlineMessage));
-        this.markerlineMessage = createMarkerlineMessage(id);
-        bus.post(new MessageInsertEvent(this.markerlineMessage));
-        */
-    }
-
-    @Override
-    public void notifyItemInserted(int position) {
-        Message message = unfiltered.get(position);
-        bus.post(new MessageFilterEvent(message));
-    }
-
-    private void updateDayChangeMessages() {
-        /*
-        LocalDate date = null;
-        Message lastMessage = null;
-        for (Message message : filtered) {
-            if (Objects.equals(date, message.getLocalDate()))
-                continue;
-            date = message.getLocalDate();
-            if (message.type == Message.Type.DayChange) {
-                if (lastMessage != null && lastMessage.type == Message.Type.DayChange) {
-                    bus.post(new MessageRemoveEvent(lastMessage));
-                }
-                lastMessage = message;
-                continue;
-            }
-
-            lastMessage = message;
-            date = message.getLocalDate();
-            DateTime time = message.time.withMillisOfDay(0);
-            bus.post(new MessageInsertEvent(Message.create(
-                    (int) DateTimeUtils.toJulianDay(time.getMillis()),
-                    time,
-                    Message.Type.DayChange,
-                    new Message.Flags(false, false, false, false, false),
-                    BufferInfo.create(
-                            bufferId,
-                            -1,
-                            BufferInfo.Type.INVALID,
-                            -1,
-                            null
-                    ),
-                    "",
-                    ""
-            )));
-        }
-        DateTime time = DateTime.now();
-        if (!Objects.equals(date, time.toLocalDate())) {
-            time = time.withMillisOfDay(0);
-            bus.post(new MessageInsertEvent(Message.create(
-                    (int) DateTimeUtils.toJulianDay(time.getMillis()),
-                    time,
-                    Message.Type.DayChange,
-                    new Message.Flags(false, false, false, false, false),
-                    BufferInfo.create(
-                            bufferId,
-                            -1,
-                            BufferInfo.Type.INVALID,
-                            -1,
-                            null
-                    ),
-                    "",
-                    ""
-            )));
-        }
-        */
-    }
-
-    private boolean filterItem(@NonNull Message message) {
-        QNetwork network = client.networkManager().network(client.bufferManager().buffer(message.bufferInfo.id).getInfo().networkId);
-        assertNotNull(network);
-        boolean ignored = client.ignoreListManager() != null && client.ignoreListManager().matches(message, network);
-        boolean filtered = client.bufferSyncer().getFilteredTypes(bufferId).contains(message.type);
-        boolean isSearching = searchQuery != null && searchQuery.length() != 0;
-        return ignored || filtered || (isSearching && !message.content.contains(searchQuery));
-    }
-
-    public void update() {
-        bus.post(new UpdateAddEvent());
-        bus.post(new UpdateRemoveEvent());
-    }
-
-    public void setQuery(CharSequence query) {
-        searchQuery = query;
-        update();
-    }
-
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onEventAsync(UpdateAddEvent event) {
-        List<Message> filteredMessages = new ArrayList<>();
-        for (Message message : unfiltered) {
-            if (!filterItem(message))
-                filteredMessages.add(message);
-        }
-
-        bus.post(new MessageInsertEvent(filteredMessages));
-    }
-
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onEventAsync(UpdateRemoveEvent event) {
-        List<Message> removedMessages = new ArrayList<>();
-        for (Message message : unfiltered) {
-            if (filterItem(message))
-                removedMessages.add(message);
-        }
-
-        bus.post(new MessageRemoveEvent(removedMessages));
-    }
-
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onEventAsync(@NonNull MessageFilterEvent event) {
-        List<Message> filteredMessages = new ArrayList<>();
-        for (Message message : event.msgs) {
-            if (!filterItem(message))
-                filteredMessages.add(message);
-        }
-
-        bus.post(new MessageInsertEvent(filteredMessages));
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull MessageInsertEvent event) {
-        filtered.addAll(event.msgs);
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull MessageRemoveEvent event) {
-        filtered.removeAll(event.msgs);
-    }
-
-    @Subscribe(threadMode = ThreadMode.ASYNC)
-    public void onEventAsync(@NonNull LoadBacklogEvent event) {
-        List<Message> messageList = SQLite.select().from(Message.class).where(Message_Table.bufferInfo_id.eq(bufferId)).queryList();
-        bus.post(new BacklogLoadedEvent(messageList));
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(@NonNull BacklogLoadedEvent event) {
-        unfiltered.addAll(event.messageList);
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        int position1 = filtered.indexOf(unfiltered.get(position));
-        if (position1 != -1)
-            filtered.notifyItemChanged(position1);
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        bus.post(new MessageRemoveEvent(unfiltered.get(position)));
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        // Can’t occur: Sorted List
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        List<Message> messages = unfiltered.subList(position, position + count);
-        bus.post(new MessageFilterEvent(messages));
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemChanged(i);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        List<Message> messages = unfiltered.subList(position, position + count);
-        bus.post(new MessageRemoveEvent(messages));
-    }
-
-    public void onDestroy() {
-        bus.unregister(this);
-        client.bufferSyncer().getFilteredTypes(bufferId).removeCallback(typeCallback);
-        typeCallback = null;
-    }
-
-    private class MessageInsertEvent {
-        public final List<Message> msgs;
-
-        public MessageInsertEvent(Message msg) {
-            this.msgs = Collections.singletonList(msg);
-        }
-
-        public MessageInsertEvent(List<Message> msgs) {
-            this.msgs = msgs;
-        }
-    }
-
-    private class MessageRemoveEvent {
-        public final List<Message> msgs;
-
-        public MessageRemoveEvent(Message msg) {
-            this.msgs = Collections.singletonList(msg);
-        }
-
-        public MessageRemoveEvent(List<Message> msgs) {
-            this.msgs = msgs;
-        }
-    }
-
-    private class MessageFilterEvent {
-        public final List<Message> msgs;
-
-        public MessageFilterEvent(Message msg) {
-            this.msgs = Collections.singletonList(msg);
-        }
-
-        public MessageFilterEvent(List<Message> msgs) {
-            this.msgs = msgs;
-        }
-    }
-
-    private class UpdateAddEvent {
-    }
-
-    private class UpdateRemoveEvent {
-    }
-
-    private class LoadBacklogEvent {
-    }
-
-    private class BacklogLoadedEvent {
-        private final List<Message> messageList;
-
-        public BacklogLoadedEvent(List<Message> messageList) {
-            this.messageList = messageList;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java
deleted file mode 100644
index 953dbebca..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/BacklogStorage.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.backlogstorage;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.BacklogFilter;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-
-public interface BacklogStorage {
-    @NonNull
-    AndroidObservableComparableSortedList<Message> getUnfiltered(@IntRange(from = 0) int bufferid);
-
-    @NonNull
-    AndroidObservableComparableSortedList<Message> getFiltered(@IntRange(from = 0) int bufferid);
-
-    @NonNull
-    BacklogFilter getFilter(@IntRange(from = 0) int bufferid);
-
-    int getLatest(@IntRange(from = 0) int bufferid);
-
-    void insertMessages(@IntRange(from = 0) int bufferId, Message... messages);
-
-    void insertMessages(@IntRange(from = 0) int bufferId, List<Message> messages);
-
-    void insertMessages(Message... messages);
-
-    void insertMessages(List<Message> messages);
-
-    void setClient(Client client);
-
-    void markBufferUnused(@IntRange(from = 0) int bufferid);
-
-    void clear(@IntRange(from = 0) int bufferid);
-
-    Set<BacklogFilter> getFilters();
-
-    void setMarkerLine(@IntRange(from = 0) int buffer, int msgId);
-
-    void merge(@IntRange(from = 0) int buffer1, @IntRange(from = 0) int buffer2);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java
deleted file mode 100644
index 0779ed071..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.backlogstorage;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.util.Log;
-import android.util.SparseArray;
-
-import com.raizlabs.android.dbflow.config.FlowManager;
-import com.raizlabs.android.dbflow.sql.language.SQLite;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.BacklogFilter;
-import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.message.Message_Table;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class HybridBacklogStorage implements BacklogStorage {
-    @NonNull
-    private final SparseArray<AndroidObservableComparableSortedList<Message>> backlogs = new SparseArray<>();
-    @NonNull
-    private final SparseArray<AndroidObservableComparableSortedList<Message>> filteredBacklogs = new SparseArray<>();
-    @NonNull
-    private final SparseArray<BacklogFilter> filters = new SparseArray<>();
-    @NonNull
-    private final SparseArray<Integer> latestMessage = new SparseArray<>();
-    @NonNull
-    private final Set<BacklogFilter> filterSet = new HashSet<>();
-
-    private ExecutorService executor = Executors.newCachedThreadPool();
-
-    private Client client;
-
-    @NonNull
-    @Override
-    public AndroidObservableComparableSortedList<Message> getUnfiltered(@IntRange(from = -1) int bufferid) {
-        ensureExisting(bufferid);
-        return backlogs.get(bufferid);
-    }
-
-    @NonNull
-    @Override
-    public AndroidObservableComparableSortedList<Message> getFiltered(@IntRange(from = -1) int bufferid) {
-        ensureExisting(bufferid);
-        return filteredBacklogs.get(bufferid);
-    }
-
-    @NonNull
-    @Override
-    public BacklogFilter getFilter(int bufferid) {
-        ensureExisting(bufferid);
-        return filters.get(bufferid);
-    }
-
-    @Override
-    public int getLatest(@IntRange(from = 0) int bufferid) {
-        return latestMessage.get(bufferid, -1);
-    }
-
-    @Override
-    public void insertMessages(@IntRange(from = 0) int bufferId, @NonNull Message... messages) {
-        FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(databaseWrapper -> {
-            for (Message message : messages) {
-                client.unbufferBuffer(message.bufferInfo);
-                synchronized (backlogs) {
-                    client.bufferSyncer().addActivity(message);
-                    message.save();
-                    message.bufferInfo.save();
-                }
-                updateLatest(message);
-            }
-
-            synchronized (backlogs) {
-                if (backlogs.get(bufferId) != null)
-                    backlogs.get(bufferId).addAll(Arrays.asList(messages));
-            }
-        });
-    }
-
-    @Override
-    public void insertMessages(@IntRange(from = 0) int bufferId, List<Message> messages) {
-        FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(databaseWrapper -> {
-            for (Message message : messages) {
-                client.unbufferBuffer(message.bufferInfo);
-                synchronized (backlogs) {
-                    if (backlogs.get(bufferId) != null)
-                        backlogs.get(bufferId).add(message);
-                    client.bufferSyncer().addActivity(message);
-                    message.save();
-                    message.bufferInfo.save();
-                }
-                updateLatest(message);
-            }
-
-            synchronized (backlogs) {
-                if (backlogs.get(bufferId) != null)
-                    backlogs.get(bufferId).addAll(messages);
-            }
-        });
-    }
-
-    public void updateLatest(@NonNull Message message) {
-        if (message.id > getLatest(message.bufferInfo.id)) {
-            latestMessage.put(message.bufferInfo.id, message.id);
-        }
-    }
-
-    @Override
-    public void insertMessages(@NonNull Message... messages) {
-        FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(databaseWrapper -> {
-            for (Message message : messages) {
-                client.unbufferBuffer(message.bufferInfo);
-                synchronized (backlogs) {
-                    if (backlogs.get(message.bufferInfo.id) != null)
-                        backlogs.get(message.bufferInfo.id).add(message);
-                    if (client.bufferSyncer() != null)
-                        client.bufferSyncer().addActivity(message);
-                    message.save();
-                    message.bufferInfo.save();
-                }
-                updateLatest(message);
-            }
-        });
-    }
-
-    @Override
-    public void insertMessages(List<Message> messages) {
-        FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(databaseWrapper -> {
-            for (Message message : messages) {
-                client.unbufferBuffer(message.bufferInfo);
-                synchronized (backlogs) {
-                    if (backlogs.get(message.bufferInfo.id) != null)
-                        backlogs.get(message.bufferInfo.id).add(message);
-                    client.bufferSyncer().addActivity(message);
-                    message.save();
-                    message.bufferInfo.save();
-                }
-                updateLatest(message);
-            }
-        });
-    }
-
-    public void setClient(Client client) {
-        this.client = client;
-    }
-
-    @Override
-    public void markBufferUnused(@IntRange(from = 0) int bufferid) {
-        synchronized (backlogs) {
-            BacklogFilter filter = filters.get(bufferid);
-            if (backlogs.get(bufferid) != null && filter != null)
-                backlogs.get(bufferid).removeCallbacks();
-            backlogs.remove(bufferid);
-            if (filter != null)
-                filter.onDestroy();
-            if (filteredBacklogs.get(bufferid) != null)
-                filteredBacklogs.get(bufferid).removeCallbacks();
-            filteredBacklogs.delete(bufferid);
-            synchronized (filterSet) {
-                filterSet.remove(filter);
-                filters.delete(bufferid);
-            }
-        }
-    }
-
-    @Override
-    public void clear(@IntRange(from = 0) int bufferid) {
-        synchronized (backlogs) {
-            Log.w("libquassel", String.format("Backlog gap detected, clearing backlog for buffer %d", bufferid));
-            SQLite.delete().from(Message.class).where(Message_Table.bufferInfo_id.eq(bufferid)).execute();
-        }
-    }
-
-    @NonNull
-    @Override
-    public Set<BacklogFilter> getFilters() {
-        return filterSet;
-    }
-
-    @Override
-    public void setMarkerLine(@IntRange(from = 0) int buffer, int msgId) {
-        BacklogFilter filter = filters.get(buffer);
-        if (filter != null) {
-            Log.w("DEBUG", "Setting markerline for open buffer");
-            filter.setMarkerlineMessage(msgId);
-        } else {
-            Log.w("DEBUG", "Buffer not open");
-        }
-    }
-
-    @Override
-    public void merge(@IntRange(from = 0) int buffer1, @IntRange(from = 0) int buffer2) {
-        SQLite.update(Message.class).set(Message_Table.bufferInfo_id.eq(buffer1)).where(Message_Table.bufferInfo_id.eq(buffer2)).execute();
-    }
-
-    private void ensureExisting(@IntRange(from = -1) int bufferId) {
-        assertNotNull(client);
-        if (backlogs.get(bufferId) == null) {
-            AndroidObservableComparableSortedList<Message> messages = new AndroidObservableComparableSortedList<>(Message.class, true);
-            AndroidObservableComparableSortedList<Message> filteredMessages = new AndroidObservableComparableSortedList<>(Message.class, true);
-            BacklogFilter backlogFilter = new BacklogFilter(client, bufferId, messages, filteredMessages);
-            if (client.bufferSyncer() != null) {
-                backlogFilter.setMarkerlineMessage(client.bufferSyncer().markerLine(bufferId));
-                Log.w("DEBUG", "Setting markerline for newly opened buffer");
-            } else {
-                Log.w("DEBUG", "BufferSyncer is null!");
-            }
-            messages.addCallback(backlogFilter);
-            synchronized (backlogs) {
-                backlogs.put(bufferId, messages);
-            }
-            executor.submit((Runnable) () -> {
-                List<Message> messageList = SQLite.select().from(Message.class).where(Message_Table.bufferInfo_id.eq(bufferId)).queryList();
-                messages.addAll(messageList);
-            });
-            filteredBacklogs.put(bufferId, filteredMessages);
-            synchronized (filterSet) {
-                filters.put(bufferId, backlogFilter);
-                filterSet.add(backlogFilter);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffer.java b/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffer.java
deleted file mode 100644
index f1f404a9a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.buffers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public interface Buffer {
-    @NonNull
-    BufferInfo getInfo();
-
-    void setInfo(@NonNull BufferInfo info);
-
-    @Nullable
-    String getName();
-
-    @NonNull
-    ObservableElement<BufferInfo.BufferStatus> getStatus();
-
-    void renameBuffer(@NonNull String newName);
-
-    @NonNull
-    String objectName();
-
-    @NonNull
-    String objectName(String name);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffers.java b/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffers.java
deleted file mode 100644
index dcbd564f9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/Buffers.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.buffers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-
-public class Buffers {
-    private Buffers() {
-
-    }
-
-    @Nullable
-    public static Buffer fromType(@NonNull BufferInfo info, @NonNull Client client) {
-        switch (info.type) {
-            case QUERY:
-                return new QueryBuffer(info, client);
-            case CHANNEL:
-                return new ChannelBuffer(info, client);
-            case STATUS:
-                return new StatusBuffer(info, client);
-            default:
-                return null;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/ChannelBuffer.java b/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/ChannelBuffer.java
deleted file mode 100644
index b68a12f34..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/ChannelBuffer.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.buffers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class ChannelBuffer implements Buffer {
-    @NonNull
-    private final Client client;
-    private final ObservableElement<BufferInfo.BufferStatus> status = new ObservableElement<>();
-    @NonNull
-    private BufferInfo info;
-
-    public ChannelBuffer(@NonNull BufferInfo info, @NonNull Client client) {
-        this.info = info;
-        this.client = client;
-    }
-
-    @NonNull
-    @Override
-    public BufferInfo getInfo() {
-        return info;
-    }
-
-    @Override
-    public void setInfo(@NonNull BufferInfo info) {
-        this.info = info;
-    }
-
-    @Nullable
-    @Override
-    public String getName() {
-        return getInfo().name;
-    }
-
-    @NonNull
-    @Override
-    public ObservableElement<BufferInfo.BufferStatus> getStatus() {
-        // FIXME: Make this dynamic
-        status.set(getChannel() == null ? BufferInfo.BufferStatus.OFFLINE : BufferInfo.BufferStatus.ONLINE);
-        return status;
-    }
-
-    @Override
-    public void renameBuffer(@NonNull String newName) {
-        info.name = newName;
-    }
-
-    @NonNull
-    @Override
-    public String objectName() {
-        return objectName(info.name);
-    }
-
-    @NonNull
-    @Override
-    public String objectName(String name) {
-        return info.networkId + "/" + name;
-    }
-
-    @Nullable
-    public QIrcChannel getChannel() {
-        return client.networkManager().network(info.networkId).ircChannel(info.name);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ChannelBuffer{" +
-                "info=" + info +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/QueryBuffer.java b/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/QueryBuffer.java
deleted file mode 100644
index abba42b89..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/QueryBuffer.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.buffers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class QueryBuffer implements Buffer {
-    @NonNull
-    private final Client client;
-    private final ObservableElement<BufferInfo.BufferStatus> status = new ObservableElement<>();
-    @NonNull
-    private BufferInfo info;
-
-    public QueryBuffer(@NonNull BufferInfo info, @NonNull Client client) {
-        this.info = info;
-        this.client = client;
-    }
-
-    @NonNull
-    @Override
-    public BufferInfo getInfo() {
-        return info;
-    }
-
-    @Override
-    public void setInfo(@NonNull BufferInfo info) {
-        this.info = info;
-    }
-
-    @Nullable
-    @Override
-    public String getName() {
-        return getInfo().name;
-    }
-
-    @NonNull
-    @Override
-    public ObservableElement<BufferInfo.BufferStatus> getStatus() {
-        // FIXME: Make this dynamic
-        status.set((getUser() == null) ? BufferInfo.BufferStatus.OFFLINE :
-                (getUser().isAway()) ? BufferInfo.BufferStatus.AWAY :
-                        BufferInfo.BufferStatus.ONLINE);
-        return status;
-    }
-
-    @Override
-    public void renameBuffer(@NonNull String newName) {
-        info.name = newName;
-    }
-
-    @NonNull
-    @Override
-    public String objectName() {
-        return objectName(info.name);
-    }
-
-    @NonNull
-    @Override
-    public String objectName(String name) {
-        return info.networkId + "/" + name;
-    }
-
-    @Nullable
-    public QIrcUser getUser() {
-        return client.networkManager().network(info.networkId).ircUser(info.name);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "QueryBuffer{" +
-                "info=" + info +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/StatusBuffer.java b/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/StatusBuffer.java
deleted file mode 100644
index f1b8ce7ba..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/buffers/StatusBuffer.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.buffers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class StatusBuffer implements Buffer {
-    @NonNull
-    private final Client client;
-    private final ObservableElement<BufferInfo.BufferStatus> status = new ObservableElement<>();
-    @NonNull
-    private BufferInfo info;
-
-    public StatusBuffer(@NonNull BufferInfo info, @NonNull Client client) {
-        this.info = info;
-        this.client = client;
-    }
-
-    public void updateStatus() {
-        status.set(getNetwork() != null && getNetwork().isConnected() ? BufferInfo.BufferStatus.ONLINE : BufferInfo.BufferStatus.OFFLINE);
-    }
-
-    @NonNull
-    @Override
-    public BufferInfo getInfo() {
-        return info;
-    }
-
-    @Override
-    public void setInfo(@NonNull BufferInfo info) {
-        this.info = info;
-    }
-
-    public QNetwork getNetwork() {
-        return client.networkManager().network(info.networkId);
-    }
-
-    @Nullable
-    @Override
-    public String getName() {
-        return getNetwork().networkName();
-    }
-
-    @NonNull
-    @Override
-    public ObservableElement<BufferInfo.BufferStatus> getStatus() {
-        updateStatus();
-        return status;
-    }
-
-    @NonNull
-    @Override
-    public String objectName() {
-        return objectName(info.name);
-    }
-
-    @NonNull
-    @Override
-    public String objectName(String name) {
-        return info.networkId + "/" + name;
-    }
-
-    @Override
-    public void renameBuffer(@NonNull String newName) {
-        this.info.name = newName;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "StatusBuffer{" +
-                "info=" + info +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java
deleted file mode 100644
index eec59165d..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/ConnectedDatabase.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.orm;
-
-import com.raizlabs.android.dbflow.annotation.Database;
-
-@Database(name = ConnectedDatabase.NAME, version = ConnectedDatabase.VERSION)
-public class ConnectedDatabase {
-    public static final String NAME = "ConnectedDatabase";
-    public static final int VERSION = 2;
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java
deleted file mode 100644
index 8bfa78dfb..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/BufferTypeConverter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.orm.converters;
-
-import com.raizlabs.android.dbflow.converter.TypeConverter;
-
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-
-@com.raizlabs.android.dbflow.annotation.TypeConverter
-public class BufferTypeConverter extends TypeConverter<Short, BufferInfo.Type> {
-    @Override
-    public Short getDBValue(BufferInfo.Type model) {
-        return model.id;
-    }
-
-    @Override
-    public BufferInfo.Type getModelValue(Short data) {
-        return BufferInfo.Type.fromId(data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java
deleted file mode 100644
index 31ee0fdd8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/DateTimeConverter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.orm.converters;
-
-import com.raizlabs.android.dbflow.converter.TypeConverter;
-
-import org.joda.time.DateTime;
-
-@com.raizlabs.android.dbflow.annotation.TypeConverter
-public class DateTimeConverter extends TypeConverter<Long, DateTime> {
-    @Override
-    public Long getDBValue(DateTime model) {
-        return model.getMillis();
-    }
-
-    @Override
-    public DateTime getModelValue(Long data) {
-        return new DateTime(data.longValue());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java
deleted file mode 100644
index 6ae99fa3f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageFlagsConverter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.orm.converters;
-
-import com.raizlabs.android.dbflow.converter.TypeConverter;
-
-import de.kuschku.libquassel.message.Message;
-
-@com.raizlabs.android.dbflow.annotation.TypeConverter
-public class MessageFlagsConverter extends TypeConverter<Short, Message.Flags> {
-    @Override
-    public Short getDBValue(Message.Flags model) {
-        return (short) model.flags;
-    }
-
-    @Override
-    public Message.Flags getModelValue(Short data) {
-        return new Message.Flags(data.byteValue());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java b/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java
deleted file mode 100644
index 54da63107..000000000
--- a/app/src/main/java/de/kuschku/libquassel/localtypes/orm/converters/MessageTypeConverter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.localtypes.orm.converters;
-
-import com.raizlabs.android.dbflow.converter.TypeConverter;
-
-import de.kuschku.libquassel.message.Message;
-
-@com.raizlabs.android.dbflow.annotation.TypeConverter
-public class MessageTypeConverter extends TypeConverter<Integer, Message.Type> {
-    @Override
-    public Integer getDBValue(Message.Type model) {
-        return model.value;
-    }
-
-    @Override
-    public Message.Type getModelValue(Integer data) {
-        return Message.Type.fromId(data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/message/Message.java b/app/src/main/java/de/kuschku/libquassel/message/Message.java
deleted file mode 100644
index eb795a5b9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/message/Message.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.message;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.raizlabs.android.dbflow.annotation.Column;
-import com.raizlabs.android.dbflow.annotation.ForeignKey;
-import com.raizlabs.android.dbflow.annotation.PrimaryKey;
-import com.raizlabs.android.dbflow.annotation.Table;
-import com.raizlabs.android.dbflow.structure.BaseModel;
-
-import org.joda.time.DateTime;
-import org.joda.time.LocalDate;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.observables.ContentComparable;
-
-@Table(database = ConnectedDatabase.class)
-public class Message extends BaseModel implements ContentComparable<Message> {
-    @PrimaryKey
-    public int id;
-
-    @Column
-    public DateTime time;
-
-    @Column
-    public Type type;
-
-    @Column
-    public Flags flags;
-
-    @ForeignKey
-    public BufferInfo bufferInfo;
-
-    @Column
-    public String sender;
-
-    @Column
-    public String content;
-
-    public LocalDate date;
-
-    public static Message create(int id, DateTime time, Type type, Flags flags, BufferInfo bufferInfo, String sender, String content) {
-        Message message = new Message();
-        message.id = id;
-        message.time = time;
-        message.type = type;
-        message.flags = flags;
-        message.bufferInfo = bufferInfo;
-        message.sender = sender;
-        message.content = content;
-        return message;
-    }
-
-    public LocalDate getLocalDate() {
-        if (date == null)
-            date = time.toLocalDate();
-        return date;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "Message{" +
-                "id=" + id +
-                ", time=" + time +
-                ", type=" + type +
-                ", flags=" + flags +
-                ", bufferInfo=" + bufferInfo +
-                ", sender='" + sender + '\'' +
-                ", content='" + content + '\'' +
-                '}';
-    }
-
-    @Override
-    public boolean areContentsTheSame(@Nullable Message message) {
-        return message != null && this.id == message.id && Objects.equals(this.sender, message.sender) && this.type == message.type && Objects.equals(this.time, message.time) && Objects.equals(this.content, message.content) && this.flags == message.flags;
-    }
-
-    @Override
-    public boolean areItemsTheSame(@NonNull Message other) {
-        if (this.type == Type.DayChange && other.type == Type.DayChange)
-            return this.bufferInfo.id == other.bufferInfo.id && this.time.equals(other.time);
-        else if (this.type == Type.DayChange)
-            return false;
-        else if (other.type == Type.DayChange)
-            return false;
-        else
-            return this.id == other.id;
-    }
-
-    @Override
-    public int hashCode() {
-        return id;
-    }
-
-    @Override
-    public int compareTo(@NonNull Message another) {
-        if (this.type == Type.DayChange || another.type == Type.DayChange) {
-            return this.time.compareTo(another.time);
-        } else if (this.id == another.id) {
-            if (this.type == Type.Markerline)
-                return 1;
-            else if (another.type == Type.Markerline)
-                return -1;
-            else
-                return 0;
-        } else {
-            return this.id - another.id;
-        }
-    }
-
-    public enum Type {
-        Plain(0x00001),
-        Notice(0x00002),
-        Action(0x00004),
-        Nick(0x00008),
-        Mode(0x00010),
-        Join(0x00020),
-        Part(0x00040),
-        Quit(0x00080),
-        Kick(0x00100),
-        Kill(0x00200),
-        Server(0x00400),
-        Info(0x00800),
-        Error(0x01000),
-        DayChange(0x02000),
-        Topic(0x04000),
-        NetsplitJoin(0x08000),
-        NetsplitQuit(0x10000),
-        Invite(0x20000),
-        Markerline(0x40000);
-
-        public final int value;
-
-        Type(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static Type fromId(int id) {
-            switch (id) {
-                case 0x00001:
-                    return Plain;
-                case 0x00002:
-                    return Notice;
-                case 0x00004:
-                    return Action;
-                case 0x00008:
-                    return Nick;
-                case 0x00010:
-                    return Mode;
-                case 0x00020:
-                    return Join;
-                case 0x00040:
-                    return Part;
-                case 0x00080:
-                    return Quit;
-                case 0x00100:
-                    return Kick;
-                case 0x00200:
-                    return Kill;
-                case 0x00400:
-                    return Server;
-                case 0x00800:
-                    return Info;
-                case 0x01000:
-                    return Error;
-                case 0x02000:
-                    return DayChange;
-                case 0x04000:
-                    return Topic;
-                case 0x08000:
-                    return NetsplitJoin;
-                case 0x10000:
-                    return NetsplitQuit;
-                case 0x20000:
-                    return Invite;
-                default:
-                    return Error;
-            }
-        }
-
-    }
-
-    public static class Flags {
-        public final boolean Self;
-        public final boolean Highlight;
-        public final boolean Redirected;
-        public final boolean ServerMsg;
-        public final boolean Backlog;
-
-        public final byte flags;
-
-        public Flags(boolean self, boolean highlight, boolean redirected, boolean serverMsg, boolean backlog) {
-            Self = self;
-            Highlight = highlight;
-            Redirected = redirected;
-            ServerMsg = serverMsg;
-            Backlog = backlog;
-
-            flags = (byte) ((Self ? 0x01 : 0x00) |
-                    (Highlight ? 0x02 : 0x00) |
-                    (Redirected ? 0x04 : 0x00) |
-                    (ServerMsg ? 0x08 : 0x00) |
-                    (Backlog ? 0x80 : 0x00));
-        }
-
-        public Flags(byte flags) {
-            this.flags = flags;
-            Self = (0 != (flags & 0x01));
-            Highlight = (0 != (flags & 0x02));
-            Redirected = (0 != (flags & 0x04));
-            ServerMsg = (0 != (flags & 0x08));
-            Backlog = (0 != (flags & 0x80));
-        }
-
-        @NonNull
-        @Override
-        public String toString() {
-            final StringBuilder output = new StringBuilder("Flags[, ");
-            if (Self) output.append("Self, ");
-            if (Highlight) output.append("Highlight, ");
-            if (Redirected) output.append("Redirected, ");
-            if (ServerMsg) output.append("ServerMsg, ");
-            if (Backlog) output.append("Backlog, ");
-            output.deleteCharAt(output.length() - 1);
-            output.deleteCharAt(output.length() - 1);
-            output.append("]");
-            output.append(flags);
-            return output.toString();
-        }
-
-    }
-
-    public static class MessageComparator implements Comparator<Message>, Serializable {
-        @Override
-        public int compare(@NonNull Message o1, @NonNull Message o2) {
-            return o1.id - o2.id;
-        }
-
-        @Override
-        public boolean equals(@Nullable Object obj) {
-            return obj == this;
-        }
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/MessageTypeRegistry.java b/app/src/main/java/de/kuschku/libquassel/objects/MessageTypeRegistry.java
deleted file mode 100644
index 5633e9d3f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/MessageTypeRegistry.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.objects.serializers.ClientInitAckSerializer;
-import de.kuschku.libquassel.objects.serializers.ClientInitRejectSerializer;
-import de.kuschku.libquassel.objects.serializers.ClientInitSerializer;
-import de.kuschku.libquassel.objects.serializers.ClientLoginAckSerializer;
-import de.kuschku.libquassel.objects.serializers.ClientLoginRejectSerializer;
-import de.kuschku.libquassel.objects.serializers.ClientLoginSerializer;
-import de.kuschku.libquassel.objects.serializers.CoreSetupAckSerializer;
-import de.kuschku.libquassel.objects.serializers.CoreSetupDataSerializer;
-import de.kuschku.libquassel.objects.serializers.CoreSetupRejectSerializer;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.objects.serializers.SessionInitSerializer;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class MessageTypeRegistry {
-    @NonNull
-    private static final Map<String, ObjectSerializer> serializerMap = new HashMap<>();
-
-    static {
-        serializerMap.put("ClientInit", ClientInitSerializer.get());
-        serializerMap.put("ClientInitAck", ClientInitAckSerializer.get());
-        serializerMap.put("ClientInitReject", ClientInitRejectSerializer.get());
-        serializerMap.put("ClientLogin", ClientLoginSerializer.get());
-        serializerMap.put("ClientLoginAck", ClientLoginAckSerializer.get());
-        serializerMap.put("ClientLoginReject", ClientLoginRejectSerializer.get());
-        serializerMap.put("CoreSetupData", CoreSetupDataSerializer.get());
-        serializerMap.put("CoreSetupAck", CoreSetupAckSerializer.get());
-        serializerMap.put("CoreSetupReject", CoreSetupRejectSerializer.get());
-        serializerMap.put("SessionInit", SessionInitSerializer.get());
-    }
-
-    // Disable Constructor
-    private MessageTypeRegistry() {
-
-    }
-
-    @NonNull
-    public static <T> T from(@NonNull final Map<String, QVariant> function) {
-        final String msgType = (String) function.get("MsgType").data;
-        if (serializerMap.containsKey(msgType))
-            return (T) serializerMap.get(msgType).fromLegacy(function);
-        else
-            throw new IllegalArgumentException(String.format("Unknown MessageType: %s", msgType));
-    }
-
-    @NonNull
-    public static <T> QVariant<Map<String, QVariant>> toVariantMap(@NonNull final T data) {
-        assertTrue(serializerMap.containsKey(data.getClass().getSimpleName()));
-
-        final QVariant<Map<String, QVariant>> map = new QVariant<>(serializerMap.get(data.getClass().getSimpleName()).toVariantMap(data));
-        map.data.put("MsgType", new QVariant(QMetaType.Type.QString, data.getClass().getSimpleName()));
-        return map;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitAckSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitAckSerializer.java
deleted file mode 100644
index ea3725b3e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitAckSerializer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientInitAck;
-import de.kuschku.libquassel.objects.types.StorageBackend;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class ClientInitAckSerializer implements ObjectSerializer<ClientInitAck> {
-    @NonNull
-    private static final ClientInitAckSerializer serializer = new ClientInitAckSerializer();
-
-    private ClientInitAckSerializer() {
-    }
-
-    @NonNull
-    public static ClientInitAckSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientInitAck data) {
-        final List<Map<String, QVariant<Object>>> storageBackends = new ArrayList<>();
-        final StorageBackendSerializer storageBackendSerializer = StorageBackendSerializer.get();
-        if (data.StorageBackends != null)
-            for (StorageBackend backend : data.StorageBackends) {
-                storageBackends.add(storageBackendSerializer.toVariantMap(backend));
-            }
-
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("Configured", new QVariant<>(QMetaType.Type.Bool, data.Configured));
-        map.put("LoginEnabled", new QVariant<>(QMetaType.Type.Bool, data.LoginEnabled));
-        map.put("StorageBackends", new QVariant<>(QMetaType.Type.QVariantList, storageBackends));
-        map.put("CoreFeatures", new QVariant<>(QMetaType.Type.Int, data.CoreFeatures));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public ClientInitAck fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientInitAck fromLegacy(@NonNull Map<String, QVariant> map) {
-        final List<StorageBackend> storageBackends = new ArrayList<>();
-        if (map.containsKey("StorageBackends")) {
-            final StorageBackendSerializer storageBackendSerializer = StorageBackendSerializer.get();
-            for (Map<String, QVariant> backend : (List<Map<String, QVariant>>) map.get("StorageBackends").data) {
-                storageBackends.add(storageBackendSerializer.fromLegacy(backend));
-            }
-        }
-        final int coreFeatures = map.containsKey("CoreFeatures") ? ((QVariant<Integer>) map.get("CoreFeatures")).data : 0x00;
-        return new ClientInitAck(
-                ((QVariant<Boolean>) map.get("Configured")).data,
-                ((QVariant<Boolean>) map.get("LoginEnabled")).data,
-                coreFeatures,
-                storageBackends
-        );
-    }
-
-    @Nullable
-    @Override
-    public ClientInitAck from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitRejectSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitRejectSerializer.java
deleted file mode 100644
index 5b861cf71..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitRejectSerializer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientInitReject;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class ClientInitRejectSerializer implements ObjectSerializer<ClientInitReject> {
-    @NonNull
-    private static final ClientInitRejectSerializer serializer = new ClientInitRejectSerializer();
-
-    private ClientInitRejectSerializer() {
-    }
-
-    @NonNull
-    public static ClientInitRejectSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientInitReject data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("Error", new QVariant<>(QMetaType.Type.QString, data.Error));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public ClientInitReject fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientInitReject fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new ClientInitReject(
-                (String) map.get("Error").data
-        );
-    }
-
-    @Override
-    public ClientInitReject from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitSerializer.java
deleted file mode 100644
index bb0e5aaf9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientInitSerializer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientInit;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class ClientInitSerializer implements ObjectSerializer<ClientInit> {
-    @NonNull
-    private static final ClientInitSerializer serializer = new ClientInitSerializer();
-
-    private ClientInitSerializer() {
-    }
-
-    @NonNull
-    public static ClientInitSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientInit data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("ClientDate", new QVariant<>(QMetaType.Type.QString, data.ClientDate));
-        map.put("UseSsl", new QVariant<>(QMetaType.Type.Bool, data.UseSsl));
-        map.put("ClientVersion", new QVariant<>(QMetaType.Type.QString, data.ClientVersion));
-        map.put("UseCompression", new QVariant<>(QMetaType.Type.Bool, data.UseCompression));
-        map.put("ProtocolVersion", new QVariant<>(QMetaType.Type.Int, data.ProtocolVersion));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public ClientInit fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientInit fromLegacy(@NonNull final Map<String, QVariant> map) {
-        return new ClientInit(
-                ((QVariant<String>) map.get("ClientDate")).data,
-                ((QVariant<Boolean>) map.get("UseSsl")).data,
-                ((QVariant<String>) map.get("ClientVersion")).data,
-                ((QVariant<Boolean>) map.get("UseCompression")).data,
-                ((QVariant<Integer>) map.get("ProtocolVersion")).data
-        );
-    }
-
-    @Override
-    public ClientInit from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginAckSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginAckSerializer.java
deleted file mode 100644
index b6b444c3c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginAckSerializer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientLoginAck;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class ClientLoginAckSerializer implements ObjectSerializer<ClientLoginAck> {
-    @NonNull
-    private static final ClientLoginAckSerializer serializer = new ClientLoginAckSerializer();
-
-    private ClientLoginAckSerializer() {
-    }
-
-    @NonNull
-    public static ClientLoginAckSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientLoginAck data) {
-        return new HashMap<>();
-    }
-
-    @NonNull
-    @Override
-    public ClientLoginAck fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientLoginAck fromLegacy(@NonNull final Map<String, QVariant> map) {
-        return new ClientLoginAck();
-    }
-
-    @Override
-    public ClientLoginAck from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginRejectSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginRejectSerializer.java
deleted file mode 100644
index 2c45e0aa6..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginRejectSerializer.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientLoginReject;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class ClientLoginRejectSerializer implements ObjectSerializer<ClientLoginReject> {
-    @NonNull
-    private static final ClientLoginRejectSerializer serializer = new ClientLoginRejectSerializer();
-
-    private ClientLoginRejectSerializer() {
-    }
-
-    @NonNull
-    public static ClientLoginRejectSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientLoginReject data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        assertNotNull(map);
-
-        map.put("Error", new QVariant<>(QMetaType.Type.QString, data.Error));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public ClientLoginReject fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientLoginReject fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new ClientLoginReject(
-                (String) map.get("Error").data
-        );
-    }
-
-    @Override
-    public ClientLoginReject from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginSerializer.java
deleted file mode 100644
index 15936211f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ClientLoginSerializer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.ClientLogin;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class ClientLoginSerializer implements ObjectSerializer<ClientLogin> {
-    @NonNull
-    private static final ClientLoginSerializer serializer = new ClientLoginSerializer();
-
-    private ClientLoginSerializer() {
-    }
-
-    @NonNull
-    public static ClientLoginSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final ClientLogin data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        map.put("User", new QVariant<>(QMetaType.Type.QString, data.User));
-        map.put("Password", new QVariant<>(QMetaType.Type.QString, data.Password));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public ClientLogin fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public ClientLogin fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new ClientLogin(
-                (String) map.get("User").data,
-                (String) map.get("Password").data
-        );
-    }
-
-    @Override
-    public ClientLogin from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupAckSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupAckSerializer.java
deleted file mode 100644
index bc5ba9393..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupAckSerializer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.CoreSetupAck;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class CoreSetupAckSerializer implements ObjectSerializer<CoreSetupAck> {
-    @NonNull
-    private static final CoreSetupAckSerializer serializer = new CoreSetupAckSerializer();
-
-    private CoreSetupAckSerializer() {
-    }
-
-    @NonNull
-    public static CoreSetupAckSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final CoreSetupAck data) {
-        return new HashMap<>();
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupAck fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupAck fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new CoreSetupAck();
-    }
-
-    @Override
-    public CoreSetupAck from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupDataSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupDataSerializer.java
deleted file mode 100644
index 73cb431fc..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupDataSerializer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.CoreSetupData;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class CoreSetupDataSerializer implements ObjectSerializer<CoreSetupData> {
-    @NonNull
-    private static final CoreSetupDataSerializer serializer = new CoreSetupDataSerializer();
-
-    private CoreSetupDataSerializer() {
-    }
-
-    @NonNull
-    public static CoreSetupDataSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final CoreSetupData data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("SetupData", new QVariant<>(QMetaType.Type.QVariantMap, SetupDataInitializer.get().toVariantMap(data.SetupData)));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupData fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupData fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new CoreSetupData(
-                SetupDataInitializer.get().fromLegacy((Map<String, QVariant>) map.get("SetupData").data)
-        );
-    }
-
-    @Override
-    public CoreSetupData from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupRejectSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupRejectSerializer.java
deleted file mode 100644
index ebef8b2e3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/CoreSetupRejectSerializer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.CoreSetupReject;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class CoreSetupRejectSerializer implements ObjectSerializer<CoreSetupReject> {
-    @NonNull
-    private static final CoreSetupRejectSerializer serializer = new CoreSetupRejectSerializer();
-
-    private CoreSetupRejectSerializer() {
-    }
-
-    @NonNull
-    public static CoreSetupRejectSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final CoreSetupReject data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("Error", new QVariant<>(QMetaType.Type.QString, data.Error));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupReject fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public CoreSetupReject fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new CoreSetupReject(
-                (String) map.get("Error").data
-        );
-    }
-
-    @Override
-    public CoreSetupReject from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
deleted file mode 100644
index 80d43e454..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/NetworkServerSerializer.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class NetworkServerSerializer implements ObjectSerializer<NetworkServer> {
-    @NonNull
-    private static final NetworkServerSerializer serializer = new NetworkServerSerializer();
-
-    private NetworkServerSerializer() {
-    }
-
-    @NonNull
-    public static NetworkServerSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull NetworkServer data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        map.put("UseSSL", new QVariant<>(QMetaType.Type.Bool, data.useSSL));
-        map.put("sslVersion", new QVariant<>(QMetaType.Type.Int, data.sslVersion));
-        map.put("Host", new QVariant<>(QMetaType.Type.QString, data.host));
-        map.put("Port", new QVariant<>(QMetaType.Type.Int, data.port));
-        map.put("Password", new QVariant<>(QMetaType.Type.QString, data.password));
-        map.put("UseProxy", new QVariant<>(QMetaType.Type.Bool, data.useProxy));
-        map.put("ProxyType", new QVariant<>(QMetaType.Type.Int, data.proxyType.id));
-        map.put("ProxyHost", new QVariant<>(QMetaType.Type.QString, data.proxyHost));
-        map.put("ProxyPort", new QVariant<>(QMetaType.Type.Int, data.proxyPort));
-        map.put("ProxyUser", new QVariant<>(QMetaType.Type.QString, data.proxyUser));
-        map.put("ProxyPass", new QVariant<>(QMetaType.Type.QString, data.proxyPass));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public NetworkServer fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public NetworkServer fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new NetworkServer(
-                (boolean) map.get("UseSSL").data,
-                (int) map.get("sslVersion").data,
-                (String) map.get("Host").data,
-                (int) map.get("Port").data,
-                (String) map.get("Password").data,
-                (boolean) map.get("UseProxy").data,
-                NetworkServer.ProxyType.fromId((int) map.get("ProxyType").data),
-                (String) map.get("ProxyHost").data,
-                (int) map.get("ProxyPort").data,
-                (String) map.get("ProxyUser").data,
-                (String) map.get("ProxyPass").data
-        );
-    }
-
-    @Override
-    public NetworkServer from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ObjectSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/ObjectSerializer.java
deleted file mode 100644
index d2486ebb7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/ObjectSerializer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public interface ObjectSerializer<T> {
-    @Nullable
-    Map<String, QVariant<Object>> toVariantMap(@NonNull T data);
-
-    @NonNull
-    T fromDatastream(@NonNull Map<String, QVariant> map);
-
-    @NonNull
-    T fromLegacy(@NonNull Map<String, QVariant> map);
-
-    @Nullable
-    T from(@NonNull SerializedFunction function);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionInitSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionInitSerializer.java
deleted file mode 100644
index b0421697b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionInitSerializer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.SessionInit;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class SessionInitSerializer implements ObjectSerializer<SessionInit> {
-    @NonNull
-    private static final SessionInitSerializer serializer = new SessionInitSerializer();
-
-    private SessionInitSerializer() {
-    }
-
-    @NonNull
-    public static SessionInitSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final SessionInit data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("SessionState", new QVariant<>(QMetaType.Type.QVariantMap, SessionStateSerializer.get().toVariantMap(data.SessionState)));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public SessionInit fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public SessionInit fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new SessionInit(
-                SessionStateSerializer.get().fromLegacy((Map<String, QVariant>) map.get("SessionState").data)
-        );
-    }
-
-    @Override
-    public SessionInit from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionStateSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionStateSerializer.java
deleted file mode 100644
index 060cca0b8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SessionStateSerializer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.SessionState;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class SessionStateSerializer implements ObjectSerializer<SessionState> {
-    @NonNull
-    private static final SessionStateSerializer serializer = new SessionStateSerializer();
-
-    private SessionStateSerializer() {
-    }
-
-    @NonNull
-    public static SessionStateSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final SessionState data) {
-        return null;
-    }
-
-    @NonNull
-    @Override
-    public SessionState fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public SessionState fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new SessionState(
-                (List<QIdentity>) map.get("Identities").or(new ArrayList<>()),
-                (List<BufferInfo>) map.get("BufferInfos").or(new ArrayList<>()),
-                (List<Integer>) map.get("NetworkIds").or(new ArrayList<>())
-        );
-    }
-
-    @Override
-    public SessionState from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SetupDataInitializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/SetupDataInitializer.java
deleted file mode 100644
index eac46bd79..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/SetupDataInitializer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.SetupData;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class SetupDataInitializer implements ObjectSerializer<SetupData> {
-    @NonNull
-    private static final SetupDataInitializer serializer = new SetupDataInitializer();
-
-    private SetupDataInitializer() {
-    }
-
-    @NonNull
-    public static SetupDataInitializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final SetupData data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        map.put("AdminPasswd", new QVariant<>(QMetaType.Type.QString, data.AdminPasswd));
-        map.put("AdminUser", new QVariant<>(QMetaType.Type.QString, data.AdminUser));
-        map.put("Backend", new QVariant<>(QMetaType.Type.QString, data.Backend));
-        map.put("ConnectionProperties", new QVariant<>(QMetaType.Type.QVariantMap, data.ConnectionProperties));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public SetupData fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public SetupData fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new SetupData(
-                (String) map.get("AdminPasswd").data,
-                (String) map.get("AdminUser").data,
-                (String) map.get("Backend").data,
-                (Map<String, QVariant>) map.get("ConnectionProperties").data
-        );
-    }
-
-    @Override
-    public SetupData from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/StorageBackendSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/StorageBackendSerializer.java
deleted file mode 100644
index 1d1e8549e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/StorageBackendSerializer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.types.StorageBackend;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class StorageBackendSerializer implements ObjectSerializer<StorageBackend> {
-    @NonNull
-    private static final StorageBackendSerializer serializer = new StorageBackendSerializer();
-
-    private StorageBackendSerializer() {
-    }
-
-    @NonNull
-    public static StorageBackendSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull final StorageBackend data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        map.put("DisplayName", new QVariant<>(QMetaType.Type.QString, data.DisplayName));
-        map.put("SetupDefaults", new QVariant<>(QMetaType.Type.QVariantMap, data.SetupDefaults));
-        map.put("Description", new QVariant<>(QMetaType.Type.QString, data.Description));
-        map.put("SetupKeys", new QVariant<>(QMetaType.Type.QStringList, data.SetupKeys));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public StorageBackend fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public StorageBackend fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new StorageBackend(
-                (String) map.get("DisplayName").data,
-                (Map<String, QVariant>) map.get("SetupDefaults").data,
-                (String) map.get("Description").data,
-                (List<String>) map.get("SetupKeys").data
-        );
-    }
-
-    @Override
-    public StorageBackend from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/serializers/StringObjectMapSerializer.java b/app/src/main/java/de/kuschku/libquassel/objects/serializers/StringObjectMapSerializer.java
deleted file mode 100644
index b57b2be7c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/serializers/StringObjectMapSerializer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class StringObjectMapSerializer<T> implements ObjectSerializer<Map<String, T>> {
-    @NonNull
-    private static final StringObjectMapSerializer serializer = new StringObjectMapSerializer();
-
-    private StringObjectMapSerializer() {
-    }
-
-    @NonNull
-    public static <T> StringObjectMapSerializer<T> get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull Map<String, T> data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        for (Map.Entry<String, T> entry : data.entrySet()) {
-            map.put(entry.getKey(), new QVariant<>(entry.getValue()));
-        }
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, T> fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public Map<String, T> fromLegacy(@NonNull Map<String, QVariant> map) {
-        final HashMap<String, T> result = new HashMap<>();
-        for (Map.Entry<String, QVariant> entry : map.entrySet()) {
-            result.put(entry.getKey(), (T) entry.getValue().get());
-        }
-        return result;
-    }
-
-    @Override
-    public Map<String, T> from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInit.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInit.java
deleted file mode 100644
index 6743ea7d4..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInit.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class ClientInit {
-    @NonNull
-    public final String ClientDate;
-    public final boolean UseSsl;
-    @NonNull
-    public final String ClientVersion;
-    public final boolean UseCompression;
-    public final int ProtocolVersion;
-
-    public ClientInit(@NonNull String clientDate, boolean useSsl, @NonNull String clientVersion, boolean useCompression,
-                      int protocolVersion) {
-        ClientDate = clientDate;
-        UseSsl = useSsl;
-        ClientVersion = clientVersion;
-        UseCompression = useCompression;
-        ProtocolVersion = protocolVersion;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientInit{" +
-                "ClientDate='" + ClientDate + '\'' +
-                ", UseSsl=" + UseSsl +
-                ", ClientVersion='" + ClientVersion + '\'' +
-                ", UseCompression=" + UseCompression +
-                ", ProtocolVersion=" + ProtocolVersion +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitAck.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitAck.java
deleted file mode 100644
index 559577e99..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitAck.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-public class ClientInitAck extends CoreStatus {
-    public ClientInitAck(boolean configured, boolean loginEnabled, int coreFeatures, @Nullable List<StorageBackend> storageBackends) {
-        super(configured, loginEnabled, coreFeatures, storageBackends);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitReject.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitReject.java
deleted file mode 100644
index e430cc04c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientInitReject.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class ClientInitReject {
-    @Nullable
-    public final String Error;
-
-    public ClientInitReject(@Nullable String error) {
-        Error = error;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientInitReject{" +
-                "Error='" + Error + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLogin.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLogin.java
deleted file mode 100644
index c65b666be..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLogin.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class ClientLogin {
-    @NonNull
-    public final String User;
-    @NonNull
-    public final String Password;
-
-    public ClientLogin(@NonNull String user, @NonNull String password) {
-        User = user;
-        Password = password;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientLogin{" +
-                "User='" + User + '\'' +
-                ", Password='" + Password + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginAck.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginAck.java
deleted file mode 100644
index 1aa9f1bc8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginAck.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class ClientLoginAck {
-    public ClientLoginAck() {
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientLoginAck{}";
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginReject.java b/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginReject.java
deleted file mode 100644
index 9ceaaf587..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/ClientLoginReject.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class ClientLoginReject {
-    @Nullable
-    public final String Error;
-
-    public ClientLoginReject(@Nullable String error) {
-        Error = error;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientLoginReject{" +
-                "Error='" + Error + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/Command.java b/app/src/main/java/de/kuschku/libquassel/objects/types/Command.java
deleted file mode 100644
index 0a2d34c7a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/Command.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-
-public class Command {
-    public final BufferInfo buffer;
-    public final String command;
-
-    public Command(BufferInfo buffer, String command) {
-        this.buffer = buffer;
-        this.command = command;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupAck.java b/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupAck.java
deleted file mode 100644
index e1906bb2d..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupAck.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class CoreSetupAck {
-    public CoreSetupAck() {
-
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CoreSetupAck{}";
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupData.java b/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupData.java
deleted file mode 100644
index e310023ec..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupData.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class CoreSetupData {
-    @NonNull
-    public final SetupData SetupData;
-
-    public CoreSetupData(@NonNull SetupData setupData) {
-        SetupData = setupData;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CoreSetupData{" +
-                "SetupData=" + SetupData +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupReject.java b/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupReject.java
deleted file mode 100644
index de2f75bb5..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreSetupReject.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class CoreSetupReject {
-    @Nullable
-    public final String Error;
-
-    public CoreSetupReject(@Nullable String error) {
-        Error = error;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "CoreSetupReject{" +
-                "Error='" + Error + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreStatus.java b/app/src/main/java/de/kuschku/libquassel/objects/types/CoreStatus.java
deleted file mode 100644
index ab9807ace..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/CoreStatus.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class CoreStatus {
-    public final boolean Configured;
-    public final boolean LoginEnabled;
-    public final int CoreFeatures;
-    @Nullable
-    public final List<StorageBackend> StorageBackends;
-
-    public CoreStatus(boolean configured, boolean loginEnabled, int coreFeatures,
-                      @Nullable List<StorageBackend> storageBackends) {
-        Configured = configured;
-        LoginEnabled = loginEnabled;
-        CoreFeatures = coreFeatures;
-        StorageBackends = storageBackends;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "ClientInitAck{" +
-                "Configured=" + Configured +
-                ", LoginEnabled=" + LoginEnabled +
-                ", CoreFeatures=" + CoreFeatures +
-                ", StorageBackends=" + StorageBackends +
-                '}';
-    }
-
-    public ArrayList<Bundle> getStorageBackendsAsBundle() {
-        if (StorageBackends == null)
-            return null;
-
-        ArrayList<Bundle> backends = new ArrayList<>(StorageBackends.size());
-        for (StorageBackend backend : StorageBackends) {
-            Bundle bundle = new Bundle();
-            bundle.putString("displayName", backend.DisplayName);
-            bundle.putString("description", backend.Description);
-            Bundle defaults = new Bundle();
-            Bundle types = new Bundle();
-            for (String key : backend.SetupKeys) {
-                QVariant value = backend.SetupDefaults.get(key);
-                if (value != null) {
-                    switch (value.type.type) {
-                        case Int:
-                        case UInt: {
-                            defaults.putInt(key, (int) value.data);
-                            types.putString(key, "int");
-                        }
-                        break;
-                        case Short:
-                        case UShort: {
-                            defaults.putShort(key, (short) value.data);
-                            types.putString(key, "short");
-                        }
-                        break;
-                        case Long:
-                        case ULong: {
-                            defaults.putLong(key, (long) value.data);
-                            types.putString(key, "long");
-                        }
-                        break;
-                        case Bool: {
-                            defaults.putBoolean(key, (boolean) value.data);
-                            types.putString(key, "boolean");
-                        }
-                        break;
-                        case Double: {
-                            bundle.putDouble(key, (double) value.data);
-                            types.putString(key, "double");
-                        }
-                        break;
-                        case Float: {
-                            defaults.putDouble(key, (float) value.data);
-                            types.putString(key, "float");
-                        }
-                        break;
-                        case QString: {
-                            defaults.putString(key, (String) value.data);
-                            types.putString(key, "string");
-                        }
-                        break;
-                        default: {
-                            Log.w("CoreSetup", "Found configuration element with incompatible type: " + key + " : " + value.type.type);
-                        }
-                        break;
-                    }
-                } else {
-                    defaults.putString(key, "");
-                    types.putString(key, "string");
-                }
-            }
-            bundle.putBundle("defaults", defaults);
-            bundle.putBundle("types", types);
-            backends.add(bundle);
-        }
-        return backends;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java b/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
deleted file mode 100644
index 8f3d77286..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/NetworkServer.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class NetworkServer {
-    public final boolean useSSL;
-    public final int sslVersion;
-
-    @NonNull
-    public final String host;
-    public final int port;
-    @Nullable
-    public final String password;
-
-    public final boolean useProxy;
-    public final ProxyType proxyType;
-    @Nullable
-    public final String proxyHost;
-    public final int proxyPort;
-    @Nullable
-    public final String proxyUser;
-    @Nullable
-    public final String proxyPass;
-
-    public NetworkServer(boolean useSSL, int sslVersion, @NonNull String host, int port, @Nullable String password, boolean useProxy,
-                         ProxyType proxyType, @Nullable String proxyHost, int proxyPort, @Nullable String proxyUser, @Nullable String proxyPass) {
-        this.useSSL = useSSL;
-        this.sslVersion = sslVersion;
-        this.host = host;
-        this.port = port;
-        this.password = password;
-        this.useProxy = useProxy;
-        this.proxyType = proxyType;
-        this.proxyHost = proxyHost;
-        this.proxyPort = proxyPort;
-        this.proxyUser = proxyUser;
-        this.proxyPass = proxyPass;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "NetworkServer{" +
-                "UseSSL=" + useSSL +
-                ", sslVersion=" + sslVersion +
-                ", Host='" + host + '\'' +
-                ", Port=" + port +
-                ", Password='" + password + '\'' +
-                ", UseProxy=" + useProxy +
-                ", ProxyType=" + proxyType +
-                ", ProxyHost='" + proxyHost + '\'' +
-                ", ProxyPort=" + proxyPort +
-                ", ProxyUser='" + proxyUser + '\'' +
-                ", ProxyPass='" + proxyPass + '\'' +
-                '}';
-    }
-
-    public enum ProxyType {
-        DefaultProxy(0),
-        Socks5Proxy(1),
-        HttpProxy(3);
-
-        public final int id;
-
-        ProxyType(int id) {
-            this.id = id;
-        }
-
-        public static ProxyType fromId(int id) {
-            switch (id) {
-                default:
-                case 0:
-                    return DefaultProxy;
-                case 1:
-                    return Socks5Proxy;
-                case 3:
-                    return HttpProxy;
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/SessionInit.java b/app/src/main/java/de/kuschku/libquassel/objects/types/SessionInit.java
deleted file mode 100644
index e4bce8c54..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/SessionInit.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-public class SessionInit {
-    public final SessionState SessionState;
-
-    public SessionInit(de.kuschku.libquassel.objects.types.SessionState sessionState) {
-        SessionState = sessionState;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "SessionInit{" +
-                "SessionState=" + SessionState +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/SessionState.java b/app/src/main/java/de/kuschku/libquassel/objects/types/SessionState.java
deleted file mode 100644
index 3e82b3dc7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/SessionState.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-public class SessionState {
-    @NonNull
-    public final List<QIdentity> Identities;
-    @NonNull
-    public final List<BufferInfo> BufferInfos;
-    @NonNull
-    public final List<Integer> NetworkIds;
-
-    public SessionState(@NonNull List<QIdentity> identities, @NonNull List<BufferInfo> bufferInfos,
-                        @NonNull List<Integer> networkIds) {
-        this.Identities = identities;
-        this.BufferInfos = bufferInfos;
-        this.NetworkIds = networkIds;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "SessionState{" +
-                "Identities=" + Identities +
-                ", BufferInfos=" + BufferInfos +
-                ", NetworkIds=" + NetworkIds +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/SetupData.java b/app/src/main/java/de/kuschku/libquassel/objects/types/SetupData.java
deleted file mode 100644
index 85a486c4e..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/SetupData.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class SetupData {
-    @NonNull
-    public final String AdminUser;
-    @NonNull
-    public final String AdminPasswd;
-    @NonNull
-    public final String Backend;
-    @NonNull
-    public final Map<String, QVariant> ConnectionProperties;
-
-    public SetupData(@NonNull String adminUser, @NonNull String adminPasswd, @NonNull String backend, @NonNull Map<String, QVariant> connectionProperties) {
-        this.AdminUser = adminUser;
-        this.AdminPasswd = adminPasswd;
-        this.Backend = backend;
-        this.ConnectionProperties = connectionProperties;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "SetupData{" +
-                "AdminUser='" + AdminUser + '\'' +
-                ", AdminPasswd='" + AdminPasswd + '\'' +
-                ", Backend='" + Backend + '\'' +
-                ", ConnectionProperties=" + ConnectionProperties +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/objects/types/StorageBackend.java b/app/src/main/java/de/kuschku/libquassel/objects/types/StorageBackend.java
deleted file mode 100644
index 641c041b2..000000000
--- a/app/src/main/java/de/kuschku/libquassel/objects/types/StorageBackend.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.objects.types;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public class StorageBackend {
-    @NonNull
-    public final String DisplayName;
-    @NonNull
-    public final Map<String, QVariant> SetupDefaults;
-    @NonNull
-    public final String Description;
-    @NonNull
-    public final List<String> SetupKeys;
-
-    public StorageBackend(@NonNull String displayName, @NonNull Map<String, QVariant> setupDefaults, @NonNull String description,
-                          @NonNull List<String> setupKeys) {
-        this.DisplayName = displayName;
-        this.SetupDefaults = setupDefaults;
-        this.Description = description;
-        this.SetupKeys = setupKeys;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "StorageBackend{" +
-                "DisplayName='" + DisplayName + '\'' +
-                ", SetupDefaults=" + SetupDefaults +
-                ", Description='" + Description + '\'' +
-                ", SetupKeys=" + SetupKeys +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/QMetaType.java b/app/src/main/java/de/kuschku/libquassel/primitives/QMetaType.java
deleted file mode 100644
index 58f2f58ae..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/QMetaType.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.IOException;
-import java.util.Locale;
-
-import de.kuschku.libquassel.primitives.serializers.PrimitiveSerializer;
-
-/**
- * This class stores Qt types, the corresponding Java type, and a (De-)Serializer for it.
- *
- * @param <T> the type of the stored value
- * @author Janne Koschinski
- * @author Martin Sandsmark
- */
-public class QMetaType<T> {
-    @NonNull
-    public final Type type;
-    @NonNull
-    public final String name;
-    @NonNull
-    public final Class<T> cl;
-    @Nullable
-    public final PrimitiveSerializer<T> serializer;
-
-    public QMetaType(@NonNull Class cl, @NonNull Type type) {
-        this(cl, type, type.getSerializableName());
-    }
-
-    public QMetaType(@NonNull Class cl, @NonNull Type type, @NonNull String name) {
-        this(cl, type, name, null);
-    }
-
-    public QMetaType(@NonNull Class cl, @NonNull Type type, @Nullable PrimitiveSerializer<T> serializer) {
-        this(cl, type, type.getSerializableName(), serializer);
-    }
-
-    @SuppressWarnings("unchecked")
-    public QMetaType(@NonNull Class cl, @NonNull Type type, @NonNull String name, @Nullable PrimitiveSerializer<T> serializer) {
-        this.cl = cl;
-        this.type = type;
-        this.name = name;
-        this.serializer = serializer;
-
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "QMetaType{" +
-                "type=" + type +
-                ", name='" + name + '\'' +
-                ", serializer=" + serializer +
-                '}';
-    }
-
-    public enum Type {
-        Void(0),
-        Bool(1),
-        Int(2),
-        UInt(3),
-        LongLong(4),
-        ULongLong(5),
-
-        Double(6),
-        QChar(7),
-        QVariantMap(8),
-        QVariantList(9),
-
-        QString(10),
-        QStringList(11),
-        QByteArray(12),
-
-        QBitArray(13),
-        QDate(14),
-        QTime(15),
-        QDateTime(16),
-        QUrl(17),
-
-        QLocale(18),
-        QRect(19),
-        QRectF(20),
-        QSize(21),
-        QSizeF(22),
-
-        QLine(23),
-        QLineF(24),
-        QPoint(25),
-        QPointF(26),
-        QRegExp(27),
-
-        QVariantHash(28),
-        QEasingCurve(29),
-
-        FirstGuiType(63),
-
-        QFont(64),
-        QPixmap(65),
-        QBrush(66),
-        QColor(67),
-        QPalette(68),
-
-        QIcon(69),
-        QImage(70),
-        QPolygon(71),
-        QRegion(72),
-        QBitmap(73),
-
-        QCursor(74),
-        QSizePolicy(75),
-        QKeySequence(76),
-        QPen(77),
-
-        QTextLength(78),
-        QTextFormat(79),
-        QMatrix(80),
-        QTransform(81),
-
-        QMatrix4x4(82),
-        QVector2D(83),
-        QVector3D(84),
-        QVector4D(85),
-
-        QQuaternion(86),
-
-        VoidStar(128),
-        Long(129),
-        Short(130),
-        Char(131),
-        ULong(132),
-
-        UShort(133),
-        UChar(134),
-        Float(135),
-        QObjectStar(136),
-        QWidgetStar(137),
-
-        QVariant(138),
-
-        User(256),
-        UserType(127),
-        LastType(0xffffffff);
-
-        final int value;
-
-        Type(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static Type fromId(int id) throws IOException {
-            switch (id) {
-                case 0:
-                    return Void;
-                case 1:
-                    return Bool;
-                case 2:
-                    return Int;
-                case 3:
-                    return UInt;
-                case 4:
-                    return LongLong;
-                case 5:
-                    return ULongLong;
-
-                case 6:
-                    return Double;
-                case 7:
-                    return QChar;
-                case 8:
-                    return QVariantMap;
-                case 9:
-                    return QVariantList;
-
-                case 10:
-                    return QString;
-                case 11:
-                    return QStringList;
-                case 12:
-                    return QByteArray;
-
-                case 13:
-                    return QBitArray;
-                case 14:
-                    return QDate;
-                case 15:
-                    return QTime;
-                case 16:
-                    return QDateTime;
-                case 17:
-                    return QUrl;
-
-                case 18:
-                    return QLocale;
-                case 19:
-                    return QRect;
-                case 20:
-                    return QRectF;
-                case 21:
-                    return QSize;
-                case 22:
-                    return QSizeF;
-
-                case 23:
-                    return QLine;
-                case 24:
-                    return QLineF;
-                case 25:
-                    return QPoint;
-                case 26:
-                    return QPointF;
-                case 27:
-                    return QRegExp;
-
-                case 28:
-                    return QVariantHash;
-                case 29:
-                    return QEasingCurve;
-
-                case 63:
-                    return FirstGuiType;
-
-                case 64:
-                    return QFont;
-                case 65:
-                    return QPixmap;
-                case 66:
-                    return QBrush;
-                case 67:
-                    return QColor;
-                case 68:
-                    return QPalette;
-
-                case 69:
-                    return QIcon;
-                case 70:
-                    return QImage;
-                case 71:
-                    return QPolygon;
-                case 72:
-                    return QRegion;
-                case 73:
-                    return QBitmap;
-
-                case 74:
-                    return QCursor;
-                case 75:
-                    return QSizePolicy;
-                case 76:
-                    return QKeySequence;
-                case 77:
-                    return QPen;
-
-                case 78:
-                    return QTextLength;
-                case 79:
-                    return QTextFormat;
-                case 80:
-                    return QMatrix;
-                case 81:
-                    return QTransform;
-
-                case 82:
-                    return QMatrix4x4;
-                case 83:
-                    return QVector2D;
-                case 84:
-                    return QVector3D;
-                case 85:
-                    return QVector4D;
-
-                case 86:
-                    return QQuaternion;
-
-                case 128:
-                    return VoidStar;
-                case 129:
-                    return Long;
-                case 130:
-                    return Short;
-                case 131:
-                    return Char;
-                case 132:
-                    return ULong;
-
-                case 133:
-                    return UShort;
-                case 134:
-                    return UChar;
-                case 135:
-                    return Float;
-                case 136:
-                    return QObjectStar;
-                case 137:
-                    return QWidgetStar;
-
-                case 138:
-                    return QVariant;
-
-                case 256:
-                    return User;
-                case 127:
-                    return UserType;
-
-
-                default:
-                    throw new IOException("Unknown type: " + id);
-            }
-        }
-
-        public int getValue() {
-            return value;
-        }
-
-        @NonNull
-        public String getSerializableName() {
-            if (name().startsWith("Q")) return name();
-            else return name().toLowerCase(Locale.ENGLISH);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/QMetaTypeRegistry.java b/app/src/main/java/de/kuschku/libquassel/primitives/QMetaTypeRegistry.java
deleted file mode 100644
index b6fe16f83..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/QMetaTypeRegistry.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.joda.time.DateTime;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.objects.serializers.NetworkServerSerializer;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.serializers.BoolSerializer;
-import de.kuschku.libquassel.primitives.serializers.BufferInfoSerializer;
-import de.kuschku.libquassel.primitives.serializers.ByteArraySerializer;
-import de.kuschku.libquassel.primitives.serializers.ByteSerializer;
-import de.kuschku.libquassel.primitives.serializers.CharSerializer;
-import de.kuschku.libquassel.primitives.serializers.DateTimeSerializer;
-import de.kuschku.libquassel.primitives.serializers.IntSerializer;
-import de.kuschku.libquassel.primitives.serializers.LongSerializer;
-import de.kuschku.libquassel.primitives.serializers.MessageSerializer;
-import de.kuschku.libquassel.primitives.serializers.PrimitiveSerializer;
-import de.kuschku.libquassel.primitives.serializers.ShortSerializer;
-import de.kuschku.libquassel.primitives.serializers.StringListSerializer;
-import de.kuschku.libquassel.primitives.serializers.StringSerializer;
-import de.kuschku.libquassel.primitives.serializers.TimeSerializer;
-import de.kuschku.libquassel.primitives.serializers.UserTypeSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantListSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantMapSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantVariantListSerializer;
-import de.kuschku.libquassel.primitives.serializers.VoidSerializer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.IdentitySerializer;
-import de.kuschku.libquassel.syncables.serializers.NetworkInfoSerializer;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class QMetaTypeRegistry {
-    @NonNull
-    private static final Map<QMetaType.Type, QMetaType> typeSerializerMap = new HashMap<>();
-    @NonNull
-    private static final Map<String, QMetaType> stringSerializerMap = new HashMap<>();
-
-    static {
-        addType(Void.class, QMetaType.Type.Void, VoidSerializer.get());
-        addType(boolean.class, QMetaType.Type.Bool, BoolSerializer.get());
-        addType(int.class, QMetaType.Type.Int, IntSerializer.get());
-        addType(int.class, QMetaType.Type.UserType, "BufferId", IntSerializer.get());
-        addType(int.class, QMetaType.Type.UserType, "NetworkId", IntSerializer.get());
-        addType(int.class, QMetaType.Type.UserType, "IdentityId", IntSerializer.get());
-        addType(int.class, QMetaType.Type.UserType, "MsgId", IntSerializer.get());
-        addType(long.class, QMetaType.Type.UserType, "PeerPtr", LongSerializer.get());
-        addType(BufferInfo.class, QMetaType.Type.UserType, "BufferInfo", BufferInfoSerializer.get());
-        addType(Message.class, QMetaType.Type.UserType, "Message", MessageSerializer.get());
-        addType(QIdentity.class, QMetaType.Type.UserType, "Identity", new UserTypeSerializer<>(IdentitySerializer.get(), "Identity"));
-        addType(NetworkServer.class, QMetaType.Type.UserType, "Network::Server", new UserTypeSerializer<>(NetworkServerSerializer.get(), "Network::Server"));
-        addType(NetworkInfo.class, QMetaType.Type.UserType, "NetworkInfo", new UserTypeSerializer<>(NetworkInfoSerializer.get(), "NetworkInfo"));
-        addType(int.class, QMetaType.Type.UInt, IntSerializer.get());
-        addType(short.class, QMetaType.Type.UShort, ShortSerializer.get());
-
-        // TODO: Implement more custom quassel types
-
-        addType(DateTime.class, QMetaType.Type.QTime, TimeSerializer.get());
-        addType(BigDecimal.class, QMetaType.Type.LongLong);
-        addType(BigDecimal.class, QMetaType.Type.ULongLong);
-        addType(double.class, QMetaType.Type.Double);
-        addType(char.class, QMetaType.Type.QChar, CharSerializer.get());
-        addType(List.class, QMetaType.Type.QVariantList, VariantListSerializer.get());
-        addType(Map.class, QMetaType.Type.QVariantMap, VariantMapSerializer.get());
-        addType(List.class, QMetaType.Type.QStringList, StringListSerializer.get());
-        addType(String.class, QMetaType.Type.QString, StringSerializer.get());
-        addType(String.class, QMetaType.Type.QByteArray, ByteArraySerializer.get());
-        addType(void.class, QMetaType.Type.QBitArray);
-        addType(void.class, QMetaType.Type.QDate);
-        addType(DateTime.class, QMetaType.Type.QDateTime, DateTimeSerializer.get());
-        addType(void.class, QMetaType.Type.QUrl);
-        addType(void.class, QMetaType.Type.QLocale);
-        addType(void.class, QMetaType.Type.QRect);
-        addType(void.class, QMetaType.Type.QRectF);
-        addType(void.class, QMetaType.Type.QSize);
-        addType(void.class, QMetaType.Type.QSizeF);
-        addType(void.class, QMetaType.Type.QLine);
-        addType(void.class, QMetaType.Type.QLineF);
-        addType(void.class, QMetaType.Type.QPoint);
-        addType(void.class, QMetaType.Type.QPointF);
-        addType(void.class, QMetaType.Type.QRegExp);
-        addType(void.class, QMetaType.Type.QVariantHash);
-        addType(void.class, QMetaType.Type.QEasingCurve);
-
-        // UI Types
-        addType(void.class, QMetaType.Type.QFont);
-        addType(void.class, QMetaType.Type.QPixmap);
-        addType(void.class, QMetaType.Type.QBrush);
-        addType(void.class, QMetaType.Type.QColor);
-        addType(void.class, QMetaType.Type.QPalette);
-        addType(void.class, QMetaType.Type.QIcon);
-        addType(void.class, QMetaType.Type.QImage);
-        addType(void.class, QMetaType.Type.QPolygon);
-        addType(void.class, QMetaType.Type.QRegion);
-        addType(void.class, QMetaType.Type.QBitmap);
-        addType(void.class, QMetaType.Type.QCursor);
-        addType(void.class, QMetaType.Type.QSizePolicy);
-        addType(void.class, QMetaType.Type.QKeySequence);
-        addType(void.class, QMetaType.Type.QPen);
-        addType(void.class, QMetaType.Type.QTextLength);
-        addType(void.class, QMetaType.Type.QTextFormat);
-        addType(void.class, QMetaType.Type.QMatrix);
-        addType(void.class, QMetaType.Type.QTransform);
-        addType(void.class, QMetaType.Type.QMatrix4x4);
-        addType(void.class, QMetaType.Type.QVector2D);
-        addType(void.class, QMetaType.Type.QVector3D);
-        addType(void.class, QMetaType.Type.QVector4D);
-        addType(void.class, QMetaType.Type.QQuaternion);
-
-        addType(void.class, QMetaType.Type.VoidStar, "void*");
-        addType(long.class, QMetaType.Type.Long, LongSerializer.get());
-        addType(short.class, QMetaType.Type.Short, ShortSerializer.get());
-        addType(byte.class, QMetaType.Type.Char, ByteSerializer.get());
-        addType(long.class, QMetaType.Type.ULong, LongSerializer.get());
-        addType(byte.class, QMetaType.Type.UChar, ByteSerializer.get());
-        addType(void.class, QMetaType.Type.Float);
-        addType(void.class, QMetaType.Type.QObjectStar, "QObject*");
-        addType(void.class, QMetaType.Type.QWidgetStar, "QWidget*");
-        addType(QVariant.class, QMetaType.Type.QVariant, VariantSerializer.get());
-    }
-
-    // Disable Constructor
-    private QMetaTypeRegistry() {
-
-    }
-
-    private static <T> void addType(@NonNull final Class cl, @NonNull final QMetaType.Type type, @NonNull final String name, @Nullable final PrimitiveSerializer<T> serializer) {
-        addType(new QMetaType<>(cl, type, name, serializer));
-    }
-
-    private static <T> void addType(@NonNull final Class cl, @NonNull final QMetaType.Type type, @NonNull final String name) {
-        addType(new QMetaType<>(cl, type, name));
-    }
-
-    private static <T> void addType(@NonNull final Class cl, @NonNull final QMetaType.Type type, @Nullable final PrimitiveSerializer<T> serializer) {
-        addType(new QMetaType<>(cl, type, serializer));
-    }
-
-    private static <T> void addType(@NonNull final Class cl, @NonNull final QMetaType.Type type) {
-        addType(new QMetaType<>(cl, type));
-    }
-
-    private static <T> void addType(@NonNull final QMetaType<T> metaType) {
-        if (!typeSerializerMap.containsKey(metaType.type))
-            typeSerializerMap.put(metaType.type, metaType);
-        stringSerializerMap.put(metaType.name, metaType);
-    }
-
-    @Nullable
-    public static <T> T deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int id = deserialize(QMetaType.Type.UInt, buffer);
-        final QMetaType.Type type = QMetaType.Type.fromId(id);
-        return deserialize(type, buffer);
-    }
-
-    @Nullable
-    public static <T> T deserialize(@NonNull final QMetaType.Type type, @NonNull final ByteBuffer buffer) throws IOException {
-        return deserialize((getMetaTypeByType(type)), buffer);
-    }
-
-    @Nullable
-    public static <T> T deserialize(@NonNull final String type, @NonNull final ByteBuffer buffer) throws IOException {
-        return deserialize((getMetaTypeByString(type)), buffer);
-    }
-
-    @Nullable
-    public static <T> T deserialize(@NonNull final QMetaType<T> type, @NonNull final ByteBuffer buffer) throws IOException {
-        return type.serializer.deserialize(buffer);
-    }
-
-    public static <T> void serialize(@NonNull final QMetaType.Type type, @NonNull final ByteChannel channel, @NonNull final T data) throws IOException {
-        getType(type).serializer.serialize(channel, data);
-    }
-
-    public static <T> void serialize(@NonNull final String type, @NonNull final ByteChannel channel, @NonNull final T data) throws IOException {
-        getType(type).serializer.serialize(channel, data);
-    }
-
-    public static <T> void serializeWithType(@NonNull final QMetaType.Type type, @NonNull final ByteChannel channel, @NonNull final T data) throws IOException {
-        serialize(QMetaType.Type.UInt, channel, type.getValue());
-        serialize(type, channel, data);
-    }
-
-    @NonNull
-    public static <T> PrimitiveSerializer<T> getSerializer(String typeName) {
-        return (PrimitiveSerializer<T>) stringSerializerMap.get(typeName).serializer;
-    }
-
-    @NonNull
-    public static <T> PrimitiveSerializer<T> getSerializer(QMetaType.Type type) {
-        return (PrimitiveSerializer<T>) typeSerializerMap.get(type);
-    }
-
-    @NonNull
-    public static <T> QMetaType<T> getType(@NonNull String typeName) {
-        return getMetaTypeByString(typeName);
-    }
-
-    @NonNull
-    private static <T> QMetaType<T> getMetaTypeByString(@NonNull String typeName) {
-        QMetaType<T> result = stringSerializerMap.get(typeName);
-        assertNotNull(String.format("Unknown type %s", typeName), result);
-        assertNotNull(String.format("Unknown type %s", typeName), result.serializer);
-
-        return result;
-    }
-
-    @NonNull
-    public static <T> QMetaType<T> getType(@NonNull QMetaType.Type type) {
-        return getMetaTypeByType(type);
-    }
-
-    @NonNull
-    private static <T> QMetaType<T> getMetaTypeByType(@NonNull QMetaType.Type type) {
-        QMetaType<T> result = typeSerializerMap.get(type);
-        assertNotNull(String.format("Unknown type %s", type.toString()), result);
-        assertNotNull(String.format("Unknown type %s", type.toString()), result.serializer);
-
-        return result;
-    }
-
-    @Nullable
-    public static <T> QMetaType<T> getTypeByObject(@Nullable T type) {
-        if (type == null)
-            return null;
-        else if (type instanceof Void) return getMetaTypeByType(QMetaType.Type.Void);
-        else if (type instanceof Boolean)
-            return getMetaTypeByType(QMetaType.Type.Bool);
-        else if (type instanceof Integer)
-            return getMetaTypeByType(QMetaType.Type.Int);
-        else if (type instanceof Short)
-            return getMetaTypeByType(QMetaType.Type.Short);
-        else if (type instanceof DateTime)
-            return getMetaTypeByType(QMetaType.Type.QDateTime);
-        else if (type instanceof Character)
-            return getMetaTypeByType(QMetaType.Type.QChar);
-        else if (type instanceof List) {
-            if (((List) type).size() > 0 && ((List) type).get(0) instanceof String)
-                return getMetaTypeByType(QMetaType.Type.QStringList);
-            else if (((List) type).size() > 0 && ((List) type).get(0) instanceof QVariant)
-                return new QMetaType<>((Class) type.getClass(), QMetaType.Type.QVariantList, (PrimitiveSerializer<T>) VariantVariantListSerializer.get());
-            else
-                return getMetaTypeByType(QMetaType.Type.QVariantList);
-        } else if (type instanceof Map)
-            return getMetaTypeByType(QMetaType.Type.QVariantMap);
-        else if (type instanceof String)
-            return getMetaTypeByType(QMetaType.Type.QString);
-        else if (type instanceof Long)
-            return getMetaTypeByType(QMetaType.Type.Long);
-        else if (type instanceof Byte)
-            return getMetaTypeByType(QMetaType.Type.Char);
-        else if (type instanceof QVariant)
-            return getMetaTypeByType(QMetaType.Type.QVariant);
-        else if (type instanceof Message) return stringSerializerMap.get("Message");
-        else if (type instanceof BufferInfo) return stringSerializerMap.get("BufferInfo");
-        else if (type instanceof NetworkInfo) return stringSerializerMap.get("NetworkInfo");
-        else if (type instanceof QIdentity) return stringSerializerMap.get("Identity");
-        else if (type instanceof NetworkServer) return stringSerializerMap.get("Network::Server");
-        else
-            return null;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BoolSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BoolSerializer.java
deleted file mode 100644
index 8d6cd3f23..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BoolSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class BoolSerializer implements PrimitiveSerializer<Boolean> {
-    @NonNull
-    private static final BoolSerializer serializer = new BoolSerializer();
-
-    private BoolSerializer() {
-    }
-
-    @NonNull
-    public static BoolSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Boolean data) throws IOException {
-        final ByteBuffer buffer = ByteBuffer.allocate(1);
-        buffer.put(0, (byte) (data ? 0x01 : 0x00));
-        channel.write(buffer);
-    }
-
-    @NonNull
-    @Override
-    public Boolean deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return buffer.get() > 0;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BufferInfoSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BufferInfoSerializer.java
deleted file mode 100644
index 0e838f015..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/BufferInfoSerializer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-
-public class BufferInfoSerializer implements PrimitiveSerializer<BufferInfo> {
-    @NonNull
-    private static final BufferInfoSerializer serializer = new BufferInfoSerializer();
-
-    private BufferInfoSerializer() {
-    }
-
-    @NonNull
-    public static BufferInfoSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull ByteChannel channel, @NonNull BufferInfo data) throws IOException {
-        IntSerializer.get().serialize(channel, data.id);
-        IntSerializer.get().serialize(channel, data.networkId);
-        ShortSerializer.get().serialize(channel, data.type.id);
-        IntSerializer.get().serialize(channel, data.groupId);
-        ByteArraySerializer.get().serialize(channel, data.name);
-    }
-
-    @NonNull
-    @Override
-    public BufferInfo deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return BufferInfo.create(
-                IntSerializer.get().deserialize(buffer),
-                IntSerializer.get().deserialize(buffer),
-                BufferInfo.Type.fromId(ShortSerializer.get().deserialize(buffer)),
-                IntSerializer.get().deserialize(buffer),
-                ByteArraySerializer.get().deserialize(buffer)
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteArraySerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteArraySerializer.java
deleted file mode 100644
index 57345559c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteArraySerializer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Charsets;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class ByteArraySerializer implements PrimitiveSerializer<String> {
-    @NonNull
-    private static final ByteArraySerializer serializerFalse = new ByteArraySerializer(false);
-    @NonNull
-    private static final ByteArraySerializer serializerTrue = new ByteArraySerializer(true);
-    private final boolean trimLastByte;
-
-    private ByteArraySerializer(boolean trimLastByte) {
-        this.trimLastByte = trimLastByte;
-    }
-
-    @NonNull
-    public static ByteArraySerializer get() {
-        return get(false);
-    }
-
-    @NonNull
-    public static ByteArraySerializer get(boolean trimLastByte) {
-        if (trimLastByte) return serializerTrue;
-        else return serializerFalse;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @Nullable final String data) throws IOException {
-        if (data == null) {
-            IntSerializer.get().serialize(channel, -1);
-        } else {
-            final ByteBuffer contentBuffer = Charsets.ISO_8859_1.encode(data);
-            IntSerializer.get().serialize(channel, contentBuffer.limit() + (trimLastByte ? 1 : 0));
-            channel.write(contentBuffer);
-            if (trimLastByte) channel.write(ByteBuffer.allocate(1));
-        }
-    }
-
-    @Nullable
-    @Override
-    public String deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int len = IntSerializer.get().deserialize(buffer);
-        if (len == -1)
-            return null;
-        else if (len == 0)
-            return "";
-        else {
-            final ByteBuffer contentBuffer = ByteBuffer.allocate(len);
-            contentBuffer.put(buffer.array(), buffer.position(), len);
-            contentBuffer.position(0);
-            buffer.position(buffer.position() + len);
-
-            // We have to do this for the usecase of usertype names, as those are serialized with \0 at the end
-            if (trimLastByte) {
-                // Get rid of the null byte at the end
-                contentBuffer.limit(len - 1);
-            }
-            return Charsets.UTF_8.decode(contentBuffer).toString();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteSerializer.java
deleted file mode 100644
index 83aa2f1f8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ByteSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class ByteSerializer implements PrimitiveSerializer<Byte> {
-    @NonNull
-    private static final ByteSerializer serializer = new ByteSerializer();
-
-    private ByteSerializer() {
-    }
-
-    @NonNull
-    public static ByteSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Byte data) throws IOException {
-        final ByteBuffer buffer = ByteBuffer.allocate(1);
-        buffer.put(0, data);
-        channel.write(buffer);
-    }
-
-    @NonNull
-    @Override
-    public Byte deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return buffer.get();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/CharSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/CharSerializer.java
deleted file mode 100644
index cd5864283..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/CharSerializer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.nio.charset.Charset;
-
-public class CharSerializer implements PrimitiveSerializer<Character> {
-    @NonNull
-    private static final CharSerializer serializer = new CharSerializer();
-
-    private CharSerializer() {
-    }
-
-    @NonNull
-    public static CharSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Character data) throws IOException {
-        final ByteBuffer contentBuffer = Charset.forName("UTF-16BE").encode(String.copyValueOf(new char[]{data}));
-        channel.write(contentBuffer);
-    }
-
-    @NonNull
-    @Override
-    public Character deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        int len = 2;
-        final ByteBuffer contentBuffer = ByteBuffer.allocate(len);
-        contentBuffer.put(buffer.array(), buffer.position(), len);
-        contentBuffer.position(0);
-        buffer.position(buffer.position() + len);
-        return Charset.forName("UTF-16BE").decode(contentBuffer).toString().charAt(0);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/DateTimeSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/DateTimeSerializer.java
deleted file mode 100644
index 5373ac9bb..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/DateTimeSerializer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeUtils;
-import org.joda.time.DateTimeZone;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-import de.kuschku.util.backports.Objects;
-
-public class DateTimeSerializer implements PrimitiveSerializer<DateTime> {
-    @NonNull
-    private static final DateTimeSerializer serializer = new DateTimeSerializer();
-
-    private DateTimeSerializer() {
-    }
-
-    @NonNull
-    public static DateTimeSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final DateTime data) throws IOException {
-        final boolean isUTC;
-        final DateTimeZone zone = data.getZone();
-        if (Objects.equals(zone, DateTimeZone.UTC)) {
-            isUTC = true;
-        } else if (Objects.equals(zone, DateTimeZone.getDefault())) {
-            isUTC = false;
-            // TODO: Add serialization for other timezones
-        } else {
-            throw new IllegalArgumentException("Serialization of timezones except for local and UTC is not supported");
-        }
-
-
-        IntSerializer.get().serialize(channel, (int) DateTimeUtils.toJulianDayNumber(data.getMillis()));
-        IntSerializer.get().serialize(channel, data.getMillisOfDay());
-        BoolSerializer.get().serialize(channel, isUTC);
-    }
-
-    @NonNull
-    @Override
-    public DateTime deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final long julianDay = IntSerializer.get().deserialize(buffer);
-        final int millisSinceMidnight = IntSerializer.get().deserialize(buffer);
-
-        final short zone = ByteSerializer.get().deserialize(buffer);
-
-        if (millisSinceMidnight == 0x73007300 && julianDay == 0x50006100 || millisSinceMidnight == -1 || julianDay == -1)
-            return new DateTime(0);
-
-        if ((zone & 0xfffffff0) > 0) {
-            throw new IllegalArgumentException("Deserialization of timezones except for local and UTC is not supported: " + zone);
-        }
-
-        DateTime time = new DateTime(DateTimeUtils.fromJulianDay(julianDay));
-        time = time.millisOfDay().setCopy(millisSinceMidnight);
-        if (zone == 0) time = time.withZone(DateTimeZone.getDefault());
-        else time = time.withZone(DateTimeZone.UTC);
-
-        return time;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/IntSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/IntSerializer.java
deleted file mode 100644
index 5a1714ed7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/IntSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class IntSerializer implements PrimitiveSerializer<Integer> {
-    @NonNull
-    private static final IntSerializer serializer = new IntSerializer();
-
-    private IntSerializer() {
-    }
-
-    @NonNull
-    public static IntSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Integer data) throws IOException {
-        final ByteBuffer buffer = ByteBuffer.allocate(4);
-        buffer.putInt(0, data);
-        channel.write(buffer);
-    }
-
-    @NonNull
-    @Override
-    public Integer deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return buffer.getInt();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/LongSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/LongSerializer.java
deleted file mode 100644
index baacd2b51..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/LongSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class LongSerializer implements PrimitiveSerializer<Long> {
-    @NonNull
-    private static final LongSerializer serializer = new LongSerializer();
-
-    private LongSerializer() {
-    }
-
-    @NonNull
-    public static LongSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Long data) throws IOException {
-        final ByteBuffer buffer = ByteBuffer.allocate(8);
-        buffer.putLong(0, data);
-        channel.write(buffer);
-    }
-
-    @NonNull
-    @Override
-    public Long deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return buffer.getLong();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/MessageSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/MessageSerializer.java
deleted file mode 100644
index 9e7b73796..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/MessageSerializer.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.joda.time.DateTime;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-
-public class MessageSerializer implements PrimitiveSerializer<Message> {
-    @NonNull
-    private static final MessageSerializer serializer = new MessageSerializer();
-
-    private MessageSerializer() {
-    }
-
-    @NonNull
-    public static MessageSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull ByteChannel channel, @NonNull Message data) throws IOException {
-        IntSerializer.get().serialize(channel, data.id);
-        IntSerializer.get().serialize(channel, (int) (data.time.getMillis() / 1000));
-        IntSerializer.get().serialize(channel, data.type.value);
-        ByteSerializer.get().serialize(channel, data.flags.flags);
-        BufferInfoSerializer.get().serialize(channel, data.bufferInfo);
-        ByteArraySerializer.get().serialize(channel, data.sender);
-        ByteArraySerializer.get().serialize(channel, data.content);
-    }
-
-    @Nullable
-    @Override
-    public Message deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        Integer messageId = IntSerializer.get().deserialize(buffer);
-        DateTime time = new DateTime(((long) IntSerializer.get().deserialize(buffer)) * 1000);
-        Message.Type type = Message.Type.fromId(IntSerializer.get().deserialize(buffer));
-        Message.Flags flags = new Message.Flags(ByteSerializer.get().deserialize(buffer));
-        BufferInfo bufferInfo = BufferInfoSerializer.get().deserialize(buffer);
-        String sender = ByteArraySerializer.get().deserialize(buffer);
-        String message = ByteArraySerializer.get().deserialize(buffer);
-
-        return Message.create(
-                messageId,
-                time,
-                type,
-                flags,
-                bufferInfo,
-                sender,
-                message
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/PrimitiveSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/PrimitiveSerializer.java
deleted file mode 100644
index 36d70e12d..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/PrimitiveSerializer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public interface PrimitiveSerializer<T> {
-    void serialize(@NonNull ByteChannel channel, @NonNull T data) throws IOException;
-
-    @Nullable
-    T deserialize(@NonNull ByteBuffer buffer) throws IOException;
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ProtocolSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ProtocolSerializer.java
deleted file mode 100644
index d3daf78f7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ProtocolSerializer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-import de.kuschku.libquassel.client.FeatureFlags;
-import de.kuschku.libquassel.primitives.types.Protocol;
-
-public class ProtocolSerializer implements PrimitiveSerializer<Protocol> {
-    @NonNull
-    private static final ProtocolSerializer serializer = new ProtocolSerializer();
-
-    private ProtocolSerializer() {
-    }
-
-    @NonNull
-    public static ProtocolSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull ByteChannel channel, @NonNull Protocol data) throws IOException {
-        ByteSerializer.get().serialize(channel, data.protocolFlags.flags);
-        ShortSerializer.get().serialize(channel, data.protocolData);
-        ByteSerializer.get().serialize(channel, data.protocolVersion);
-    }
-
-    @NonNull
-    @Override
-    public Protocol deserialize(@NonNull ByteBuffer buffer) throws IOException {
-        return new Protocol(
-                new FeatureFlags(ByteSerializer.get().deserialize(buffer)),
-                ShortSerializer.get().deserialize(buffer),
-                ByteSerializer.get().deserialize(buffer)
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ShortSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ShortSerializer.java
deleted file mode 100644
index 17053f479..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/ShortSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class ShortSerializer implements PrimitiveSerializer<Short> {
-    @NonNull
-    private static final ShortSerializer serializer = new ShortSerializer();
-
-    private ShortSerializer() {
-    }
-
-    @NonNull
-    public static ShortSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Short data) throws IOException {
-        final ByteBuffer buffer = ByteBuffer.allocate(2);
-        buffer.putShort(0, data);
-        channel.write(buffer);
-    }
-
-    @NonNull
-    @Override
-    public Short deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return buffer.getShort();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
deleted file mode 100644
index 710683412..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringListSerializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.ArrayList;
-import java.util.List;
-
-public class StringListSerializer implements PrimitiveSerializer<List<String>> {
-    @NonNull
-    private static final StringListSerializer serializer = new StringListSerializer();
-
-    private StringListSerializer() {
-    }
-
-    @NonNull
-    public static StringListSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @Nullable final List<String> data) throws IOException {
-        if (data == null) {
-            IntSerializer.get().serialize(channel, 0);
-        } else {
-            IntSerializer.get().serialize(channel, data.size());
-            for (String element : data) {
-                StringSerializer.get().serialize(channel, element);
-            }
-        }
-    }
-
-    @NonNull
-    @Override
-    public List<String> deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int size = IntSerializer.get().deserialize(buffer);
-        final List<String> list = new ArrayList<>(size);
-        for (int i = 0; i < size; i++) {
-            list.add(StringSerializer.get().deserialize(buffer));
-        }
-        return list;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringSerializer.java
deleted file mode 100644
index 9ea3bcad2..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/StringSerializer.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.nio.charset.Charset;
-
-public class StringSerializer implements PrimitiveSerializer<String> {
-    @NonNull
-    private static final StringSerializer serializer = new StringSerializer();
-
-    private StringSerializer() {
-    }
-
-    @NonNull
-    public static StringSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @Nullable final String data) throws IOException {
-        if (data == null) {
-            IntSerializer.get().serialize(channel, 0xffffffff);
-        } else {
-            final ByteBuffer contentBuffer = Charset.forName("UTF-16BE").encode(data);
-            IntSerializer.get().serialize(channel, contentBuffer.limit());
-            channel.write(contentBuffer);
-        }
-    }
-
-    @Nullable
-    @Override
-    public String deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int len = IntSerializer.get().deserialize(buffer);
-        if (len == 0xffffffff)
-            return null;
-        else {
-            final ByteBuffer contentBuffer = ByteBuffer.allocate(len);
-            contentBuffer.put(buffer.array(), buffer.position(), len);
-            contentBuffer.position(0);
-            buffer.position(buffer.position() + len);
-            return Charset.forName("UTF-16BE").decode(contentBuffer).toString();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/TimeSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/TimeSerializer.java
deleted file mode 100644
index cd2765bd3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/TimeSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class TimeSerializer implements PrimitiveSerializer<DateTime> {
-    @NonNull
-    private static final TimeSerializer serializer = new TimeSerializer();
-
-    private TimeSerializer() {
-    }
-
-    @NonNull
-    public static TimeSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final DateTime data) throws IOException {
-        IntSerializer.get().serialize(channel, data.millisOfDay().get());
-    }
-
-    @NonNull
-    @Override
-    public DateTime deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return DateTime.now().millisOfDay().setCopy(IntSerializer.get().deserialize(buffer));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/UserTypeSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/UserTypeSerializer.java
deleted file mode 100644
index 3a55c3c24..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/UserTypeSerializer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.Map;
-
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class UserTypeSerializer<T> implements PrimitiveSerializer<T> {
-    @NonNull
-    private final ObjectSerializer<T> objectSerializer;
-
-    public UserTypeSerializer(@NonNull ObjectSerializer<T> objectSerializer, String type) {
-        this.objectSerializer = objectSerializer;
-    }
-
-    @Override
-    public void serialize(@NonNull ByteChannel channel, @NonNull T data) throws IOException {
-        Map<String, QVariant<Object>> variantMap = objectSerializer.toVariantMap(data);
-        assertNotNull(variantMap);
-        VariantMapSerializer.get().serialize(channel, variantMap);
-    }
-
-    @SuppressWarnings("RedundantCast")
-    @NonNull
-    @Override
-    public T deserialize(@NonNull ByteBuffer buffer) throws IOException {
-        return (T) (Object) objectSerializer.fromLegacy(((VariantMapSerializer) VariantMapSerializer.get()).deserialize(buffer));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantListSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantListSerializer.java
deleted file mode 100644
index f89dedb26..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantListSerializer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class VariantListSerializer<T> implements PrimitiveSerializer<List<T>> {
-    @NonNull
-    private static final VariantListSerializer serializer = new VariantListSerializer();
-
-    private VariantListSerializer() {
-    }
-
-    @NonNull
-    public static <T> VariantListSerializer<T> get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final List<T> data) throws IOException {
-        IntSerializer.get().serialize(channel, data.size());
-
-        final VariantSerializer<T> variantSerializer = VariantSerializer.get();
-        for (T element : data) {
-            variantSerializer.serialize(channel, new QVariant<>(element));
-        }
-    }
-
-    @NonNull
-    @Override
-    public List<T> deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int length = IntSerializer.get().deserialize(buffer);
-        final List<T> list = new ArrayList<>(length);
-
-        final VariantSerializer<T> variantSerializer = VariantSerializer.get();
-        for (int i = 0; i < length; i++) {
-            list.add(variantSerializer.deserialize(buffer).data);
-        }
-        return list;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantMapSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantMapSerializer.java
deleted file mode 100644
index 8c0a745aa..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantMapSerializer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class VariantMapSerializer<T> implements PrimitiveSerializer<Map<String, QVariant<T>>> {
-    @NonNull
-    private static final VariantMapSerializer serializer = new VariantMapSerializer();
-    @NonNull
-    private final PrimitiveSerializer<String> stringSerializer = StringSerializer.get();
-    @NonNull
-    private final VariantSerializer<T> variantSerializer = VariantSerializer.get();
-
-    private VariantMapSerializer() {
-    }
-
-    @NonNull
-    public static <T> VariantMapSerializer<T> get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Map<String, QVariant<T>> data) throws IOException {
-        IntSerializer.get().serialize(channel, data.size());
-
-        for (Map.Entry<String, QVariant<T>> element : data.entrySet()) {
-            stringSerializer.serialize(channel, element.getKey());
-            variantSerializer.serialize(channel, element.getValue());
-        }
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<T>> deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int length = IntSerializer.get().deserialize(buffer);
-        final Map<String, QVariant<T>> map = new HashMap<>(length);
-
-        for (int i = 0; i < length; i++) {
-            map.put(stringSerializer.deserialize(buffer), variantSerializer.deserialize(buffer));
-        }
-        return map;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantSerializer.java
deleted file mode 100644
index a0513f36f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantSerializer.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.QMetaTypeRegistry;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class VariantSerializer<T> implements PrimitiveSerializer<QVariant<T>> {
-    @NonNull
-    private static final VariantSerializer serializer = new VariantSerializer();
-
-    private VariantSerializer() {
-    }
-
-    @NonNull
-    public static <T> VariantSerializer<T> get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final QVariant<T> data) throws IOException {
-        IntSerializer.get().serialize(channel, data.type.type.getValue());
-        BoolSerializer.get().serialize(channel, data.data == null);
-        if (data.type.type == QMetaType.Type.UserType) {
-            ByteArraySerializer.get(true).serialize(channel, data.type.name);
-        }
-        if (data.type.serializer == null) {
-            throw new IOException("Unknown type: " + data.type.name);
-        }
-        data.type.serializer.serialize(channel, data.data);
-    }
-
-    @NonNull
-    @Override
-    public QVariant<T> deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        // Read original type
-        final QMetaType.Type type = QMetaType.Type.fromId(IntSerializer.get().deserialize(buffer));
-
-        // Read if the data is defined or null
-        // TODO: For some reason, this is completely ignored. Figure out why and document.
-        final boolean isNull = BoolSerializer.get().deserialize(buffer);
-
-        // Get the actual serialized type
-        final QMetaType<T> mtype;
-        if (type == QMetaType.Type.UserType) {
-            // If the type is a user-defined type, read type name
-            // WARNING: This ByteArray has a trailing null byte, which we can’t deserialize.
-            //          Therefore we have to pass a flag to make sure the serializer removes it.
-            final String typeName = ByteArraySerializer.get(true).deserialize(buffer);
-            mtype = QMetaTypeRegistry.getType(typeName);
-
-            if (mtype == null || mtype.serializer == null) {
-                throw new IOException("Unknown type: " + typeName);
-            }
-        } else {
-            mtype = QMetaTypeRegistry.getType(type);
-
-            if (mtype == null || mtype.serializer == null) {
-                throw new IOException("Unknown type: " + type.name());
-            }
-        }
-
-        // Return data
-        return new QVariant<>(mtype, mtype.serializer.deserialize(buffer));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantVariantListSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantVariantListSerializer.java
deleted file mode 100644
index 93f2c0599..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VariantVariantListSerializer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class VariantVariantListSerializer<T> implements PrimitiveSerializer<List<QVariant<T>>> {
-    @NonNull
-    private static final VariantVariantListSerializer serializer = new VariantVariantListSerializer();
-
-    private VariantVariantListSerializer() {
-    }
-
-    @NonNull
-    public static <T> VariantVariantListSerializer<T> get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final List<QVariant<T>> data) throws IOException {
-        IntSerializer.get().serialize(channel, data.size());
-
-        final VariantSerializer<T> variantSerializer = VariantSerializer.get();
-        for (QVariant<T> element : data) {
-            variantSerializer.serialize(channel, element);
-        }
-    }
-
-    @NonNull
-    @Override
-    public List<QVariant<T>> deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        final int length = IntSerializer.get().deserialize(buffer);
-        final List<QVariant<T>> list = new ArrayList<>(length);
-
-        final VariantSerializer<T> variantSerializer = VariantSerializer.get();
-        for (int i = 0; i < length; i++) {
-            list.add(variantSerializer.deserialize(buffer));
-        }
-        return list;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VoidSerializer.java b/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VoidSerializer.java
deleted file mode 100644
index 61d3064ff..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/serializers/VoidSerializer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.serializers;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-
-public class VoidSerializer implements PrimitiveSerializer<Void> {
-    @NonNull
-    private static final VoidSerializer serializer = new VoidSerializer();
-
-    private VoidSerializer() {
-    }
-
-    @NonNull
-    public static VoidSerializer get() {
-        return serializer;
-    }
-
-    @Override
-    public void serialize(@NonNull final ByteChannel channel, @NonNull final Void data) throws IOException {
-
-    }
-
-    @Nullable
-    @Override
-    public Void deserialize(@NonNull final ByteBuffer buffer) throws IOException {
-        return null;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java b/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java
deleted file mode 100644
index 85899e7e4..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/types/BufferInfo.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.types;
-
-import android.support.annotation.NonNull;
-
-import com.raizlabs.android.dbflow.annotation.Column;
-import com.raizlabs.android.dbflow.annotation.PrimaryKey;
-import com.raizlabs.android.dbflow.annotation.Table;
-import com.raizlabs.android.dbflow.structure.BaseModel;
-
-import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
-
-@Table(database = ConnectedDatabase.class)
-public class BufferInfo extends BaseModel {
-    @PrimaryKey
-    public int id;
-
-    @Column
-    public int networkId;
-
-    @Column
-    public Type type;
-
-    @Column
-    public int groupId;
-
-    @Column
-    public String name;
-
-    public static BufferInfo create(int id, int networkId, Type type, int groupId, String name) {
-        BufferInfo info = new BufferInfo();
-        info.id = id;
-        info.networkId = networkId;
-        info.type = type;
-        info.groupId = groupId;
-        info.name = name;
-        return info;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "BufferInfo{" +
-                "id=" + id +
-                ", networkId=" + networkId +
-                ", type=" + type +
-                ", groupId=" + groupId +
-                ", name='" + name + '\'' +
-                '}';
-    }
-
-    public enum Type {
-        INVALID(0x00),
-        STATUS(0x01),
-        CHANNEL(0x02),
-        QUERY(0x04),
-        GROUP(0x08);
-
-        public static final int ALL = STATUS.id | CHANNEL.id | QUERY.id | GROUP.id;
-
-        public final short id;
-
-        Type(short id) {
-            this.id = id;
-        }
-
-        Type(int id) {
-            this((short) id);
-        }
-
-        @NonNull
-        public static Type fromId(short id) {
-            switch (id) {
-                case 0x01:
-                    return STATUS;
-                case 0x02:
-                    return CHANNEL;
-                case 0x04:
-                    return QUERY;
-                case 0x08:
-                    return GROUP;
-                default:
-                    return INVALID;
-            }
-        }
-
-    }
-
-    public enum BufferStatus {
-        OFFLINE,
-        AWAY,
-        ONLINE
-    }
-
-    public enum ContentStatus {
-        NONE,
-        ACTIVITY,
-        MESSAGES,
-        HIGHLIGHTS
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/types/Protocol.java b/app/src/main/java/de/kuschku/libquassel/primitives/types/Protocol.java
deleted file mode 100644
index fb461cc04..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/types/Protocol.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.types;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.client.FeatureFlags;
-
-public class Protocol {
-    @NonNull
-    public final FeatureFlags protocolFlags;
-    public final short protocolData;
-    public final byte protocolVersion;
-
-    public Protocol(@NonNull FeatureFlags protocolFlags, short protocolData, byte protocolVersion) {
-        this.protocolFlags = protocolFlags;
-        this.protocolData = protocolData;
-        this.protocolVersion = protocolVersion;
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "Protocol{" +
-                "protocolFlags=" + protocolFlags +
-                ", protocolData=" + protocolData +
-                ", protocolVersion=" + protocolVersion +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/primitives/types/QVariant.java b/app/src/main/java/de/kuschku/libquassel/primitives/types/QVariant.java
deleted file mode 100644
index b4de80848..000000000
--- a/app/src/main/java/de/kuschku/libquassel/primitives/types/QVariant.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.primitives.types;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.Set;
-
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.QMetaTypeRegistry;
-import de.kuschku.libquassel.syncables.SyncableRegistry;
-import de.kuschku.libquassel.syncables.types.interfaces.QSyncableObject;
-
-public class QVariant<T> {
-    @Nullable
-    public final T data;
-    @Nullable
-    public final QMetaType<T> type;
-
-    @SuppressWarnings("unchecked")
-    public QVariant(@NonNull T data) {
-        if (data instanceof Set) {
-            this.data = (T) new ArrayList((Set) data);
-        } else {
-            if (QMetaTypeRegistry.getTypeByObject(data) != null) {
-                this.data = data;
-            } else if (data instanceof QSyncableObject) {
-                this.data = (T) SyncableRegistry.toVariantMap((QSyncableObject) data);
-            } else {
-                throw new IllegalArgumentException();
-            }
-        }
-
-        this.type = QMetaTypeRegistry.getTypeByObject(this.data);
-    }
-
-    public QVariant(@NonNull QMetaType<T> type, @Nullable T data) {
-        this.type = type;
-        this.data = data;
-    }
-
-    public QVariant(@NonNull QMetaType.Type type, @Nullable T data) {
-        this.type = QMetaTypeRegistry.getType(type);
-        this.data = data;
-    }
-
-    public QVariant(@NonNull String typeName, @Nullable T data) {
-        this.type = QMetaTypeRegistry.getType(typeName);
-        this.data = data;
-    }
-
-    @Nullable
-    public static <T> T orNull(@Nullable QVariant<T> data) {
-        if (data == null) return null;
-        else return data.data;
-    }
-
-    @NonNull
-    public String toString() {
-        return "QVariant(data=" + String.valueOf(this.data) + ", type=" + this.type.name + ")";
-    }
-
-    @NonNull
-    public T or(@NonNull T ifNull) {
-        return data == null ? ifNull : data;
-    }
-
-    @Nullable
-    public T get() {
-        return data;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java b/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java
deleted file mode 100644
index e34f01e17..000000000
--- a/app/src/main/java/de/kuschku/libquassel/protocols/DatastreamPeer.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.protocols;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.BufferOverflowException;
-import java.nio.BufferUnderflowException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.CoreConnection;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.serializers.HeartbeatReplySerializer;
-import de.kuschku.libquassel.functions.serializers.HeartbeatSerializer;
-import de.kuschku.libquassel.functions.serializers.InitDataFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.InitRequestFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.PackedInitDataFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.PackedRpcCallFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.PackedSyncFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.UnpackedRpcCallFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.UnpackedSyncFunctionSerializer;
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.objects.MessageTypeRegistry;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.serializers.IntSerializer;
-import de.kuschku.libquassel.primitives.serializers.PrimitiveSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantVariantListSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.util.niohelpers.Helper;
-import de.kuschku.util.niohelpers.WrappedChannel;
-
-import static de.kuschku.util.AndroidAssert.assertFalse;
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-/**
- * A helper class processing incoming and outgoing messages.
- * Implements the Qt Datastream protocol.
- *
- * @author Janne Koschinski
- */
-@SuppressWarnings({"unchecked", "unused"})
-public class DatastreamPeer implements RemotePeer {
-    @NonNull
-    private final CoreConnection connection;
-    @NonNull
-    private final BusProvider busProvider;
-    @NonNull
-    private final ExecutorService parseExecutor;
-    @NonNull
-    private ByteBuffer buffer = ByteBuffer.allocate(0);
-
-    public DatastreamPeer(@NonNull CoreConnection connection, @NonNull BusProvider busProvider) {
-        this.connection = connection;
-        this.busProvider = busProvider;
-        this.busProvider.dispatch.register(this);
-        this.parseExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @NonNull
-    public static List<QVariant<Object>> mapToList(@NonNull Map<String, QVariant> data) {
-        final List<QVariant<Object>> list = new ArrayList<>(data.size() * 2);
-        for (Map.Entry<String, QVariant> entry : data.entrySet()) {
-            list.add(new QVariant<>(QMetaType.Type.QByteArray, entry.getKey()));
-            list.add(entry.getValue());
-        }
-        return list;
-    }
-
-    @NonNull
-    public static Map<String, QVariant> listToMap(@NonNull List<QVariant> data) {
-        final Map<String, QVariant> map = new HashMap<>(data.size() / 2);
-        for (int i = 0; i < data.size(); i += 2) {
-            map.put((String) data.get(i).data, data.get(i + 1));
-        }
-        return map;
-    }
-
-    @NonNull
-    public static <T> Map<T, T> unboxedListToMap(@NonNull List<T> data) {
-        final Map<T, T> map = new HashMap<>(data.size() / 2);
-        for (int i = 0; i < data.size(); i += 2) {
-            map.put(data.get(i), data.get(i + 1));
-        }
-        return map;
-    }
-
-    @NonNull
-    public static List unboxList(@NonNull List packedFunc) {
-        return Lists.transform(packedFunc, new Function<QVariant, Object>() {
-            @Override
-            public Object apply(@Nullable QVariant input) {
-                assertNotNull(input);
-
-                return input.data;
-            }
-        });
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull SyncFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<SyncFunction>get(),
-                UnpackedSyncFunctionSerializer.get().serialize(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull RpcCallFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<RpcCallFunction>get(),
-                UnpackedRpcCallFunctionSerializer.get().serialize(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull InitRequestFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<InitRequestFunction>get(),
-                InitRequestFunctionSerializer.get().serializePacked(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull InitDataFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<InitDataFunction>get(),
-                InitDataFunctionSerializer.get().serialize(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull Heartbeat func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<InitDataFunction>get(),
-                HeartbeatSerializer.get().serialize(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull HeartbeatReply func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.<InitDataFunction>get(),
-                HeartbeatReplySerializer.get().serialize(func)
-        ));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull HandshakeFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        assertFalse(connection.getOutputExecutor().isShutdown());
-        Map<String, QVariant> variantMap = MessageTypeRegistry.toVariantMap(func.data).data;
-        assertNotNull(variantMap);
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantVariantListSerializer.get(),
-                DatastreamPeer.mapToList(variantMap)
-        ));
-    }
-
-    private void handleHandshakeMessage(@NonNull List data) {
-        busProvider.handle(MessageTypeRegistry.from(DatastreamPeer.listToMap(data)));
-    }
-
-    private void handlePackedFunc(@NonNull List<QVariant> data) {
-        final FunctionType type = FunctionType.fromId((int) data.get(0).data);
-        data.remove(0);
-        switch (type) {
-            case SYNC:
-                busProvider.handle(PackedSyncFunctionSerializer.get().deserialize(data));
-                break;
-            case RPCCALL:
-                busProvider.handle(PackedRpcCallFunctionSerializer.get().deserialize(data));
-                break;
-            case INITREQUEST:
-                busProvider.handle(InitRequestFunctionSerializer.get().deserialize(data));
-                break;
-            case INITDATA:
-                busProvider.handle(PackedInitDataFunctionSerializer.get().deserialize(data));
-                break;
-            case HEARTBEAT:
-                busProvider.handle(HeartbeatSerializer.get().deserialize(data));
-                break;
-            case HEARTBEATREPLY:
-                busProvider.handle(HeartbeatReplySerializer.get().deserialize(data));
-                break;
-            default:
-                busProvider.sendEvent(new GeneralErrorEvent("Unknown package received: " + data));
-                break;
-        }
-    }
-
-    public void processMessage() throws IOException {
-        buffer = ByteBuffer.allocate(4);
-        connection.getChannel().read(buffer);
-
-        final int size = IntSerializer.get().deserialize(buffer);
-
-        if (size == 0) return;
-
-        buffer = ByteBuffer.allocate(size);
-        connection.getChannel().read(buffer);
-
-        parseExecutor.submit(new ParseRunnable(buffer));
-    }
-
-    @NonNull
-    @Override
-    public ByteBuffer getBuffer() {
-        return buffer;
-    }
-
-    /**
-     * A special runnable that serializes an object into a buffer, writes the size of the buffer, and, if necessary,
-     * compresses it with deflate.
-     *
-     * @param <T>
-     */
-    private class OutputRunnable<T> implements Runnable {
-        @NonNull
-        private final T data;
-        @NonNull
-        private final PrimitiveSerializer<T> serializer;
-
-        public OutputRunnable(@NonNull PrimitiveSerializer<T> serializer, @NonNull T data) {
-            this.data = data;
-            this.serializer = serializer;
-        }
-
-        @Override
-        public void run() {
-            assertNotNull(connection.getChannel());
-
-            try {
-                // TODO: Reuse buffer
-
-                // Create a buffer
-                final ByteArrayOutputStream out = new ByteArrayOutputStream();
-                // Wrap it in a fake channel
-                final WrappedChannel fakeChannel = WrappedChannel.ofStreams(null, new DataOutputStream(out));
-                // Serialize the object into the buffer-channel
-                serializer.serialize(fakeChannel, data);
-                // Write the size of the buffer over the network
-                IntSerializer.get().serialize(connection.getChannel(), out.size());
-                // Write the content of the buffer over the network
-                connection.getChannel().write(ByteBuffer.wrap(out.toByteArray()));
-                // Flush the deflater, if existing
-                connection.getChannel().flush();
-                // Close the buffer
-                fakeChannel.close();
-            } catch (Exception e) {
-                busProvider.sendEvent(new GeneralErrorEvent(e));
-            }
-        }
-    }
-
-    private class ParseRunnable implements Runnable {
-        final ByteBuffer buffer;
-
-        public ParseRunnable(ByteBuffer buffer) {
-            this.buffer = buffer;
-        }
-
-        @Override
-        public void run() {
-            try {
-                // TODO: Put this into a future with a time limit, and parallelize it.
-                final List data = VariantVariantListSerializer.get().deserialize(buffer);
-                if (connection.getStatus() == ConnectionChangeEvent.Status.HANDSHAKE) {
-                    handleHandshakeMessage(data);
-                } else {
-                    handlePackedFunc(data);
-                }
-            } catch (@NonNull BufferUnderflowException | BufferOverflowException e) {
-                Helper.printHexDump(buffer.array());
-                busProvider.sendEvent(new GeneralErrorEvent(e));
-            } catch (Exception e) {
-                busProvider.sendEvent(new GeneralErrorEvent(e));
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/protocols/LegacyPeer.java b/app/src/main/java/de/kuschku/libquassel/protocols/LegacyPeer.java
deleted file mode 100644
index 002610dc4..000000000
--- a/app/src/main/java/de/kuschku/libquassel/protocols/LegacyPeer.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.protocols;
-
-import android.support.annotation.NonNull;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.CoreConnection;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.functions.FunctionType;
-import de.kuschku.libquassel.functions.serializers.HeartbeatReplySerializer;
-import de.kuschku.libquassel.functions.serializers.HeartbeatSerializer;
-import de.kuschku.libquassel.functions.serializers.InitDataFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.InitRequestFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.UnpackedInitDataFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.UnpackedRpcCallFunctionSerializer;
-import de.kuschku.libquassel.functions.serializers.UnpackedSyncFunctionSerializer;
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.objects.MessageTypeRegistry;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.serializers.IntSerializer;
-import de.kuschku.libquassel.primitives.serializers.PrimitiveSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantSerializer;
-import de.kuschku.libquassel.primitives.serializers.VariantVariantListSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.util.niohelpers.WrappedChannel;
-
-import static de.kuschku.libquassel.primitives.QMetaType.Type.QVariantList;
-import static de.kuschku.libquassel.primitives.QMetaType.Type.QVariantMap;
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-/**
- * A helper class processing incoming and outgoing messages.
- * Implements the Legacy Protocol with modern Handshake
- *
- * @author Janne Koschinski
- */
-@SuppressWarnings({"unchecked", "unused"})
-public class LegacyPeer implements RemotePeer {
-    @NonNull
-    private final CoreConnection connection;
-    @NonNull
-    private final BusProvider busProvider;
-    @NonNull
-    private final ExecutorService parseExecutor;
-    @NonNull
-    private ByteBuffer buffer = ByteBuffer.allocate(0);
-
-    public LegacyPeer(@NonNull CoreConnection connection, @NonNull BusProvider busProvider) {
-        this.connection = connection;
-        this.busProvider = busProvider;
-        this.busProvider.dispatch.register(this);
-        this.parseExecutor = Executors.newCachedThreadPool();
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public final void onEventBackgroundThread(@NonNull SyncFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        final List serialize = UnpackedSyncFunctionSerializer.get().serialize(func);
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant(new QMetaType(List.class, QMetaType.Type.QVariantList, VariantVariantListSerializer.get()),
-                        serialize)));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull RpcCallFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant<>(QVariantList, UnpackedRpcCallFunctionSerializer.get().serialize(func))));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull InitRequestFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant<>(QVariantList, InitRequestFunctionSerializer.get().serialize(func))));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull InitDataFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant<>(QVariantList, InitDataFunctionSerializer.get().serialize(func))));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull Heartbeat func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant<>(QVariantList, HeartbeatSerializer.get().serialize(func))));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull HeartbeatReply func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(VariantSerializer.get(),
-                new QVariant<>(QVariantList, HeartbeatReplySerializer.get().serialize(func))));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onEventBackgroundThread(@NonNull HandshakeFunction func) {
-        assertNotNull(connection.getOutputExecutor());
-        connection.getOutputExecutor().submit(new OutputRunnable<>(
-                VariantSerializer.get(), MessageTypeRegistry.toVariantMap(func.data)));
-    }
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void processMessage() throws IOException {
-        buffer = ByteBuffer.allocate(4);
-        connection.getChannel().read(buffer);
-
-        final int size = IntSerializer.get().deserialize(buffer);
-        if (size == 0) return;
-
-        buffer = ByteBuffer.allocate(size);
-        connection.getChannel().read(buffer);
-
-        parseExecutor.submit(new ParseRunnable(buffer));
-    }
-
-    @NonNull
-    @Override
-    public ByteBuffer getBuffer() {
-        return buffer;
-    }
-
-    /**
-     * A special runnable that serializes an object into a buffer, writes the size of the buffer, and, if necessary,
-     * compresses it with deflate.
-     *
-     * @param <T>
-     */
-    private class OutputRunnable<T> implements Runnable {
-        @NonNull
-        private final T data;
-        @NonNull
-        private final PrimitiveSerializer<T> serializer;
-
-        public OutputRunnable(@NonNull PrimitiveSerializer<T> serializer, @NonNull T data) {
-            this.data = data;
-            this.serializer = serializer;
-        }
-
-        @Override
-        public void run() {
-            try {
-                // TODO: Reuse buffer
-
-                // Create a buffer
-                final ByteArrayOutputStream out = new ByteArrayOutputStream();
-                // Wrap it in a fake channel
-                final WrappedChannel fakeChannel = WrappedChannel.ofStreams(null, new DataOutputStream(out));
-                // Serialize the object into the buffer-channel
-                serializer.serialize(fakeChannel, data);
-                // Write the size of the buffer over the network
-                IntSerializer.get().serialize(connection.getChannel(), out.size());
-                // Write the content of the buffer over the network
-                connection.getChannel().write(ByteBuffer.wrap(out.toByteArray()));
-                // Flush the deflater, if existing
-                connection.getChannel().flush();
-                // Close the buffer
-                fakeChannel.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    private class ParseRunnable implements Runnable {
-        final ByteBuffer buffer;
-
-        public ParseRunnable(ByteBuffer buffer) {
-            this.buffer = buffer;
-        }
-
-        @Override
-        public void run() {
-            try {
-                // TODO: Put this into a future with a time limit, and parallelize it.
-                final QVariant data = VariantSerializer.get().deserialize(buffer);
-                assertNotNull(data.data);
-                if (data.type.type == QVariantMap) {
-                    busProvider.handle(MessageTypeRegistry.from((Map<String, QVariant>) data.data));
-                } else if (data.type.type == QVariantList) {
-                    final FunctionType type = FunctionType.fromId((Integer) ((List<Object>) data.data).remove(0));
-                    switch (type) {
-                        case SYNC:
-                            busProvider.handle(UnpackedSyncFunctionSerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        case RPCCALL:
-                            busProvider.handle(UnpackedRpcCallFunctionSerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        case INITREQUEST:
-                            busProvider.handle(InitRequestFunctionSerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        case INITDATA:
-                            busProvider.handle(UnpackedInitDataFunctionSerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        case HEARTBEAT:
-                            busProvider.handle(HeartbeatSerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        case HEARTBEATREPLY:
-                            busProvider.handle(HeartbeatReplySerializer.get().deserialize((List<QVariant>) data.data));
-                            break;
-                        default:
-                            busProvider.sendEvent(new GeneralErrorEvent("Unknown package received: " + data));
-                            break;
-                    }
-                }
-            } catch (Exception e) {
-                busProvider.sendEvent(new GeneralErrorEvent(e));
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java b/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java
deleted file mode 100644
index 05329d4c2..000000000
--- a/app/src/main/java/de/kuschku/libquassel/protocols/RemotePeer.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.protocols;
-
-import android.support.annotation.NonNull;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.functions.types.Heartbeat;
-import de.kuschku.libquassel.functions.types.HeartbeatReply;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.functions.types.InitRequestFunction;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-
-public interface RemotePeer {
-    byte DATASTREAM = 0x02;
-    byte LEGACY = 0x01;
-    int PROTOCOL_VERSION_LEGACY = 10;
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull SyncFunction func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull RpcCallFunction func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull InitRequestFunction func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull InitDataFunction func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull HandshakeFunction func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull Heartbeat func);
-
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    void onEventBackgroundThread(@NonNull HeartbeatReply func);
-
-    void processMessage() throws IOException;
-
-    @NonNull
-    ByteBuffer getBuffer();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/ssl/CertificateManager.java b/app/src/main/java/de/kuschku/libquassel/ssl/CertificateManager.java
deleted file mode 100644
index 08d24dfe1..000000000
--- a/app/src/main/java/de/kuschku/libquassel/ssl/CertificateManager.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.ssl;
-
-import android.support.annotation.NonNull;
-
-import java.security.cert.X509Certificate;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.util.accounts.ServerAddress;
-
-public interface CertificateManager {
-    boolean isTrusted(X509Certificate certificate, ServerAddress core);
-
-    boolean addCertificate(X509Certificate certificate, ServerAddress core);
-
-    boolean removeCertificate(X509Certificate certificate, ServerAddress core);
-
-    boolean removeAllCertificates(ServerAddress core);
-
-    @NonNull
-    List<String> findCertificates(ServerAddress core);
-
-    @NonNull
-    Map<String, Collection<String>> findAllCertificates();
-
-    void checkTrusted(X509Certificate certificate, ServerAddress address) throws UnknownCertificateException;
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/ssl/QuasselTrustManager.java b/app/src/main/java/de/kuschku/libquassel/ssl/QuasselTrustManager.java
deleted file mode 100644
index 3a6edbe89..000000000
--- a/app/src/main/java/de/kuschku/libquassel/ssl/QuasselTrustManager.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.ssl;
-
-import android.support.annotation.NonNull;
-
-import java.security.GeneralSecurityException;
-import java.security.KeyStore;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.TrustManagerFactory;
-import javax.net.ssl.X509TrustManager;
-
-import de.kuschku.util.accounts.ServerAddress;
-import de.kuschku.util.backports.Consumer;
-import de.kuschku.util.certificates.CertificateUtils;
-
-public class QuasselTrustManager implements X509TrustManager {
-    @NonNull
-    private final X509TrustManager wrapped;
-    @NonNull
-    private final CertificateManager certificateManager;
-    @NonNull
-    private final ServerAddress address;
-    private final Consumer<X509Certificate[]> callback;
-
-    public QuasselTrustManager(@NonNull X509TrustManager wrapped, @NonNull CertificateManager certificateManager, @NonNull ServerAddress address, Consumer<X509Certificate[]> callback) {
-        this.wrapped = wrapped;
-        this.certificateManager = certificateManager;
-        this.address = address;
-        this.callback = callback;
-    }
-
-    @NonNull
-    public static QuasselTrustManager fromFactory(@NonNull TrustManagerFactory factory, @NonNull CertificateManager certificateManager, @NonNull ServerAddress address, Consumer<X509Certificate[]> callback) throws GeneralSecurityException {
-        TrustManager[] managers = factory.getTrustManagers();
-        for (TrustManager manager : managers) {
-            if (manager instanceof X509TrustManager) {
-                return new QuasselTrustManager((X509TrustManager) manager, certificateManager, address, callback);
-            }
-        }
-        throw new GeneralSecurityException("Couldn’t find trustmanager provided by factory");
-    }
-
-    @NonNull
-    public static QuasselTrustManager fromDefault(@NonNull CertificateManager certificateManager, @NonNull ServerAddress address, Consumer<X509Certificate[]> callback) throws GeneralSecurityException {
-        TrustManagerFactory factory = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-        factory.init((KeyStore) null);
-        return fromFactory(factory, certificateManager, address, callback);
-    }
-
-    @Override
-    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-        wrapped.checkClientTrusted(chain, authType);
-    }
-
-    @Override
-    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-        try {
-            wrapped.checkServerTrusted(chain, authType);
-            chain[0].checkValidity();
-            if (!CertificateUtils.getHostnames(chain[0]).contains(address.host))
-                throw new CertificateException("Hostname not in certificate");
-        } catch (CertificateException e) {
-            certificateManager.checkTrusted(chain[0], address);
-        }
-        callback.apply(chain);
-    }
-
-    @Override
-    public X509Certificate[] getAcceptedIssuers() {
-        return wrapped.getAcceptedIssuers();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/ssl/UnknownCertificateException.java b/app/src/main/java/de/kuschku/libquassel/ssl/UnknownCertificateException.java
deleted file mode 100644
index 0ef702f9b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/ssl/UnknownCertificateException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.ssl;
-
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import de.kuschku.util.accounts.ServerAddress;
-
-public class UnknownCertificateException extends CertificateException {
-    public final X509Certificate certificate;
-    public final ServerAddress address;
-
-    public UnknownCertificateException(X509Certificate certificate, ServerAddress address) {
-        this.certificate = certificate;
-        this.address = address;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/Syncable.java b/app/src/main/java/de/kuschku/libquassel/syncables/Syncable.java
deleted file mode 100644
index 0429ebd67..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/Syncable.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.primitives.QMetaType;
-
-public @interface Syncable {
-    @NonNull String name() default "";
-
-    @NonNull QMetaType.Type type() default QMetaType.Type.LastType;
-
-    @NonNull String userType() default "";
-
-    @NonNull QMetaType.Type[] paramTypes() default {};
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/SyncableRegistry.java b/app/src/main/java/de/kuschku/libquassel/syncables/SyncableRegistry.java
deleted file mode 100644
index cbfa0d5a9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/SyncableRegistry.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.exceptions.UnknownTypeException;
-import de.kuschku.libquassel.functions.types.InitDataFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.AliasManagerSerializer;
-import de.kuschku.libquassel.syncables.serializers.BufferSyncerSerializer;
-import de.kuschku.libquassel.syncables.serializers.BufferViewConfigSerializer;
-import de.kuschku.libquassel.syncables.serializers.BufferViewManagerSerializer;
-import de.kuschku.libquassel.syncables.serializers.CoreInfoSerializer;
-import de.kuschku.libquassel.syncables.serializers.IdentitySerializer;
-import de.kuschku.libquassel.syncables.serializers.IgnoreListManagerSerializer;
-import de.kuschku.libquassel.syncables.serializers.IrcChannelSerializer;
-import de.kuschku.libquassel.syncables.serializers.IrcUserSerializer;
-import de.kuschku.libquassel.syncables.serializers.NetworkConfigSerializer;
-import de.kuschku.libquassel.syncables.serializers.NetworkSerializer;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QSyncableObject;
-
-public class SyncableRegistry {
-    @NonNull
-    private static final Map<String, ObjectSerializer> map = new HashMap<>();
-
-    static {
-        map.put("IgnoreListManager", IgnoreListManagerSerializer.get());
-        map.put("BufferSyncer", BufferSyncerSerializer.get());
-        map.put("BufferViewConfig", BufferViewConfigSerializer.get());
-        map.put("BufferViewManager", BufferViewManagerSerializer.get());
-        map.put("Identity", IdentitySerializer.get());
-        map.put("IrcChannel", IrcChannelSerializer.get());
-        map.put("IrcUser", IrcUserSerializer.get());
-        map.put("Network", NetworkSerializer.get());
-        map.put("NetworkConfig", NetworkConfigSerializer.get());
-        map.put("AliasManager", AliasManagerSerializer.get());
-        map.put("CoreInfo", CoreInfoSerializer.get());
-    }
-
-    private SyncableRegistry() {
-
-    }
-
-    @SuppressWarnings("unchecked")
-    @Nullable
-    public static SyncableObject from(@NonNull InitDataFunction function) throws UnknownTypeException {
-        String className = function.className;
-        ObjectSerializer<? extends SyncableObject> serializer = map.get(className);
-        if (serializer == null) throw new UnknownTypeException(className, function);
-        return serializer.from(function);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Nullable
-    public static Map<String, QVariant<Object>> toVariantMap(QSyncableObject data) {
-        String className = data.getClass().getSimpleName();
-        ObjectSerializer<QSyncableObject> serializer = map.get(className);
-        if (serializer == null) throw new UnknownTypeException(className);
-        return serializer.toVariantMap(data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/Synced.java b/app/src/main/java/de/kuschku/libquassel/syncables/Synced.java
deleted file mode 100644
index fe7a09ffb..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/Synced.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.SOURCE)
-public @interface Synced {
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/AliasManagerSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/AliasManagerSerializer.java
deleted file mode 100644
index 9d0b8ca53..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/AliasManagerSerializer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.AliasManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings("unchecked")
-public class AliasManagerSerializer implements ObjectSerializer<AliasManager> {
-    @NonNull
-    private static final AliasManagerSerializer serializer = new AliasManagerSerializer();
-
-    private AliasManagerSerializer() {
-
-    }
-
-    @NonNull
-    public static AliasManagerSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull AliasManager data) {
-        HashMap<String, QVariant<Object>> aliases = new HashMap<>();
-        List<String> names = new ArrayList<>(data.aliases().size());
-        List<String> expansions = new ArrayList<>(data.aliases().size());
-        for (QAliasManager.Alias alias : data.aliases()) {
-            names.add(alias.name);
-            expansions.add(alias.expansion);
-        }
-        aliases.put("names", new QVariant(QMetaType.Type.QStringList, names));
-        aliases.put("expansions", new QVariant(QMetaType.Type.QStringList, expansions));
-
-        HashMap<String, QVariant<Object>> map = new HashMap<>();
-        map.put("Aliases", new QVariant(QMetaType.Type.QVariantMap, aliases));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public AliasManager fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public AliasManager fromLegacy(@NonNull Map<String, QVariant> map) {
-        Map<String, QVariant<List<String>>> aliases = (Map<String, QVariant<List<String>>>) map.get("Aliases").data;
-        assertNotNull(aliases);
-        return new AliasManager(
-                aliases.get("names").data,
-                aliases.get("expansions").data
-        );
-    }
-
-    @Nullable
-    @Override
-    public AliasManager from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferSyncerSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferSyncerSerializer.java
deleted file mode 100644
index bbe5b3127..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferSyncerSerializer.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.protocols.DatastreamPeer;
-import de.kuschku.libquassel.syncables.types.impl.BufferSyncer;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class BufferSyncerSerializer implements ObjectSerializer<BufferSyncer> {
-    @NonNull
-    private static final BufferSyncerSerializer serializer = new BufferSyncerSerializer();
-
-    private BufferSyncerSerializer() {
-    }
-
-    @NonNull
-    public static BufferSyncerSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull BufferSyncer data) {
-        // FIXME: IMPLEMENT
-        throw new IllegalArgumentException();
-    }
-
-    @NonNull
-    @Override
-    public BufferSyncer fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public BufferSyncer fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new BufferSyncer(
-                DatastreamPeer.unboxedListToMap((List<Integer>) map.get("LastSeenMsg").data),
-                DatastreamPeer.unboxedListToMap((List<Integer>) map.get("MarkerLines").data)
-        );
-    }
-
-    @Override
-    public BufferSyncer from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
deleted file mode 100644
index f24025279..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewConfigSerializer.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.BufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class BufferViewConfigSerializer implements ObjectSerializer<BufferViewConfig> {
-    @NonNull
-    private static final BufferViewConfigSerializer serializer = new BufferViewConfigSerializer();
-
-    private BufferViewConfigSerializer() {
-    }
-
-    @NonNull
-    public static BufferViewConfigSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull BufferViewConfig data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("bufferViewName", new QVariant<>(data.bufferViewName()));
-        map.put("TemporarilyRemovedBuffers", new QVariant<>(data.temporarilyRemovedBuffers()));
-        map.put("hideInactiveNetworks", new QVariant<>(data.hideInactiveBuffers()));
-        map.put("BufferList", new QVariant<>(data.bufferList()));
-        map.put("allowedBufferTypes", new QVariant<>(data.allowedBufferTypes()));
-        map.put("sortAlphabetically", new QVariant<>(data.sortAlphabetically()));
-        map.put("disableDecoration", new QVariant<>(data.disableDecoration()));
-        map.put("addNewBuffersAutomatically", new QVariant<>(data.addNewBuffersAutomatically()));
-        map.put("networkId", new QVariant<>("NetworkId", data.networkId()));
-        map.put("minimumActivity", new QVariant<>(data.minimumActivity().id));
-        map.put("hideInactiveBuffers", new QVariant<>(data.hideInactiveBuffers()));
-        map.put("RemovedBuffers", new QVariant<>(data.removedBuffers()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public BufferViewConfig fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public BufferViewConfig fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new BufferViewConfig(
-                (String) map.get("bufferViewName").data,
-                (List<Integer>) map.get("TemporarilyRemovedBuffers").data,
-                (boolean) map.get("hideInactiveNetworks").data,
-                (List<Integer>) map.get("BufferList").data,
-                (int) map.get("allowedBufferTypes").data,
-                (boolean) map.get("sortAlphabetically").data,
-                (boolean) map.get("disableDecoration").data,
-                (boolean) map.get("addNewBuffersAutomatically").data,
-                (int) map.get("networkId").data,
-                QBufferViewConfig.MinimumActivity.fromId((int) map.get("minimumActivity").data),
-                (boolean) map.get("hideInactiveBuffers").data,
-                (List<Integer>) map.get("RemovedBuffers").data
-        );
-    }
-
-    @Override
-    public BufferViewConfig from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewManagerSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewManagerSerializer.java
deleted file mode 100644
index fa938c6f8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/BufferViewManagerSerializer.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.BufferViewManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class BufferViewManagerSerializer implements ObjectSerializer<QBufferViewManager> {
-    @NonNull
-    private static final BufferViewManagerSerializer serializer = new BufferViewManagerSerializer();
-
-    private BufferViewManagerSerializer() {
-    }
-
-    @NonNull
-    public static BufferViewManagerSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull QBufferViewManager data) {
-        HashMap<String, QVariant<Object>> map = new HashMap<>();
-        map.put("BufferViewIds", new QVariant(getBufferViewIds(data)));
-        return map;
-    }
-
-    @NonNull
-    private List<Integer> getBufferViewIds(@NonNull QBufferViewManager data) {
-        List<Integer> bufferViewIds = new ArrayList<>(data.bufferViewConfigs().size());
-        for (QBufferViewConfig config : data.bufferViewConfigs())
-            bufferViewIds.add(config.bufferViewId());
-        return bufferViewIds;
-    }
-
-    @NonNull
-    @Override
-    public QBufferViewManager fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public QBufferViewManager fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new BufferViewManager(
-                (List<Integer>) map.get("BufferViewIds").data
-        );
-    }
-
-    @Override
-    public QBufferViewManager from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/CoreInfoSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/CoreInfoSerializer.java
deleted file mode 100644
index 7adba85fb..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/CoreInfoSerializer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.CoreInfo;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings("unchecked")
-public class CoreInfoSerializer implements ObjectSerializer<CoreInfo> {
-    @NonNull
-    private static final CoreInfoSerializer serializer = new CoreInfoSerializer();
-
-    private CoreInfoSerializer() {
-
-    }
-
-    @NonNull
-    public static CoreInfoSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull CoreInfo data) {
-        Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("coreData", (QVariant<Object>) data.coreData());
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public CoreInfo fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public CoreInfo fromLegacy(@NonNull Map<String, QVariant> map) {
-        QVariant<Map<String, QVariant>> data = map.get("coreData");
-        assertNotNull(data);
-        return new CoreInfo(
-                data.data
-        );
-    }
-
-    @Nullable
-    @Override
-    public CoreInfo from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IdentitySerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IdentitySerializer.java
deleted file mode 100644
index 1deebc220..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IdentitySerializer.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class IdentitySerializer implements ObjectSerializer<Identity> {
-    @NonNull
-    private static final IdentitySerializer serializer = new IdentitySerializer();
-
-    private IdentitySerializer() {
-    }
-
-    @NonNull
-    public static IdentitySerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull Identity data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("identityName", new QVariant(data.identityName()));
-        map.put("nicks", new QVariant(data.nicks()));
-        map.put("ident", new QVariant(data.ident()));
-        map.put("realName", new QVariant(data.realName()));
-        map.put("identityId", new QVariant(data.id()));
-        map.put("autoAwayEnabled", new QVariant(data.autoAwayEnabled()));
-        map.put("autoAwayReasonEnabled", new QVariant(data.autoAwayReasonEnabled()));
-        map.put("autoAwayTime", new QVariant(data.autoAwayTime()));
-        map.put("awayNickEnabled", new QVariant(data.awayNickEnabled()));
-        map.put("awayReasonEnabled", new QVariant(data.awayReasonEnabled()));
-        map.put("detachAwayEnabled", new QVariant(data.detachAwayEnabled()));
-        map.put("detachAwayReasonEnabled", new QVariant(data.detachAwayReasonEnabled()));
-        map.put("awayReason", new QVariant(data.awayReason()));
-        map.put("autoAwayReason", new QVariant(data.autoAwayReason()));
-        map.put("detachAwayReason", new QVariant(data.detachAwayReason()));
-        map.put("partReason", new QVariant(data.partReason()));
-        map.put("quitReason", new QVariant(data.quitReason()));
-        map.put("awayNick", new QVariant(data.awayNick()));
-        map.put("kickReason", new QVariant(data.kickReason()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public Identity fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public Identity fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new Identity(
-                (int) map.get("identityId").data,
-                (String) map.get("identityName").data,
-                (String) map.get("realName").data,
-                (List<String>) map.get("nicks").data,
-                (String) map.get("awayNick").data,
-                (boolean) map.get("awayNickEnabled").data,
-                (String) map.get("awayReason").data,
-                (boolean) map.get("awayReasonEnabled").data,
-                (boolean) map.get("autoAwayEnabled").data,
-                (int) map.get("autoAwayTime").data,
-                (String) map.get("autoAwayReason").data,
-                (boolean) map.get("autoAwayReasonEnabled").data,
-                (boolean) map.get("detachAwayEnabled").data,
-                (String) map.get("detachAwayReason").data,
-                (boolean) map.get("detachAwayReasonEnabled").data,
-                (String) map.get("ident").data,
-                (String) map.get("kickReason").data,
-                (String) map.get("partReason").data,
-                (String) map.get("quitReason").data
-        );
-    }
-
-    @Override
-    public Identity from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IgnoreListManagerSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IgnoreListManagerSerializer.java
deleted file mode 100644
index 0b737f8a8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IgnoreListManagerSerializer.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings("unchecked")
-public class IgnoreListManagerSerializer implements ObjectSerializer<IgnoreListManager> {
-    @NonNull
-    private static final IgnoreListManagerSerializer serializer = new IgnoreListManagerSerializer();
-
-    private IgnoreListManagerSerializer() {
-
-    }
-
-    @NonNull
-    public static IgnoreListManagerSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull IgnoreListManager data) {
-        HashMap<String, QVariant<Object>> map = new HashMap<>();
-        List<Integer> scope = new ArrayList<>(data.ignoreList().size());
-        List<Integer> ignoreType = new ArrayList<>(data.ignoreList().size());
-        List<Boolean> isActive = new ArrayList<>(data.ignoreList().size());
-        List<String> scopeRule = new ArrayList<>(data.ignoreList().size());
-        List<Boolean> isRegEx = new ArrayList<>(data.ignoreList().size());
-        List<Integer> strictness = new ArrayList<>(data.ignoreList().size());
-        List<String> ignoreRule = new ArrayList<>(data.ignoreList().size());
-        for (IgnoreListManager.IgnoreListItem item : data.ignoreList()) {
-            scope.add(item.getScope().value);
-            ignoreType.add(item.getType().value);
-            isActive.add(item.isActive());
-            scopeRule.add(item.getScopeRule());
-            isRegEx.add(item.isRegEx());
-            strictness.add(item.getStrictness().value);
-            ignoreRule.add(item.getIgnoreRule().rule());
-        }
-
-        map.put("scope", new QVariant(scope));
-        map.put("ignoreType", new QVariant(ignoreType));
-        map.put("isActive", new QVariant(isActive));
-        map.put("scopeRule", new QVariant(scopeRule));
-        map.put("isRegEx", new QVariant(isRegEx));
-        map.put("strictness", new QVariant(strictness));
-        map.put("ignoreRule", new QVariant(ignoreRule));
-
-
-        return Collections.singletonMap("IgnoreList", new QVariant<>(QMetaType.Type.QVariantMap, map));
-    }
-
-    @NonNull
-    @Override
-    public IgnoreListManager fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public IgnoreListManager fromLegacy(@NonNull Map<String, QVariant> map) {
-        if (map.containsKey("IgnoreList"))
-            map = (Map<String, QVariant>) map.get("IgnoreList").data;
-        assertNotNull(map);
-        return new IgnoreListManager(
-                (List<Integer>) map.get("scope").data,
-                (List<Integer>) map.get("ignoreType").data,
-                (List<Boolean>) map.get("isActive").data,
-                (List<String>) map.get("scopeRule").data,
-                (List<Boolean>) map.get("isRegEx").data,
-                (List<Integer>) map.get("strictness").data,
-                (List<String>) map.get("ignoreRule").data
-        );
-    }
-
-    @Nullable
-    @Override
-    public IgnoreListManager from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcChannelSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcChannelSerializer.java
deleted file mode 100644
index 664358fab..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcChannelSerializer.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.objects.serializers.StringObjectMapSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.IrcChannel;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class IrcChannelSerializer implements ObjectSerializer<IrcChannel> {
-    @NonNull
-    private static final IrcChannelSerializer serializer = new IrcChannelSerializer();
-
-    private IrcChannelSerializer() {
-    }
-
-    @NonNull
-    public static IrcChannelSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull IrcChannel data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("name", new QVariant(data.name()));
-        map.put("topic", new QVariant<>(data.topic()));
-        map.put("password", new QVariant<>(data.password()));
-        map.put("UserModes", new QVariant<>(StringObjectMapSerializer.<String>get().toVariantMap(data.userModes())));
-        map.put("ChanModes", new QVariant<>(data.chanModes()));
-        map.put("encrypted", new QVariant<>(data.encrypted()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public IrcChannel fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public IrcChannel fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new IrcChannel(
-                (String) map.get("name").data,
-                (String) map.get("topic").data,
-                (String) map.get("password").data,
-                StringObjectMapSerializer.<String>get().fromLegacy(((QVariant<Map<String, QVariant>>) map.get("UserModes")).data),
-                StringObjectMapSerializer.get().fromLegacy((Map<String, QVariant>) map.get("ChanModes").data),
-                (boolean) map.get("encrypted").data
-        );
-    }
-
-    @Override
-    public IrcChannel from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java
deleted file mode 100644
index d65982b04..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/IrcUserSerializer.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.IrcUser;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class IrcUserSerializer implements ObjectSerializer<IrcUser> {
-    @NonNull
-    private static final IrcUserSerializer serializer = new IrcUserSerializer();
-
-    private IrcUserSerializer() {
-    }
-
-    @NonNull
-    public static IrcUserSerializer get() {
-        return serializer;
-    }
-
-    @NonNull
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull IrcUser data) {
-        final Map<String, QVariant<Object>> map = new HashMap<>();
-
-        map.put("server", new QVariant<>(data.server()));
-        map.put("ircOperator", new QVariant<>(data.ircOperator()));
-        map.put("away", new QVariant<>(data.isAway()));
-        map.put("lastAwayMessage", new QVariant<>(data.lastAwayMessage()));
-        map.put("idleTime", new QVariant<>(data.idleTime()));
-        map.put("whoisServiceReply", new QVariant<>(data.whoisServiceReply()));
-        map.put("suserHost", new QVariant<>(data.suserHost()));
-        map.put("nick", new QVariant<>(data.nick()));
-        map.put("realName", new QVariant<>(data.realName()));
-        map.put("account", new QVariant<>(data.account()));
-        map.put("awayMessage", new QVariant<>(data.awayMessage()));
-        map.put("loginTime", new QVariant<>(data.loginTime()));
-        map.put("encrypted", new QVariant<>(data.encrypted()));
-        map.put("channels", new QVariant<>(data.channels()));
-        map.put("host", new QVariant<>(data.host()));
-        map.put("userModes", new QVariant<>(data.userModes()));
-        map.put("user", new QVariant<>(data.user()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public IrcUser fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public IrcUser fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new IrcUser(
-                (String) map.get("server").data,
-                (String) map.get("ircOperator").data,
-                (boolean) map.get("away").data,
-                (int) map.get("lastAwayMessage").data,
-                (DateTime) map.get("idleTime").data,
-                (String) map.get("whoisServiceReply").data,
-                (String) map.get("suserHost").data,
-                (String) map.get("nick").data,
-                (String) map.get("realName").data,
-                (map.get("account") == null) ? "" : (String) map.get("account").data,
-                (String) map.get("awayMessage").data,
-                (DateTime) map.get("loginTime").data,
-                (boolean) map.get("encrypted").data,
-                (List<String>) map.get("channels").data,
-                (String) map.get("host").data,
-                (String) map.get("userModes").data,
-                (String) map.get("user").data
-        );
-    }
-
-    @Override
-    public IrcUser from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkConfigSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkConfigSerializer.java
deleted file mode 100644
index ce39ca35a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkConfigSerializer.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.NetworkConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig;
-
-public class NetworkConfigSerializer implements ObjectSerializer<QNetworkConfig> {
-    @NonNull
-    private static final NetworkConfigSerializer serializer = new NetworkConfigSerializer();
-
-    private NetworkConfigSerializer() {
-
-    }
-
-    @NonNull
-    public static NetworkConfigSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull QNetworkConfig data) {
-        HashMap<String, QVariant<Object>> map = new HashMap<>();
-        map.put("standardCtcp", new QVariant<>(data.standardCtcp()));
-        map.put("autoWhoEnabled", new QVariant<>(data.autoWhoEnabled()));
-        map.put("autoWhoDelay", new QVariant<>(data.autoWhoDelay()));
-        map.put("autoWhoNickLimit", new QVariant<>(data.autoWhoNickLimit()));
-        map.put("autoWhoInterval", new QVariant<>(data.autoWhoInterval()));
-        map.put("pingTimeoutEnabled", new QVariant<>(data.pingTimeoutEnabled()));
-        map.put("pingInterval", new QVariant<>(data.pingInterval()));
-        map.put("maxPingCount", new QVariant<>(data.maxPingCount()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public QNetworkConfig fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public QNetworkConfig fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new NetworkConfig(
-                (boolean) map.get("standardCtcp").data,
-                (boolean) map.get("autoWhoEnabled").data,
-                (int) map.get("autoWhoDelay").data,
-                (int) map.get("autoWhoNickLimit").data,
-                (int) map.get("autoWhoInterval").data,
-                (boolean) map.get("pingTimeoutEnabled").data,
-                (int) map.get("pingInterval").data,
-                (int) map.get("maxPingCount").data
-        );
-    }
-
-    @Nullable
-    @Override
-    public QNetworkConfig from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkInfoSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkInfoSerializer.java
deleted file mode 100644
index 144899f32..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkInfoSerializer.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class NetworkInfoSerializer implements ObjectSerializer<NetworkInfo> {
-    @NonNull
-    private static final NetworkInfoSerializer serializer = new NetworkInfoSerializer();
-
-    private NetworkInfoSerializer() {
-
-    }
-
-    @NonNull
-    public static NetworkInfoSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull NetworkInfo data) {
-        Map<String, QVariant<Object>> map = new HashMap<>();
-        map.put("NetworkId", new QVariant<>("NetworkId", data.networkId()));
-        map.put("NetworkName", new QVariant<>(QMetaType.Type.QString, data.networkName()));
-        map.put("Identity", new QVariant<>("IdentityId", data.identity()));
-
-        map.put("CodecForServer", new QVariant<>(QMetaType.Type.QByteArray, data.codecForServer()));
-        map.put("CodecForEncoding", new QVariant<>(QMetaType.Type.QByteArray, data.codecForEncoding()));
-        map.put("CodecForDecoding", new QVariant<>(QMetaType.Type.QByteArray, data.codecForDecoding()));
-
-        map.put("ServerList", new QVariant<>(QMetaType.Type.QVariantList, data.serverList()));
-        map.put("UseRandomServer", new QVariant<>(QMetaType.Type.Bool, data.useRandomServer()));
-
-        map.put("Perform", new QVariant<>(QMetaType.Type.QStringList, data.perform()));
-
-        map.put("UseAutoIdentify", new QVariant<>(QMetaType.Type.Bool, data.useAutoIdentify()));
-        map.put("AutoIdentifyService", new QVariant<>(QMetaType.Type.QString, data.autoIdentifyService()));
-        map.put("AutoIdentifyPassword", new QVariant<>(QMetaType.Type.QString, data.autoIdentifyPassword()));
-
-        map.put("UseSasl", new QVariant<>(QMetaType.Type.Bool, data.useSasl()));
-        map.put("SaslAccount", new QVariant<>(QMetaType.Type.QString, data.saslAccount()));
-        map.put("SaslPassword", new QVariant<>(QMetaType.Type.QString, data.saslPassword()));
-
-        map.put("UseAutoReconnect", new QVariant<>(QMetaType.Type.Bool, data.useAutoReconnect()));
-        map.put("AutoReconnectInterval", new QVariant<>(QMetaType.Type.UInt, data.autoReconnectInterval()));
-        map.put("AutoReconnectRetries", new QVariant<>(QMetaType.Type.UShort, data.autoReconnectRetries()));
-        map.put("UnlimitedReconnectRetries", new QVariant<>(QMetaType.Type.Bool, data.unlimitedReconnectRetries()));
-        map.put("RejoinChannels", new QVariant<>(QMetaType.Type.Bool, data.rejoinChannels()));
-        return map;
-    }
-
-    @NonNull
-    @Override
-    public NetworkInfo fromDatastream(@NonNull Map<String, QVariant> map) {
-        return fromLegacy(map);
-    }
-
-    @NonNull
-    @Override
-    public NetworkInfo fromLegacy(@NonNull Map<String, QVariant> map) {
-        return new NetworkInfo(
-                -1,
-                (String) map.get("networkName").data,
-                (int) map.get("identityId").data,
-
-                (String) map.get("codecForServer").data,
-                (String) map.get("codecForEncoding").data,
-                (String) map.get("codecForDecoding").data,
-
-                (List<NetworkServer>) map.get("ServerList").data,
-                (boolean) map.get("useRandomServer").data,
-
-                (List<String>) map.get("perform").data,
-
-                (boolean) map.get("useAutoIdentify").data,
-                (String) map.get("autoIdentifyService").data,
-                (String) map.get("autoIdentifyPassword").data,
-
-                (boolean) map.get("useSasl").data,
-                (String) map.get("saslAccount").data,
-                (String) map.get("saslPassword").data,
-
-                (boolean) map.get("useAutoReconnect").data,
-                (int) map.get("autoReconnectInterval").data,
-                (short) map.get("autoReconnectRetries").data,
-                (boolean) map.get("unlimitedReconnectRetries").data,
-                (boolean) map.get("rejoinChannels").data
-        );
-    }
-
-    @Nullable
-    @Override
-    public NetworkInfo from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java b/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
deleted file mode 100644
index ed67d9c89..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/serializers/NetworkSerializer.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.serializers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.joda.time.DateTime;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.functions.types.PackedFunction;
-import de.kuschku.libquassel.functions.types.SerializedFunction;
-import de.kuschku.libquassel.functions.types.UnpackedFunction;
-import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
-import de.kuschku.libquassel.objects.serializers.StringObjectMapSerializer;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.impl.IrcChannel;
-import de.kuschku.libquassel.syncables.types.impl.IrcUser;
-import de.kuschku.libquassel.syncables.types.impl.Network;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-
-@SuppressWarnings({"unchecked", "ConstantConditions"})
-public class NetworkSerializer implements ObjectSerializer<Network> {
-    public static final DateTime UNIX_EPOCH = new DateTime(0L);
-    @NonNull
-    private static final NetworkSerializer serializer = new NetworkSerializer();
-
-    private NetworkSerializer() {
-    }
-
-    @NonNull
-    public static NetworkSerializer get() {
-        return serializer;
-    }
-
-    @Nullable
-    @Override
-    public Map<String, QVariant<Object>> toVariantMap(@NonNull Network data) {
-        // FIXME: IMPLEMENT
-        throw new IllegalArgumentException();
-    }
-
-    @NonNull
-    @Override
-    public Network fromDatastream(@NonNull Map<String, QVariant> map) {
-        final Map<String, QVariant<Map<String, QVariant<List>>>> usersAndChannels = ((Map<String, QVariant<Map<String, QVariant<List>>>>) map.get("IrcUsersAndChannels").data);
-
-        return new Network(
-                extractChannels(QVariant.orNull(usersAndChannels.get("Channels"))),
-                extractUsers(QVariant.orNull(usersAndChannels.get("Users"))),
-                (List<NetworkServer>) map.get("ServerList").data,
-                StringObjectMapSerializer.<String>get().fromLegacy((Map<String, QVariant>) map.get("Supports").data),
-                (int) map.get("connectionState").data,
-                (String) map.get("currentServer").data,
-                (boolean) map.get("isConnected").data,
-                (int) map.get("latency").data,
-                (String) map.get("myNick").data,
-                NetworkInfoSerializer.get().fromLegacy(map)
-        );
-    }
-
-    @NonNull
-    private List<QIrcUser> extractUsers(@Nullable Map<String, QVariant<List>> users) {
-        final List<QIrcUser> ircUsers;
-        if (users == null)
-            ircUsers = new ArrayList<>();
-        else {
-            final int max = users.get("server").data.size();
-            ircUsers = new ArrayList<>(max);
-            for (int i = 0; i < max; i++) {
-                ircUsers.add(new IrcUser(
-                        getAtPosition(users, "server", i, ""),
-                        getAtPosition(users, "ircOperator", i, ""),
-                        getAtPosition(users, "away", i, false),
-                        getAtPosition(users, "lastAwayMessage", i, 0),
-                        getAtPosition(users, "idleTime", i, UNIX_EPOCH),
-                        getAtPosition(users, "whoisServiceReply", i, ""),
-                        getAtPosition(users, "suserHost", i, ""),
-                        getAtPosition(users, "nick", i, ""),
-                        getAtPosition(users, "realName", i, ""),
-                        getAtPosition(users, "account", i, ""),
-                        getAtPosition(users, "awayMessage", i, ""),
-                        getAtPosition(users, "loginTime", i, UNIX_EPOCH),
-                        getAtPosition(users, "encrypted", i, false),
-                        getAtPosition(users, "channels", i, Collections.emptyList()),
-                        getAtPosition(users, "host", i, ""),
-                        getAtPosition(users, "userModes", i, ""),
-                        getAtPosition(users, "user", i, "")
-                ));
-            }
-        }
-        return ircUsers;
-    }
-
-    private <T> T getAtPosition(@NonNull Map<String, QVariant<List>> users, String field, int index, T or) {
-        if (users.containsKey(field) && users.get(field) != null && users.get(field).data != null && users.get(field).data.size() > index)
-            return (T) users.get(field).data.get(index);
-        else
-            return or;
-    }
-
-    @NonNull
-    private List<QIrcChannel> extractChannels(@Nullable Map<String, QVariant<List>> channels) {
-        final List<QIrcChannel> ircChannels;
-        if (channels == null)
-            ircChannels = new ArrayList<>();
-        else {
-            final int max = channels.get("name").data.size();
-            ircChannels = new ArrayList<>(max);
-            for (int i = 0; i < max; i++) {
-                ircChannels.add(new IrcChannel(
-                        (String) channels.get("name").data.get(i),
-                        (String) channels.get("topic").data.get(i),
-                        (String) channels.get("password").data.get(i),
-                        StringObjectMapSerializer.<String>get().fromLegacy((Map<String, QVariant>) channels.get("UserModes").data.get(i)),
-                        StringObjectMapSerializer.get().fromLegacy((Map<String, QVariant>) channels.get("ChanModes").data.get(i)),
-                        (boolean) channels.get("encrypted").data.get(i)
-                ));
-            }
-        }
-        return ircChannels;
-    }
-
-    @NonNull
-    @Override
-    public Network fromLegacy(@NonNull Map<String, QVariant> map) {
-        final Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>> usersAndChannels = ((QVariant<Map<String, QVariant<Map<String, QVariant<Map<String, QVariant>>>>>>) map.get("IrcUsersAndChannels")).data;
-        final Map<String, QVariant<Map<String, QVariant>>> wrappedChannels = usersAndChannels.get("channels").data;
-        final Map<String, QVariant<Map<String, QVariant>>> wrappedUsers = usersAndChannels.get("users").data;
-        final List<QIrcChannel> channels = new ArrayList<>(wrappedChannels.size());
-        for (Map.Entry<String, QVariant<Map<String, QVariant>>> entry : wrappedChannels.entrySet()) {
-            final QIrcChannel ircChannel = IrcChannelSerializer.get().fromLegacy(entry.getValue().data);
-            channels.add(ircChannel);
-        }
-        final List<QIrcUser> users = new ArrayList<>(wrappedUsers.size());
-        for (Map.Entry<String, QVariant<Map<String, QVariant>>> entry : wrappedUsers.entrySet()) {
-            final QIrcUser ircUser = IrcUserSerializer.get().fromLegacy(entry.getValue().data);
-            users.add(ircUser);
-        }
-        final Map<String, String> supports = StringObjectMapSerializer.<String>get().fromLegacy((Map<String, QVariant>) map.get("Supports").data);
-        return new Network(
-                channels,
-                users,
-                supports,
-                (int) map.get("connectionState").data,
-                (String) map.get("currentServer").data,
-                (boolean) map.get("isConnected").data,
-                (int) map.get("latency").data,
-                (String) map.get("myNick").data,
-                NetworkInfoSerializer.get().fromLegacy(map)
-        );
-    }
-
-    @Override
-    public Network from(@NonNull SerializedFunction function) {
-        if (function instanceof PackedFunction)
-            return fromLegacy(((PackedFunction) function).getData());
-        else if (function instanceof UnpackedFunction)
-            return fromDatastream(((UnpackedFunction) function).getData());
-        else throw new IllegalArgumentException();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java
deleted file mode 100644
index 1f3b3f625..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/SyncableObject.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types;
-
-import android.support.annotation.CallSuper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.interfaces.QSyncableObject;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.observables.callbacks.GeneralObservable;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertTrue;
-
-public abstract class SyncableObject<T> extends GeneralObservable<T> implements QSyncableObject<T> {
-    @Nullable
-    protected BusProvider provider;
-    protected Client client;
-    protected boolean initialized = false;
-    @Nullable
-    private String objectName;
-
-    public void syncVar(@NonNull String methodName, @NonNull Object... params) {
-        sync(methodName, params);
-    }
-
-    public void sync(@NonNull String methodName, @NonNull Object[] params) {
-        assertTrue(initialized);
-        assertNotNull(provider);
-
-        provider.dispatch(new SyncFunction<>(getClassName(), getObjectName(), methodName, toVariantList(params)));
-    }
-
-    public void sync(@NonNull String methodName, @NonNull String[] strings, @NonNull Object[] objects) {
-        assertTrue(initialized);
-        assertNotNull(provider);
-        assertEquals(strings.length, objects.length);
-
-        List<QVariant> params = new ArrayList<>();
-        for (int i = 0; i < strings.length; i++) {
-            params.add(new QVariant<>(strings[i], objects[i]));
-        }
-
-        provider.dispatch(new SyncFunction<>(getClassName(), getObjectName(), methodName, params));
-    }
-
-    @NonNull
-    public String getClassName() {
-        return getClass().getSimpleName();
-    }
-
-    @Nullable
-    public String getObjectName() {
-        return objectName;
-    }
-
-    public void setObjectName(@Nullable String objectName) {
-        this.objectName = objectName;
-    }
-
-    public boolean initialized() {
-        return initialized;
-    }
-
-    public void renameObject(@Nullable String objectName) {
-        if (!Objects.equals(this.objectName, (objectName)))
-            setObjectName(objectName);
-    }
-
-    public void smartRpcTyped(@NonNull String procedureName, @NonNull QVariant... params) {
-        rpcTyped("2" + procedureName, Arrays.asList(params));
-    }
-
-    public void smartRpc(@NonNull String procedureName, @NonNull Object... params) {
-        rpc("2" + procedureName, params);
-    }
-
-    public void rpcVar(@NonNull String procedureName, @NonNull Object... params) {
-        rpc(procedureName, params);
-    }
-
-    public void rpcTyped(@NonNull String procedureName, @NonNull List<QVariant> params) {
-        assertTrue(initialized);
-        assertNotNull(provider);
-
-        RpcCallFunction function = new RpcCallFunction(procedureName, params);
-        provider.dispatch(function);
-    }
-
-    public void rpc(@NonNull String procedureName, @NonNull Object[] params) {
-        rpcTyped(procedureName, toVariantList(params));
-    }
-
-    @NonNull
-    private List<QVariant> toVariantList(@NonNull Object[] params) {
-        List<QVariant> list = new ArrayList<>(params.length);
-        for (Object element : params) {
-            list.add(new QVariant<>(element));
-        }
-        return list;
-    }
-
-    @CallSuper
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        this.provider = provider;
-        this.objectName = objectName;
-        this.client = client;
-        this.initialized = true;
-    }
-
-    @SuppressWarnings("unchecked")
-    public void _update() {
-        notifyChanged((T) this);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AAliasManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AAliasManager.java
deleted file mode 100644
index 06fb6a67b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AAliasManager.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-
-public abstract class AAliasManager extends SyncableObject<QAliasManager> implements QAliasManager {
-    @Override
-    public void addAlias(String name, String expansion) {
-        _addAlias(name, expansion);
-        syncVar("addAlias", name, expansion);
-    }
-
-    @Override
-    public void requestUpdate(Map<String, QVariant<Object>> variantMap) {
-        syncVar("requestUpdate", variantMap);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABacklogManager.java
deleted file mode 100644
index 5a7e91dc0..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABacklogManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-
-public abstract class ABacklogManager extends SyncableObject<QBacklogManager> implements QBacklogManager {
-    static final String intName = QMetaType.Type.Int.getSerializableName();
-
-    @Override
-    public void requestBacklog(int id, int first, int last, int limit, int additional) {
-        _requestBacklog(id, first, last, limit, additional);
-        sync("requestBacklog", new String[]{"BufferId", "MsgId", "MsgId", intName, intName}, new Object[]{id, first, last, limit, additional});
-    }
-
-    @Override
-    public void receiveBacklog(int id, int first, int last, int limit, int additional, @NonNull List<Message> messages) {
-        _receiveBacklog(id, first, last, limit, additional, messages);
-        sync("receiveBacklog", new String[]{"BufferId", "MsgId", "MsgId", intName, intName}, new Object[]{id, first, last, limit, additional, messages});
-    }
-
-    @Override
-    public void requestBacklogAll(int first, int last, int limit, int additional) {
-        _requestBacklogAll(first, last, limit, additional);
-        sync("requestBacklogAll", new String[]{"MsgId", "MsgId", intName, intName}, new Object[]{first, last, limit, additional});
-    }
-
-    @Override
-    public void receiveBacklogAll(int first, int last, int limit, int additional, @NonNull List<Message> messages) {
-        _receiveBacklogAll(first, last, limit, additional, messages);
-        sync("receiveBacklogAll", new String[]{"MsgId", "MsgId", intName, intName}, new Object[]{first, last, limit, additional, messages});
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java
deleted file mode 100644
index e2f2206d4..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferSyncer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer;
-
-public abstract class ABufferSyncer extends SyncableObject<QBufferSyncer> implements QBufferSyncer {
-    @Override
-    public void requestSetLastSeenMsg(int buffer, int msgId) {
-        _requestSetLastSeenMsg(buffer, msgId);
-        sync("requestSetLastSeenMsg", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId});
-    }
-
-    @Override
-    public void requestSetMarkerLine(int buffer, int msgId) {
-        _requestSetMarkerLine(buffer, msgId);
-        sync("requestSetMarkerLine", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId});
-    }
-
-    @Override
-    public void requestRemoveBuffer(int buffer) {
-        _requestRemoveBuffer(buffer);
-        sync("requestRemoveBuffer", new String[]{"BufferId"}, new Object[]{buffer});
-    }
-
-    @Override
-    public void removeBuffer(int buffer) {
-        _removeBuffer(buffer);
-        requestRemoveBuffer(buffer);
-    }
-
-    @Override
-    public void requestRenameBuffer(int buffer, String newName) {
-        _requestRenameBuffer(buffer, newName);
-        sync("requestRenameBuffer", new String[]{"BufferId", "QString"}, new Object[]{buffer, newName});
-    }
-
-    @Override
-    public void renameBuffer(int buffer, String newName) {
-        _renameBuffer(buffer, newName);
-        requestRenameBuffer(buffer, newName);
-    }
-
-    @Override
-    public void requestMergeBuffersPermanently(int buffer1, int buffer2) {
-        _requestMergeBuffersPermanently(buffer1, buffer2);
-        sync("requestMergeBuffersPermanently", new String[]{"BufferId", "BufferId"}, new Object[]{buffer1, buffer2});
-    }
-
-    @Override
-    public void mergeBuffersPermanently(int buffer1, int buffer2) {
-        _mergeBuffersPermanently(buffer1, buffer2);
-        requestMergeBuffersPermanently(buffer1, buffer2);
-    }
-
-    @Override
-    public void requestPurgeBufferIds() {
-        _requestPurgeBufferIds();
-        syncVar("requestPurgeBufferIds");
-    }
-
-    @Override
-    public void requestMarkBufferAsRead(int buffer) {
-        _requestMarkBufferAsRead(buffer);
-        sync("requestMarkBufferAsRead", new String[]{"BufferId"}, new Object[]{buffer});
-    }
-
-    @Override
-    public void markBufferAsRead(int buffer) {
-        _markBufferAsRead(buffer);
-        sync("markBufferAsRead", new String[]{"BufferId"}, new Object[]{buffer});
-    }
-
-    @Override
-    public void setMarkerLine(int buffer, int msgId) {
-        _setMarkerLine(buffer, msgId);
-        sync("setMarkerLine", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId});
-    }
-
-    @Override
-    public void setLastSeenMsg(int buffer, int msgId) {
-        _setLastSeenMsg(buffer, msgId);
-        sync("setLastSeenMsg", new String[]{"BufferId", "MsgId"}, new Object[]{buffer, msgId});
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
deleted file mode 100644
index 0eff25fce..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewConfig.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-
-public abstract class ABufferViewConfig extends SyncableObject<QBufferViewConfig> implements QBufferViewConfig {
-    static final String intName = QMetaType.Type.Int.getSerializableName();
-
-    @Override
-    public void setNetworkId(int networkId) {
-        _setNetworkId(networkId);
-        syncVar("setNetworkId", networkId);
-    }
-
-    @Override
-    public void setAddNewBuffersAutomatically(boolean addNewBuffersAutomatically) {
-        _setAddNewBuffersAutomatically(addNewBuffersAutomatically);
-        syncVar("setAddNewBuffersAutomatically", addNewBuffersAutomatically);
-    }
-
-    @Override
-    public void setSortAlphabetically(boolean sortAlphabetically) {
-        _setSortAlphabetically(sortAlphabetically);
-        syncVar("setSortAlphabetically", sortAlphabetically);
-    }
-
-    @Override
-    public void setDisableDecoration(boolean disableDecoration) {
-        _setDisableDecoration(disableDecoration);
-        syncVar("setDisableDecoration", disableDecoration);
-    }
-
-    @Override
-    public void setAllowedBufferTypes(int bufferTypes) {
-        _setAllowedBufferTypes(bufferTypes);
-        syncVar("setAllowedBufferTypes", bufferTypes);
-    }
-
-    @Override
-    public void setMinimumActivity(MinimumActivity activity) {
-        _setMinimumActivity(activity);
-        syncVar("setMinimumActivity", activity.id);
-    }
-
-    @Override
-    public void setHideInactiveBuffers(boolean hideInactiveBuffers) {
-        _setHideInactiveBuffers(hideInactiveBuffers);
-        syncVar("setHideInactiveBuffers", hideInactiveBuffers);
-    }
-
-    @Override
-    public void setHideInactiveNetworks(boolean hideInactiveNetworks) {
-        _setHideInactiveNetworks(hideInactiveNetworks);
-        syncVar("setHideInactiveNetworks", hideInactiveNetworks);
-    }
-
-    @Override
-    public void setBufferViewName(String bufferViewName) {
-        _setBufferViewName(bufferViewName);
-        requestSetBufferViewName(bufferViewName);
-    }
-
-    @Override
-    public void requestSetBufferViewName(String bufferViewName) {
-        _requestSetBufferViewName(bufferViewName);
-        syncVar("requestSetBufferViewName", bufferViewName);
-
-    }
-
-    @Override
-    public void addBuffer(int bufferId, int pos) {
-        _addBuffer(bufferId, pos);
-        requestAddBuffer(bufferId, pos);
-    }
-
-    @Override
-    public void requestAddBuffer(int bufferId, int pos) {
-        _requestAddBuffer(bufferId, pos);
-        sync("requestAddBuffer", new String[]{"BufferId", intName}, new Object[]{bufferId, pos});
-    }
-
-    @Override
-    public void moveBuffer(int bufferId, int pos) {
-        _moveBuffer(bufferId, pos);
-        requestMoveBuffer(bufferId, pos);
-    }
-
-    @Override
-    public void requestMoveBuffer(int bufferId, int pos) {
-        _requestMoveBuffer(bufferId, pos);
-        sync("requestMoveBuffer", new String[]{"BufferId", intName}, new Object[]{bufferId, pos});
-    }
-
-    @Override
-    public void removeBuffer(int bufferId) {
-        _removeBuffer(bufferId);
-        requestRemoveBuffer(bufferId);
-    }
-
-    @Override
-    public void requestRemoveBuffer(int bufferId) {
-        _requestRemoveBuffer(bufferId);
-        sync("requestRemoveBuffer", new String[]{"BufferId"}, new Object[]{bufferId});
-    }
-
-    @Override
-    public void removeBufferPermanently(int bufferId) {
-        _removeBufferPermanently(bufferId);
-        sync("removeBufferPermanently", new String[]{"BufferId"}, new Object[]{bufferId});
-    }
-
-    @Override
-    public void requestRemoveBufferPermanently(int bufferId) {
-        _requestRemoveBufferPermanently(bufferId);
-        sync("requestRemoveBufferPermanently", new String[]{"BufferId"}, new Object[]{bufferId});
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewManager.java
deleted file mode 100644
index e21c23048..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ABufferViewManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-
-public abstract class ABufferViewManager extends SyncableObject<QBufferViewManager> implements QBufferViewManager {
-    @Override
-    public void createBufferView(QBufferViewConfig bufferView) {
-        //_addBufferViewConfig(bufferView);
-        syncVar("requestCreateBufferView", bufferView);
-    }
-
-    @Override
-    public void createBufferViews(List<QBufferViewConfig> bufferViews) {
-        //for (QBufferViewConfig config : bufferViews)
-//            _addBufferViewConfig(config);
-        syncVar("requestCreateBufferViews", bufferViews);
-    }
-
-    @Override
-    public void deleteBufferView(int bufferViewId) {
-//        _deleteBufferViewConfig(bufferViewId);
-        syncVar("requestDeleteBufferView", bufferViewId);
-    }
-
-    @Override
-    public void deleteBufferViews(List<Integer> bufferViews) {
-//        for (int config : bufferViews)
-//            _deleteBufferViewConfig(config);
-        syncVar("requestDeleteBufferViews", bufferViews);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ACoreInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ACoreInfo.java
deleted file mode 100644
index d662d515f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ACoreInfo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QCoreInfo;
-
-public abstract class ACoreInfo extends SyncableObject<QCoreInfo> implements QCoreInfo {
-    @Override
-    public void setCoreData(Map<String, QVariant> coreData) {
-        _setCoreData(coreData);
-        syncVar("setCoreData", coreData);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIdentity.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIdentity.java
deleted file mode 100644
index 2a2897279..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIdentity.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import java.util.List;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.IdentitySerializer;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-public abstract class AIdentity extends SyncableObject<QIdentity> implements QIdentity {
-    @Override
-    public void setId(int id) {
-        _setId(id);
-        syncVar("setId", id);
-    }
-
-    @Override
-    public void setIdentityName(String name) {
-        _setIdentityName(name);
-        syncVar("setIdentityName", name);
-    }
-
-    @Override
-    public void setRealName(String realName) {
-        _setRealName(realName);
-        syncVar("setRealName", realName);
-    }
-
-    @Override
-    public void setNicks(List<String> nicks) {
-        _setNicks(nicks);
-        syncVar("setNicks", nicks);
-    }
-
-    @Override
-    public void setAwayNick(String awayNick) {
-        _setAwayNick(awayNick);
-        syncVar("setAwayNick", awayNick);
-    }
-
-    @Override
-    public void setAwayNickEnabled(boolean enabled) {
-        _setAwayNickEnabled(enabled);
-        syncVar("setAwayNickEnabled", enabled);
-    }
-
-    @Override
-    public void setAwayReason(String awayReason) {
-        _setAwayReason(awayReason);
-        syncVar("setAwayReason", awayReason);
-
-    }
-
-    @Override
-    public void setAwayReasonEnabled(boolean enabled) {
-        _setAwayReasonEnabled(enabled);
-        syncVar("setAwayReasonEnabled", enabled);
-    }
-
-    @Override
-    public void setAutoAwayEnabled(boolean enabled) {
-        _setAutoAwayEnabled(enabled);
-        syncVar("setAutoAwayEnabled", enabled);
-    }
-
-    @Override
-    public void setAutoAwayTime(int time) {
-        _setAutoAwayTime(time);
-        syncVar("setAutoAwayTime", time);
-    }
-
-    @Override
-    public void setAutoAwayReason(String reason) {
-        _setAutoAwayReason(reason);
-        syncVar("setAutoAwayReason", reason);
-    }
-
-    @Override
-    public void setAutoAwayReasonEnabled(boolean enabled) {
-        _setAutoAwayReasonEnabled(enabled);
-        syncVar("setAutoAwayReasonEnabled", enabled);
-    }
-
-    @Override
-    public void setDetachAwayEnabled(boolean enabled) {
-        _setDetachAwayEnabled(enabled);
-        syncVar("setDetachAwayEnabled", enabled);
-    }
-
-    @Override
-    public void setDetachAwayReason(String reason) {
-        _setDetachAwayReason(reason);
-        syncVar("setDetachAwayReason", reason);
-    }
-
-    @Override
-    public void setDetachAwayReasonEnabled(boolean enabled) {
-        _setDetachAwayReasonEnabled(enabled);
-        syncVar("setDetachAwayReasonEnabled", enabled);
-    }
-
-    @Override
-    public void setIdent(String ident) {
-        _setIdent(ident);
-        syncVar("setIdent", ident);
-    }
-
-    @Override
-    public void setKickReason(String reason) {
-        _setKickReason(reason);
-        syncVar("setKickReason", reason);
-    }
-
-    @Override
-    public void setPartReason(String reason) {
-        _setPartReason(reason);
-        syncVar("setPartReason", reason);
-    }
-
-    @Override
-    public void setQuitReason(String reason) {
-        _setQuitReason(reason);
-        syncVar("setQuitReason", reason);
-
-    }
-
-    @Override
-    public void copyFrom(QIdentity other) {
-        _copyFrom(other);
-        syncVar("copyFrom", other);
-    }
-
-    @Override
-    public void setSslKey(String encoded) {
-        _setSslKey(encoded);
-        syncVar("setSslKey", encoded);
-    }
-
-    @Override
-    public void setSslCert(String encoded) {
-        _setSslCert(encoded);
-        syncVar("setSslCert", encoded);
-    }
-
-    @Override
-    public void update(Identity identity) {
-        _copyFrom(identity);
-        syncVar("update", new QVariant<>("Identity", IdentitySerializer.get().toVariantMap(identity)));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIgnoreListManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIgnoreListManager.java
deleted file mode 100644
index 0219ca647..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIgnoreListManager.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public abstract class AIgnoreListManager extends SyncableObject<QIgnoreListManager> implements QIgnoreListManager {
-    @Override
-    public void removeIgnoreListItem(String ignoreRule) {
-        _removeIgnoreListItem(ignoreRule);
-        syncVar("requestRemoveIgnoreListItem", ignoreRule);
-    }
-
-    @Override
-    public void toggleIgnoreRule(String ignoreRule) {
-        _toggleIgnoreRule(ignoreRule);
-        syncVar("requestToggleIgnoreRule", ignoreRule);
-    }
-
-    @Override
-    public void addIgnoreListItem(int type, String ignoreRule, boolean isRegEx, int strictness, int scope, String scopeRule, boolean isActive) {
-        _addIgnoreListItem(type, ignoreRule, isRegEx, strictness, scope, scopeRule, isActive);
-        syncVar("requestAddIgnoreListItem", type, ignoreRule, isRegEx, strictness, scope, scopeRule, isActive);
-    }
-
-    @Override
-    public void addIgnoreListItem(@NonNull IgnoreType type, String ignoreRule, boolean isRegEx, @NonNull StrictnessType strictness, @NonNull ScopeType scope, String scopeRule, boolean isActive) {
-        addIgnoreListItem(type.value, ignoreRule, isRegEx, strictness.value, scope.value, scopeRule, isActive);
-    }
-
-    @Override
-    public boolean matches(Message message, QNetwork network) {
-        assertNotNull(network);
-        return match(message.content, message.sender, message.type, network.networkName(), message.bufferInfo.name) != StrictnessType.UnmatchedStrictness;
-    }
-
-    @Override
-    public void requestUpdate(Map<String, QVariant<Object>> variantMap) {
-        syncVar("requestUpdate", variantMap);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcChannel.java
deleted file mode 100644
index 80d87586c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcChannel.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-
-public abstract class AIrcChannel extends SyncableObject<QIrcChannel> implements QIrcChannel {
-    @Override
-    public void setTopic(String topic) {
-        _setTopic(topic);
-        syncVar("setTopic", topic);
-    }
-
-    @Override
-    public void setPassword(String password) {
-        _setPassword(password);
-        syncVar("setPassword", password);
-    }
-
-    @Override
-    public void setEncrypted(boolean encrypted) {
-        _setEncrypted(encrypted);
-        syncVar("setEncrypted", encrypted);
-    }
-
-    @Override
-    public void joinIrcUsers(List<String> nicks, List<String> modes) {
-        _joinIrcUsers(nicks, modes);
-        syncVar("joinIrcUsers", nicks, modes);
-    }
-
-    @Override
-    public void joinIrcUser(@NonNull QIrcUser ircuser) {
-        _joinIrcUser(ircuser);
-        syncVar("joinIrcUser", ircuser.nick());
-    }
-
-    @Override
-    public void part(@NonNull QIrcUser ircuser) {
-        _part(ircuser);
-        syncVar("part", ircuser.nick());
-    }
-
-    @Override
-    public void part(String nick) {
-        _part(nick);
-        syncVar("part", nick);
-    }
-
-    @Override
-    public void setUserModes(@NonNull QIrcUser ircuser, String modes) {
-        _setUserModes(ircuser, modes);
-        syncVar("setUserModes", ircuser.nick(), modes);
-    }
-
-    @Override
-    public void setUserModes(String nick, String modes) {
-        _setUserModes(nick, modes);
-        syncVar("setUserModes", nick, modes);
-    }
-
-    @Override
-    public void addUserMode(@NonNull QIrcUser ircuser, String mode) {
-        _addUserMode(ircuser, mode);
-        syncVar("addUserMode", ircuser.nick(), mode);
-    }
-
-    @Override
-    public void addUserMode(String nick, String mode) {
-        _addUserMode(nick, mode);
-        syncVar("addUserMode", nick, mode);
-    }
-
-    @Override
-    public void removeUserMode(@NonNull QIrcUser ircuser, String mode) {
-        _removeUserMode(ircuser, mode);
-        syncVar("removeUserMode", ircuser.nick(), mode);
-    }
-
-    @Override
-    public void removeUserMode(String nick, String mode) {
-        _removeUserMode(nick, mode);
-        syncVar("removeUserMode", nick, mode);
-
-    }
-
-    @Override
-    public void addChannelMode(char mode, String value) {
-        _addChannelMode(mode, value);
-        syncVar("addChannelMode", mode, value);
-    }
-
-    @Override
-    public void removeChannelMode(char mode, String value) {
-        _removeChannelMode(mode, value);
-        syncVar("removeChannelMode", mode, value);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcUser.java
deleted file mode 100644
index 67cef0859..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/AIrcUser.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-
-public abstract class AIrcUser extends SyncableObject<QIrcUser> implements QIrcUser {
-    @Override
-    public void setUser(String user) {
-        _setUser(user);
-        syncVar("setUser", user);
-    }
-
-    @Override
-    public void setHost(String host) {
-        _setHost(host);
-        syncVar("setHost", host);
-    }
-
-    @Override
-    public void setNick(String nick) {
-        _setNick(nick);
-        syncVar("setNick", nick);
-    }
-
-    @Override
-    public void setRealName(String realName) {
-        _setRealName(realName);
-        syncVar("setRealName", realName);
-    }
-
-    @Override
-    public void setAccount(String account) {
-        _setAccount(account);
-        syncVar("setAccount", account);
-    }
-
-    @Override
-    public void setAway(boolean away) {
-        _setAway(away);
-        syncVar("setAway", away);
-    }
-
-    @Override
-    public void setAwayMessage(String awayMessage) {
-        _setAwayMessage(awayMessage);
-        syncVar("setAwayMessage", awayMessage);
-    }
-
-    @Override
-    public void setIdleTime(DateTime idleTime) {
-        _setIdleTime(idleTime);
-        syncVar("setIdleTime", idleTime);
-    }
-
-    @Override
-    public void setLoginTime(DateTime loginTime) {
-        _setLoginTime(loginTime);
-        syncVar("setLoginTime", loginTime);
-    }
-
-    @Override
-    public void setServer(String server) {
-        _setServer(server);
-        syncVar("setServer", server);
-    }
-
-    @Override
-    public void setIrcOperator(String ircOperator) {
-        _setIrcOperator(ircOperator);
-        syncVar("setIrcOperator", ircOperator);
-    }
-
-    @Override
-    public void setLastAwayMessage(int lastAwayMessage) {
-        _setLastAwayMessage(lastAwayMessage);
-        syncVar("setLastAwayMessage", lastAwayMessage);
-    }
-
-    @Override
-    public void setWhoisServiceReply(String whoisServiceReply) {
-        _setWhoisServiceReply(whoisServiceReply);
-        syncVar("setWhoisServiceReply", whoisServiceReply);
-    }
-
-    @Override
-    public void setSuserHost(String suserHost) {
-        _setSuserHost(suserHost);
-        syncVar("setSuserHost", suserHost);
-    }
-
-    @Override
-    public void setEncrypted(boolean encrypted) {
-        _setEncrypted(encrypted);
-        syncVar("setEncrypted", encrypted);
-    }
-
-    @Override
-    public void updateHostmask(String mask) {
-        _updateHostmask(mask);
-        syncVar("updateHostmask", mask);
-    }
-
-    @Override
-    public void setUserModes(String modes) {
-        _setUserModes(modes);
-        syncVar("setUserModes", modes);
-    }
-
-    @Override
-    public void joinChannel(@NonNull QIrcChannel channel) {
-        _joinChannel(channel);
-        syncVar("joinChannel", channel.name());
-    }
-
-    @Override
-    public void joinChannel(@NonNull QIrcChannel channel, boolean skip_channel_join) {
-        _joinChannel(channel, skip_channel_join);
-        syncVar("joinChannel", channel.name(), skip_channel_join);
-    }
-
-    @Override
-    public void joinChannel(String channelname) {
-        _joinChannel(channelname);
-        syncVar("joinChannel", channelname);
-    }
-
-    @Override
-    public void partChannel(@NonNull QIrcChannel channel) {
-        _partChannel(channel);
-        syncVar("partChannel", channel.name());
-    }
-
-    @Override
-    public void partChannel(String channelname) {
-        _partChannel(channelname);
-        syncVar("partChannel", channelname);
-    }
-
-    @Override
-    public void quit() {
-        _quit();
-        syncVar("quit");
-    }
-
-    @Override
-    public void addUserModes(String modes) {
-        _addUserModes(modes);
-        syncVar("addUserModes", modes);
-    }
-
-    @Override
-    public void removeUserModes(String modes) {
-        _removeUserModes(modes);
-        syncVar("removeUserModes", modes);
-    }
-
-    @Override
-    public void partChannel(@NonNull QIrcChannel channel, boolean skip_channel_part) {
-        _partChannel(channel, skip_channel_part);
-        syncVar("partChannel", channel.name(), skip_channel_part);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetwork.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetwork.java
deleted file mode 100644
index 0e75c5e03..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetwork.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-
-public abstract class ANetwork extends SyncableObject<QNetwork> implements QNetwork {
-    @Override
-    public void setNetworkName(String networkName) {
-        _setNetworkName(networkName);
-        syncVar("setNetworkName", networkName);
-    }
-
-    @Override
-    public void setCurrentServer(String currentServer) {
-        _setCurrentServer(currentServer);
-        syncVar("setCurrentServer", currentServer);
-    }
-
-    @Override
-    public void setConnected(boolean isConnected) {
-        _setConnected(isConnected);
-        syncVar("setConnected", isConnected);
-    }
-
-    @Override
-    public void setConnectionState(int state) {
-        _setConnectionState(state);
-        syncVar("setConnectionState", state);
-    }
-
-    @Override
-    public void setMyNick(String mynick) {
-        _setMyNick(mynick);
-        syncVar("setMyNick", mynick);
-    }
-
-    @Override
-    public void setLatency(int latency) {
-        _setLatency(latency);
-        syncVar("setLatency", latency);
-    }
-
-    @Override
-    public void setIdentity(int identityId) {
-        _setIdentity(identityId);
-        syncVar("setIdentity", identityId);
-    }
-
-    @Override
-    public void setServerList(List<NetworkServer> serverList) {
-        _setServerList(serverList);
-        syncVar("setServerList", serverList);
-    }
-
-    @Override
-    public void setUseRandomServer(boolean useRandomServer) {
-        _setUseRandomServer(useRandomServer);
-        syncVar("setUseRandomServer", useRandomServer);
-    }
-
-    @Override
-    public void setPerform(List<String> performs) {
-        _setPerform(performs);
-        syncVar("setPerform", performs);
-    }
-
-    @Override
-    public void setUseAutoIdentify(boolean useAutoIdentify) {
-        _setUseAutoIdentify(useAutoIdentify);
-        syncVar("setUseAutoIdentify", useAutoIdentify);
-    }
-
-    @Override
-    public void setAutoIdentifyService(String autoIdentifyService) {
-        _setAutoIdentifyService(autoIdentifyService);
-        syncVar("setAutoIdentifyService", autoIdentifyService);
-    }
-
-    @Override
-    public void setAutoIdentifyPassword(String autoIdentifyPassword) {
-        _setAutoIdentifyPassword(autoIdentifyPassword);
-        syncVar("setAutoIdentifyPassword", autoIdentifyPassword);
-    }
-
-    @Override
-    public void setUseSasl(boolean useSasl) {
-        _setUseSasl(useSasl);
-        syncVar("setUseSasl", useSasl);
-    }
-
-    @Override
-    public void setSaslAccount(String saslAccount) {
-        _setSaslAccount(saslAccount);
-        syncVar("setSaslAccount", saslAccount);
-    }
-
-    @Override
-    public void setSaslPassword(String saslPassword) {
-        _setSaslPassword(saslPassword);
-        syncVar("setSaslPassword", saslPassword);
-    }
-
-    @Override
-    public void setUseAutoReconnect(boolean useAutoReconnect) {
-        _setUseAutoReconnect(useAutoReconnect);
-        syncVar("setUseAutoReconnect", useAutoReconnect);
-    }
-
-    @Override
-    public void setAutoReconnectInterval(int autoReconnectInterval) {
-        _setAutoReconnectInterval(autoReconnectInterval);
-        syncVar("setAutoReconnectInterval", autoReconnectInterval);
-    }
-
-    @Override
-    public void setAutoReconnectRetries(short autoReconnectRetries) {
-        _setAutoReconnectRetries(autoReconnectRetries);
-        syncVar("setAutoReconnectRetries", autoReconnectRetries);
-    }
-
-    @Override
-    public void setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries) {
-        _setUnlimitedReconnectRetries(unlimitedReconnectRetries);
-        syncVar("setUnlimitedReconnectRetries", unlimitedReconnectRetries);
-    }
-
-    @Override
-    public void setRejoinChannels(boolean rejoinChannels) {
-        _setRejoinChannels(rejoinChannels);
-        syncVar("setRejoinChannels", rejoinChannels);
-    }
-
-    @Override
-    public void setCodecForServer(String codecName) {
-        _setCodecForServer(codecName);
-        syncVar("setCodecForServer", codecName);
-    }
-
-    @Override
-    public void setCodecForEncoding(String codecName) {
-        _setCodecForEncoding(codecName);
-        syncVar("setCodecForEncoding", codecName);
-    }
-
-    @Override
-    public void setCodecForDecoding(String codecName) {
-        _setCodecForDecoding(codecName);
-        syncVar("setCodecForDecoding", codecName);
-    }
-
-    @Override
-    public void addSupport(String param) {
-        _addSupport(param);
-        syncVar("addSupport", param);
-    }
-
-    @Override
-    public void addSupport(String param, String value) {
-        _addSupport(value);
-        syncVar("addSupport", value);
-    }
-
-    @Override
-    public void removeSupport(String param) {
-        _removeSupport(param);
-        syncVar("removeSupport", param);
-    }
-
-    @Override
-    public void addIrcUser(String hostmask) {
-        _addIrcUser(hostmask);
-        syncVar("addIrcUser", hostmask);
-    }
-
-    @Override
-    public void addIrcChannel(String channel) {
-        _addIrcChannel(channel);
-        syncVar("addIrcChannel", channel);
-    }
-
-    @Override
-    public void connect() {
-        _connect();
-        syncVar("connect");
-    }
-
-    @Override
-    public void disconnect() {
-        _disconnect();
-        syncVar("disconnect");
-    }
-
-    @Override
-    public void setNetworkInfo(NetworkInfo info) {
-        syncVar("requestSetNetworkInfo", info);
-    }
-
-    @Override
-    public QIrcUser updateNickFromMask(String mask) {
-        QIrcUser result = _updateNickFromMask(mask);
-        syncVar("updateNickFromMask", mask);
-        return result;
-    }
-
-    @Override
-    public void setAutoAwayActive(boolean active) {
-        _setAutoAwayActive(active);
-        syncVar("setAutoAwayActive", active);
-    }
-
-    @Override
-    public void removeChansAndUsers() {
-        _removeChansAndUsers();
-        syncVar("removeChansAndUsers");
-    }
-
-    @Override
-    public void removeIrcChannel(@NonNull QIrcChannel ircChannel) {
-        _removeIrcChannel(ircChannel);
-        syncVar("removeIrcChannel", ircChannel.name());
-    }
-
-    @Override
-    public void removeIrcUser(@NonNull QIrcUser ircuser) {
-        _removeIrcUser(ircuser);
-        syncVar("removeIrcUser", ircuser.nick());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetworkConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetworkConfig.java
deleted file mode 100644
index a42d4723a..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/abstracts/ANetworkConfig.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.abstracts;
-
-import de.kuschku.libquassel.syncables.types.SyncableObject;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig;
-
-public abstract class ANetworkConfig extends SyncableObject<QNetworkConfig> implements QNetworkConfig {
-    @Override
-    public void setPingTimeoutEnabled(boolean pingTimeoutEnabled) {
-        _setPingTimeoutEnabled(pingTimeoutEnabled);
-        requestSetPingTimeoutEnabled(pingTimeoutEnabled);
-    }
-
-    @Override
-    public void requestSetPingTimeoutEnabled(boolean pingTimeoutEnabled) {
-        _requestSetPingTimeoutEnabled(pingTimeoutEnabled);
-        syncVar("requestSetPingTimeoutEnabled", pingTimeoutEnabled);
-    }
-
-    @Override
-    public void setPingInterval(int pingInterval) {
-        _setPingInterval(pingInterval);
-        requestSetPingInterval(pingInterval);
-    }
-
-    @Override
-    public void requestSetPingInterval(int pingInterval) {
-        _requestSetPingInterval(pingInterval);
-        syncVar("requestSetPingInterval", pingInterval);
-    }
-
-    @Override
-    public void setMaxPingCount(int maxPingCount) {
-        _setMaxPingCount(maxPingCount);
-        requestSetMaxPingCount(maxPingCount);
-    }
-
-    @Override
-    public void requestSetMaxPingCount(int maxPingCount) {
-        _requestSetMaxPingCount(maxPingCount);
-        syncVar("requestSetMaxPingCount", maxPingCount);
-    }
-
-    @Override
-    public void setAutoWhoEnabled(boolean autoWhoEnabled) {
-        _setAutoWhoEnabled(autoWhoEnabled);
-        requestSetAutoWhoEnabled(autoWhoEnabled);
-    }
-
-    @Override
-    public void requestSetAutoWhoEnabled(boolean autoWhoEnabled) {
-        _requestSetAutoWhoEnabled(autoWhoEnabled);
-        syncVar("requestSetAutoWhoEnabled", autoWhoEnabled);
-    }
-
-    @Override
-    public void setAutoWhoInterval(int autoWhoInterval) {
-        _setAutoWhoInterval(autoWhoInterval);
-        requestSetAutoWhoInterval(autoWhoInterval);
-    }
-
-    @Override
-    public void requestSetAutoWhoInterval(int autoWhoInterval) {
-        _requestSetAutoWhoInterval(autoWhoInterval);
-        syncVar("requestSetAutoWhoInterval", autoWhoInterval);
-    }
-
-    @Override
-    public void setAutoWhoNickLimit(int autoWhoNickLimit) {
-        _setAutoWhoNickLimit(autoWhoNickLimit);
-        requestSetAutoWhoNickLimit(autoWhoNickLimit);
-    }
-
-    @Override
-    public void requestSetAutoWhoNickLimit(int autoWhoNickLimit) {
-        _requestSetAutoWhoNickLimit(autoWhoNickLimit);
-        syncVar("requestSetAutoWhoNickLimit", autoWhoNickLimit);
-    }
-
-    @Override
-    public void setAutoWhoDelay(int autoWhoDelay) {
-        _setAutoWhoDelay(autoWhoDelay);
-        requestSetAutoWhoDelay(autoWhoDelay);
-    }
-
-    @Override
-    public void requestSetAutoWhoDelay(int autoWhoDelay) {
-        _requestSetAutoWhoDelay(autoWhoDelay);
-        syncVar("requestSetAutoWhoDelay", autoWhoDelay);
-    }
-
-    @Override
-    public void setStandardCtcp(boolean standardCtcp) {
-        _setStandardCtcp(standardCtcp);
-        requestSetStandardCtcp(standardCtcp);
-    }
-
-    @Override
-    public void requestSetStandardCtcp(boolean standardCtcp) {
-        _requestSetStandardCtcp(standardCtcp);
-        syncVar("requestSetStandardCtcp", standardCtcp);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java
deleted file mode 100644
index e5a4443ed..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/AliasManager.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-
-import com.google.common.base.Joiner;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.objects.types.Command;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.AliasManagerSerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.AAliasManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public class AliasManager extends AAliasManager {
-    @NonNull
-    private static final Alias[] DEFAULTS = new Alias[]{
-            new Alias("j", "/join $0"),
-            new Alias("ns", "/msg nickserv $0"),
-            new Alias("nickserv", "/msg nickserv $0"),
-            new Alias("cs", "/msg chanserv $0"),
-            new Alias("chanserv", "/msg chanserv $0"),
-            new Alias("hs", "/msg hostserv $0"),
-            new Alias("hostserv", "/msg hostserv $0"),
-            new Alias("wii", "/whois $0 $0"),
-            new Alias("back", "/quote away")
-    };
-
-    private Map<String, Alias> map = new HashMap<>();
-    private AndroidObservableSortedList<Alias> aliases = new AndroidObservableSortedList<>(Alias.class, new AndroidObservableSortedList.ItemComparator<Alias>() {
-        @Override
-        public int compare(Alias o1, Alias o2) {
-            return o1.name.compareTo(o2.name);
-        }
-
-        @Override
-        public boolean areContentsTheSame(Alias oldItem, Alias newItem) {
-            return Objects.equals(oldItem.name, newItem.name);
-        }
-
-        @Override
-        public boolean areItemsTheSame(Alias item1, Alias item2) {
-            return Objects.equals(item1.expansion, item2.expansion);
-        }
-    });
-
-    private Client client;
-
-    public AliasManager(@NonNull List<String> names, @NonNull List<String> extensions) {
-        for (int i = 0; i < names.size(); i++) {
-            _addAlias(names.get(i), extensions.get(i));
-        }
-    }
-
-    @NonNull
-    private static List<Command> expand(@NonNull String expansion, @NonNull BufferInfo info, @NonNull QNetwork network, @NonNull String args) {
-        List<Command> results = new LinkedList<>();
-
-        Pattern paramRange = Pattern.compile("\\$(\\d+)\\.\\.(\\d*)");
-        List<String> commands = Arrays.asList(expansion.split("; ?"));
-        List<String> params = Arrays.asList(args.split(" "));
-        List<String> expandedCommands = new LinkedList<>();
-
-        for (int i = 0; i < commands.size(); i++) {
-            String command = commands.get(i);
-
-            if (params.size() != 0) {
-                Matcher m = paramRange.matcher(command);
-                while (m.find()) {
-                    int start = Integer.valueOf(m.group(1));
-                    String replacement;
-                    // $1.. would be "arg1 and all following"
-                    if (m.group(2).isEmpty()) {
-                        replacement = Joiner.on(" ").join(params.subList(start, params.size()));
-                    } else {
-                        int end = Integer.valueOf(m.group(2));
-                        if (end < start) {
-                            replacement = "";
-                        } else {
-                            replacement = Joiner.on(" ").join(params.subList(start, end));
-                        }
-                    }
-                    command = command.substring(0, m.start()) + replacement + command.substring(m.end());
-                }
-            }
-
-            for (int j = params.size(); j > 0; j--) {
-                QIrcUser user = network.ircUser(params.get(j - 1));
-                String host = user == null ? "*" : user.host();
-                command = command.replaceAll(String.format(Locale.US, "$%d:hostname", j), host);
-                command = command.replaceAll(String.format(Locale.US, "$%d", j), params.get(j - 1));
-            }
-            command = command.replace("$0", args);
-            command = command.replace("$channelname", info.name != null ? info.name : "");
-            command = command.replace("$channel", info.name != null ? info.name : "");
-            command = command.replace("$currentnick", network.myNick());
-            command = command.replace("$nick", network.myNick());
-            command = command.replace("$network", network.networkName());
-            expandedCommands.add(command);
-        }
-        while (!expandedCommands.isEmpty()) {
-            String command;
-            if (expandedCommands.get(0).trim().toLowerCase(Locale.US).startsWith("/wait ")) {
-                command = Joiner.on("; ").join(expandedCommands);
-                expandedCommands.clear();
-            } else {
-                command = expandedCommands.get(0);
-            }
-            results.add(new Command(info, command));
-        }
-        return results;
-    }
-
-    @Override
-    public boolean contains(String name) {
-        return map.containsKey(name.toLowerCase(Locale.US));
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return aliases.isEmpty();
-    }
-
-    @Override
-    public int count() {
-        return aliases.size();
-    }
-
-    @Override
-    public AndroidObservableSortedList<Alias> aliases() {
-        return aliases;
-    }
-
-    @Override
-    public AndroidObservableSortedList<Alias> defaults() {
-        map.clear();
-        aliases.clear();
-        for (Alias alias : DEFAULTS) {
-            _addAlias(alias.name, alias.expansion);
-        }
-        return aliases;
-    }
-
-    @NonNull
-    @Override
-    public List<Command> processInput(@NonNull BufferInfo info, @NonNull String message) {
-        List<Command> list = new LinkedList<>();
-
-        // Escaped slash
-        if (message.startsWith("//")) {
-            // Unescape slash
-            list.add(new Command(info, message.substring(1)));
-        } else if (
-            // Not a command
-                !message.startsWith("/") ||
-                        // Or path
-                        (message.startsWith("/") && message.substring(1).split(" ")[0].contains("/"))) {
-            list.add(new Command(info, message));
-        } else {
-            int space = message.indexOf(" ");
-            String command;
-            String args;
-            if (space == -1) {
-                command = message;
-                args = "";
-            } else {
-                command = message.substring(1, space);
-                args = message.substring(space + 1);
-            }
-            Alias alias = map.get(command.toLowerCase(Locale.US));
-            QNetwork network = client.networkManager().network(info.networkId);
-            if (alias != null && network != null) {
-                list.addAll(expand(alias.expansion, info, network, args));
-            } else {
-                list.add(new Command(info, message));
-            }
-        }
-        return list;
-    }
-
-    @Override
-    public void _addAlias(String name, String expansion) {
-        Alias alias = new Alias(name, expansion);
-        _addAlias(alias);
-        _update();
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        this.client = client;
-        super.init(objectName, provider, client);
-        client.setAliasManager(this);
-        _update();
-    }
-
-    @Override
-    public void _update(@NonNull Map<String, QVariant> from) {
-        _update(AliasManagerSerializer.get().fromLegacy(from));
-    }
-
-    @Override
-    public void _update(@NonNull QAliasManager from) {
-        List<Alias> toRemove = new ArrayList<>();
-        for (Alias alias : aliases) {
-            if (!from.aliases().contains(alias))
-                toRemove.add(alias);
-        }
-        for (Alias alias : toRemove) {
-            _removeAlias(alias);
-        }
-        for (Alias alias : from.aliases()) {
-            if (!aliases.contains(alias)) {
-                _addAlias(alias);
-            }
-        }
-        _update();
-    }
-
-    @Override
-    public void _removeAlias(Alias alias) {
-        aliases.remove(alias);
-        map.remove(alias.name);
-    }
-
-    @Override
-    public Alias alias(String name) {
-        return map.get(name);
-    }
-
-
-    @Override
-    public void requestUpdate() {
-        requestUpdate(AliasManagerSerializer.get().toVariantMap(this));
-    }
-
-    @Override
-    public void _addAlias(Alias alias) {
-        aliases.add(alias);
-        map.put(alias.name, alias);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
deleted file mode 100644
index c8b713ae3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BacklogManager.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-
-import com.raizlabs.android.dbflow.sql.language.SQLite;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.BacklogInitEvent;
-import de.kuschku.libquassel.events.BacklogReceivedEvent;
-import de.kuschku.libquassel.events.BufferChangeEvent;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.localtypes.BacklogFilter;
-import de.kuschku.libquassel.localtypes.backlogstorage.BacklogStorage;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.message.Message_Table;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.ABacklogManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class BacklogManager extends ABacklogManager {
-    private final Client client;
-    private final BacklogStorage storage;
-    private final Set<Integer> initialized = new HashSet<>();
-    @NonNull
-    private final Set<Integer> waiting = new HashSet<>();
-    private int waitingMax = 0;
-    @IntRange(from = -1)
-    private int openBuffer = -1;
-
-    public BacklogManager(Client client, BacklogStorage storage) {
-        this.client = client;
-        this.storage = storage;
-    }
-
-    @Override
-    public void requestMoreBacklog(int bufferId, int amount) {
-        Message last;
-        if (!initialized.contains(bufferId) || null == (last = storage.getUnfiltered(bufferId).last()))
-            requestBacklogInitial(bufferId, amount);
-        else {
-            requestBacklog(bufferId, -1, last.id, amount, 0);
-        }
-    }
-
-    @Override
-    public void requestBacklogInitial(int id, int amount) {
-        if (waiting.contains(id) || initialized.contains(id))
-            return;
-
-        waiting.add(id);
-        waitingMax++;
-        Message lastMessageForBuffer = SQLite.select().from(Message.class).where(Message_Table.bufferInfo_id.eq(id)).orderBy(Message_Table.id, false).limit(1).querySingle();
-        if (lastMessageForBuffer != null)
-            requestBacklog(id, lastMessageForBuffer.id, -1, amount, 1);
-        else
-            requestBacklog(id, -1, -1, amount, 1);
-    }
-
-    @Override
-    public void _requestBacklog(int id, int first, int last, int limit, int additional) {
-        // Do nothing, we are on the client
-    }
-
-    @Override
-    public void _receiveBacklog(int id, int first, int last, int limit, int additional, @NonNull List<Message> messages) {
-        assertNotNull(provider);
-
-        Message lastMessageForBuffer = SQLite.select().from(Message.class).where(Message_Table.bufferInfo_id.eq(id)).orderBy(Message_Table.id, false).limit(1).querySingle();
-        if (lastMessageForBuffer != null && messages.size() > 0 && messages.get(0).id > lastMessageForBuffer.id)
-            storage.clear(id);
-        storage.insertMessages(id, messages);
-        if (messages.size() > 0 && !client.bufferManager().exists(messages.get(0).bufferInfo))
-            client.bufferManager().createBuffer(messages.get(0).bufferInfo);
-        provider.sendEvent(new BacklogReceivedEvent(id));
-        if (id == openBuffer && openBuffer != -1)
-            client.bufferSyncer().requestMarkBufferAsRead(openBuffer);
-        removeWaiting(id);
-    }
-
-    private void removeWaiting(int id) {
-        waiting.remove(id);
-        initialized.add(id);
-        checkWaiting();
-    }
-
-    public void checkWaiting() {
-        assertNotNull(provider);
-
-        if (client.connectionStatus() == ConnectionChangeEvent.Status.LOADING_BACKLOG) {
-            provider.event.postSticky(new BacklogInitEvent(waitingMax - waiting.size(), waitingMax));
-            if (waiting.isEmpty()) {
-                client.setConnectionStatus(ConnectionChangeEvent.Status.CONNECTED);
-            }
-        }
-    }
-
-    @Override
-    public void _requestBacklogAll(int first, int last, int limit, int additional) {
-        // Do nothing, we are on the client
-    }
-
-    @Override
-    public void _receiveBacklogAll(int first, int last, int limit, int additional, @NonNull List<Message> messages) {
-        assertNotNull(provider);
-
-        Set<Integer> buffers = new HashSet<>();
-        storage.insertMessages(messages);
-        for (Message message : messages) {
-            buffers.add(message.bufferInfo.id);
-        }
-        for (int id : buffers) {
-            provider.sendEvent(new BacklogReceivedEvent(id));
-            if (id == openBuffer && openBuffer != -1)
-                client.bufferSyncer().requestMarkBufferAsRead(openBuffer);
-            removeWaiting(id);
-            initialized.add(id);
-        }
-        checkWaiting();
-    }
-
-    @NonNull
-    @Override
-    public BacklogFilter filter(int id) {
-        return storage.getFilter(id);
-    }
-
-    @NonNull
-    @Override
-    public AndroidObservableComparableSortedList<Message> unfiltered(int id) {
-        return storage.getUnfiltered(id);
-    }
-
-    @NonNull
-    @Override
-    public AndroidObservableComparableSortedList<Message> filtered(int id) {
-        return storage.getFiltered(id);
-    }
-
-    @Override
-    public void setOpen(int openBuffer) {
-        assertNotNull(provider);
-
-        this.openBuffer = openBuffer;
-    }
-
-    @Override
-    public void open(int bufferId) {
-        assertNotNull(provider);
-
-        int oldBuffer = open();
-        if (oldBuffer != bufferId) {
-            setOpen(bufferId);
-            if (bufferId != -1 && client.bufferSyncer() != null)
-                client.bufferSyncer().requestMarkBufferAsRead(bufferId);
-            provider.sendEvent(new BufferChangeEvent());
-            client.backlogStorage().markBufferUnused(oldBuffer);
-        }
-    }
-
-    @Override
-    public int open() {
-        return openBuffer;
-    }
-
-    @Override
-    public void receiveBacklog(@NonNull Message msg) {
-        storage.insertMessages(msg);
-        if (msg.bufferInfo.id == openBuffer && openBuffer != -1)
-            client.bufferSyncer().requestMarkBufferAsRead(openBuffer);
-    }
-
-    @Override
-    public int waitingMax() {
-        return waitingMax;
-    }
-
-    @NonNull
-    @Override
-    public Set<Integer> waiting() {
-        return waiting;
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-
-    }
-
-    @Override
-    public void _update(QBacklogManager from) {
-
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java
deleted file mode 100644
index 5ec3da31c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferSyncer.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.BufferSyncerSerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.ABufferSyncer;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-import de.kuschku.util.observables.lists.ObservableElement;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class BufferSyncer extends ABufferSyncer {
-
-    @NonNull
-    private final SparseArray<ObservableElement<Integer>> activities = new SparseArray<>();
-    @NonNull
-    private SparseIntArray lastSeenMsgs = new SparseIntArray();
-    @NonNull
-    private SparseIntArray markerLines = new SparseIntArray();
-    @NonNull
-    private Map<Integer, ObservableSet<Message.Type>> filters = new HashMap<>();
-
-    public BufferSyncer(@NonNull Map<Integer, Integer> lastSeenMsgs, @NonNull Map<Integer, Integer> markerLines) {
-        assertNotNull(lastSeenMsgs);
-        assertNotNull(markerLines);
-
-        for (int bufferId : lastSeenMsgs.keySet()) {
-            this.lastSeenMsgs.put(bufferId, lastSeenMsgs.get(bufferId));
-        }
-        for (int bufferId : markerLines.keySet()) {
-            this.markerLines.put(bufferId, markerLines.get(bufferId));
-        }
-    }
-
-    @Override
-    public int lastSeenMsg(int buffer) {
-        return lastSeenMsgs.get(buffer, -1);
-    }
-
-    @Override
-    public int markerLine(int buffer) {
-        return markerLines.get(buffer, -1);
-    }
-
-    @Override
-    public void _setLastSeenMsg(int buffer, int msgId) {
-        assertNotNull(client);
-        QBacklogManager backlogManager = client.backlogManager();
-        assertNotNull(backlogManager);
-
-        if (msgId < 0)
-            return;
-
-        int oldLastSeenMsg = lastSeenMsg(buffer);
-        if (oldLastSeenMsg < msgId) {
-            lastSeenMsgs.put(buffer, msgId);
-        }
-        setActivity(buffer, 0);
-        AndroidObservableComparableSortedList<Message> filtered = backlogManager.filtered(buffer);
-        for (Message m : filtered) {
-            addActivity(m);
-        }
-        client.bufferManager().bufferIds().notifyItemChanged(buffer);
-        _update();
-    }
-
-    @Override
-    public void _setMarkerLine(int buffer, int msgId) {
-        if (msgId < 0)
-            return;
-
-        int oldMarkerline = markerLine(buffer);
-        if (oldMarkerline < msgId) {
-            markerLines.put(buffer, msgId);
-            client.backlogStorage().setMarkerLine(buffer, msgId);
-        }
-        client.bufferManager().bufferIds().notifyItemChanged(buffer);
-        _update();
-    }
-
-    @Override
-    public void _requestSetLastSeenMsg(int buffer, int msgId) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _requestSetMarkerLine(int buffer, int msgId) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _requestRemoveBuffer(int buffer) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _removeBuffer(int buffer) {
-        assertNotNull(client);
-
-        for (QBufferViewConfig config : client.bufferViewManager().bufferViewConfigs()) {
-            config.deleteBuffer(buffer);
-        }
-        this.filters.remove(buffer);
-        markerLines.delete(buffer);
-        lastSeenMsgs.delete(buffer);
-        client.bufferManager().removeBuffer(buffer);
-        _update();
-    }
-
-    @Override
-    public void _requestRenameBuffer(int buffer, String newName) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _renameBuffer(int bufferId, @NonNull String newName) {
-        assertNotNull(client);
-
-        client.bufferManager().renameBuffer(bufferId, newName);
-        _update();
-    }
-
-    @Override
-    public void _requestMergeBuffersPermanently(int buffer1, int buffer2) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _mergeBuffersPermanently(int buffer1, int buffer2) {
-        client.backlogStorage().merge(buffer1, buffer2);
-        _removeBuffer(buffer2);
-    }
-
-    @Override
-    public void _requestPurgeBufferIds() {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _requestMarkBufferAsRead(int buffer) {
-        assertNotNull(client);
-
-        int lastMessage = client.backlogStorage().getLatest(buffer);
-        if (lastMessage != -1) {
-            requestSetLastSeenMsg(buffer, lastMessage);
-        }
-    }
-
-    @Override
-    public void _markBufferAsRead(int buffer) {
-        assertNotNull(client);
-
-        AndroidObservableSortedList<Message> messages = client.backlogStorage().getUnfiltered(buffer);
-        Message lastMessage = messages.last();
-        if (messages.isEmpty() || lastMessage == null) {
-            _setLastSeenMsg(buffer, -1);
-            _setMarkerLine(buffer, -1);
-        } else {
-            _setLastSeenMsg(buffer, lastMessage.id);
-            _setMarkerLine(buffer, lastMessage.id);
-        }
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        client.setBufferSyncer(this);
-    }
-
-    @Override
-    public void _update(@NonNull Map<String, QVariant> from) {
-        _update(BufferSyncerSerializer.get().fromLegacy(from));
-    }
-
-    @Override
-    public void _update(@NonNull QBufferSyncer from) {
-        lastSeenMsgs = from.lastSeenMsgs();
-        markerLines = from.markerLines();
-        _update();
-    }
-
-    public ObservableElement<Integer> activity(int bufferid) {
-        assertNotNull(activities);
-        ensureExistingActivity(bufferid);
-
-        return activities.get(bufferid);
-    }
-
-    public void setActivity(int bufferid, int activity) {
-        assertNotNull(activities);
-        ensureExistingActivity(bufferid);
-
-        activities.get(bufferid).set(activity);
-    }
-
-    private void ensureExistingActivity(int bufferid) {
-        if (activities.get(bufferid) == null)
-            activities.put(bufferid, new ObservableElement<>(0));
-    }
-
-    public void addActivity(int bufferid, int activity) {
-        assertNotNull(activities);
-        ensureExistingActivity(bufferid);
-
-        activities.get(bufferid).set(activities.get(bufferid).get() | activity);
-    }
-
-    public void addActivity(int bufferid, @NonNull Message.Type type) {
-        ensureExistingActivity(bufferid);
-        addActivity(bufferid, type.value);
-    }
-
-    public void addActivity(@NonNull Message message) {
-        int bufferId = message.bufferInfo.id;
-        int lastSeenMsg = lastSeenMsg(bufferId);
-        boolean filtered = getFilteredTypes(bufferId).contains(message.type);
-        if (!filtered && message.id > lastSeenMsg) {
-            addActivity(bufferId, message.type);
-        }
-    }
-
-    @Override
-    public SparseIntArray lastSeenMsgs() {
-        return lastSeenMsgs;
-    }
-
-    @Override
-    public SparseIntArray markerLines() {
-        return markerLines;
-    }
-
-    @Override
-    public ObservableSet<Message.Type> getFilteredTypes(int bufferId) {
-        if (!this.filters.containsKey(bufferId)) {
-            this.filters.put(bufferId, new ObservableSet<>());
-            setFilters(bufferId, client.metaDataManager().hiddendata(client.coreId(), bufferId));
-        }
-        return this.filters.get(bufferId);
-    }
-
-    @Override
-    public int getFilters(int bufferId) {
-        int filters = 0x00000000;
-        for (Message.Type type : getFilteredTypes(bufferId)) {
-            filters |= type.value;
-        }
-        return filters;
-    }
-
-    @Override
-    public void setFilters(int bufferId, int filters) {
-        client.metaDataManager().setHiddendata(client.coreId(), bufferId, filters);
-        for (Message.Type type : Message.Type.values()) {
-            if ((filters & type.value) != 0) {
-                getFilteredTypes(bufferId).add(type);
-            } else {
-                getFilteredTypes(bufferId).remove(type);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
deleted file mode 100644
index 66b05394f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewConfig.java
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.BufferViewConfigSerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.ABufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.observables.lists.ObservableList;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-import static de.kuschku.libquassel.primitives.types.BufferInfo.Type;
-
-public class BufferViewConfig extends ABufferViewConfig {
-    @NonNull
-    private final ObservableList<Integer> buffers;
-    @NonNull
-    private final ObservableSet<Integer> visibleBufferIds;
-    @NonNull
-    private final ObservableSet<Integer> allBufferIds;
-    @NonNull
-    private final ObservableSet<Integer> removedBuffers;
-    @NonNull
-    private final ObservableSet<Integer> temporarilyRemovedBuffers;
-    private final ObservableSet<QNetwork> networkList = new ObservableSet<>();
-    private int bufferViewId;
-    private String bufferViewName;
-    private int networkId;
-    private boolean addNewBuffersAutomatically;
-    private boolean sortAlphabetically;
-    private boolean disableDecoration;
-    private int allowedBufferTypes;
-    private MinimumActivity minimumActivity;
-    private boolean hideInactiveBuffers;
-    private boolean hideInactiveNetworks;
-
-    public BufferViewConfig(String bufferViewName, @NonNull List<Integer> temporarilyRemovedBuffers, boolean hideInactiveNetworks, @NonNull List<Integer> buffers, int allowedBufferTypes, boolean sortAlphabetically, boolean disableDecoration, boolean addNewBuffersAutomatically, int networkId, MinimumActivity minimumActivity, boolean hideInactiveBuffers, @NonNull List<Integer> removedBuffers) {
-        this.bufferViewName = bufferViewName;
-        this.temporarilyRemovedBuffers = new ObservableSet<>(temporarilyRemovedBuffers);
-        this.hideInactiveNetworks = hideInactiveNetworks;
-        this.buffers = new ObservableList<>(buffers);
-        buffers.removeAll(removedBuffers);
-        buffers.removeAll(temporarilyRemovedBuffers);
-        this.visibleBufferIds = new ObservableSet<>();
-        visibleBufferIds.addAll(buffers);
-        this.allBufferIds = new ObservableSet<>();
-        allBufferIds.addAll(buffers);
-        allBufferIds.addAll(removedBuffers);
-        allBufferIds.addAll(temporarilyRemovedBuffers);
-        this.allowedBufferTypes = allowedBufferTypes;
-        this.sortAlphabetically = sortAlphabetically;
-        this.disableDecoration = disableDecoration;
-        this.addNewBuffersAutomatically = addNewBuffersAutomatically;
-        this.networkId = networkId;
-        this.minimumActivity = minimumActivity;
-        this.hideInactiveBuffers = hideInactiveBuffers;
-        this.removedBuffers = new ObservableSet<>(removedBuffers);
-    }
-
-    @NonNull
-    public static BufferViewConfig create(int bufferViewConfigId) {
-        BufferViewConfig bufferViewConfig = new BufferViewConfig(
-                "",
-                Collections.emptyList(),
-                false,
-                Collections.emptyList(),
-                Type.STATUS.id | Type.QUERY.id | Type.CHANNEL.id | Type.GROUP.id,
-                true,
-                false,
-                true,
-                -1,
-                MinimumActivity.NONE,
-                false,
-                Collections.emptyList()
-        );
-        bufferViewConfig.init(bufferViewConfigId);
-        return bufferViewConfig;
-    }
-
-    @Override
-    public int bufferViewId() {
-        return bufferViewId;
-    }
-
-    @Override
-    public String bufferViewName() {
-        return bufferViewName;
-    }
-
-    @Override
-    public void _setBufferViewName(String bufferViewName) {
-        this.bufferViewName = bufferViewName;
-        _update();
-    }
-
-    @Override
-    public int networkId() {
-        return networkId;
-    }
-
-    @Override
-    public void _setNetworkId(int networkId) {
-        this.networkId = networkId;
-        if (initialized)
-            updateNetworks();
-        _update();
-    }
-
-    @Override
-    public void updateNetworks() {
-        if (this.networkId == 0 || this.networkId == -1) {
-            networkList.retainAll(client.networkManager().networks());
-            networkList.addAll(client.networkManager().networks());
-        } else {
-            networkList.retainAll(Collections.singleton(client.networkManager().network(this.networkId)));
-            networkList.add(client.networkManager().network(this.networkId));
-        }
-    }
-
-    @Override
-    public void checkAddBuffer(int id) {
-        if (!allBufferIds.contains(id)) {
-            Buffer buffer1 = client.bufferManager().buffer(id);
-            if (addNewBuffersAutomatically && buffer1 != null) {
-                BufferInfo info = buffer1.getInfo();
-                int pos;
-                if (!sortAlphabetically) {
-                    pos = visibleBufferIds.size();
-                } else {
-                    List<String> infos = new ArrayList<>();
-                    for (int bufferId : bufferList()) {
-                        Buffer buffer = client.bufferManager().buffer(bufferId);
-                        if (buffer == null) {
-                            Log.w("libquassel", "Buffer is null: " + bufferId + " while adding buffer " + info);
-                        } else {
-                            BufferInfo info1 = buffer.getInfo();
-                            if (info1.networkId == info.networkId)
-                                infos.add(info1.name);
-                        }
-                    }
-                    infos.add(info.name);
-                    Collections.sort(infos);
-                    pos = infos.indexOf(info.name);
-                }
-                requestAddBuffer(info.id, pos);
-            } else {
-                requestRemoveBufferPermanently(id);
-            }
-        }
-    }
-
-    @Override
-    public DisplayType mayDisplay(Buffer buffer) {
-        if (buffer != null &&
-                (allowedBufferTypes == 0 || (0 != (buffer.getInfo().type.id & allowedBufferTypes()))) &&
-                (networkId == 0 || (networkId == buffer.getInfo().networkId))
-                ) {
-            int bufferid = buffer.getInfo().id;
-            if (visibleBufferIds.contains(bufferid) && !temporarilyRemovedBuffers.contains(bufferid) && !removedBuffers.contains(bufferid))
-                return DisplayType.ALWAYS;
-            else if (temporarilyRemovedBuffers.contains(bufferid) && !removedBuffers.contains(bufferid))
-                return DisplayType.TEMP_HIDDEN;
-            else
-                return DisplayType.PERM_HIDDEN;
-        } else {
-            return DisplayType.NONE;
-        }
-    }
-
-    @Override
-    public boolean addNewBuffersAutomatically() {
-        return addNewBuffersAutomatically;
-    }
-
-    @Override
-    public void _setAddNewBuffersAutomatically(boolean addNewBuffersAutomatically) {
-        this.addNewBuffersAutomatically = addNewBuffersAutomatically;
-        _update();
-    }
-
-    @Override
-    public boolean sortAlphabetically() {
-        return sortAlphabetically;
-    }
-
-    @Override
-    public void _setSortAlphabetically(boolean sortAlphabetically) {
-        this.sortAlphabetically = sortAlphabetically;
-        _update();
-    }
-
-    @Override
-    public boolean disableDecoration() {
-        return disableDecoration;
-    }
-
-    @Override
-    public void _setDisableDecoration(boolean disableDecoration) {
-        this.disableDecoration = disableDecoration;
-        _update();
-    }
-
-    @Override
-    public int allowedBufferTypes() {
-        return allowedBufferTypes;
-    }
-
-    @Override
-    public boolean isBufferTypeAllowed(Type type) {
-        return (allowedBufferTypes & type.id) != 0;
-    }
-
-    @Override
-    public void setBufferTypeAllowed(Type type, boolean allowed) {
-        int masked = allowedBufferTypes & ~type.id;
-        _setAllowedBufferTypes(masked | (allowed ? type.id : 0));
-    }
-
-    @Override
-    public void _setAllowedBufferTypes(int bufferTypes) {
-        this.allowedBufferTypes = bufferTypes;
-        _update();
-    }
-
-    @Override
-    public MinimumActivity minimumActivity() {
-        return minimumActivity;
-    }
-
-    @Override
-    public void _setMinimumActivity(MinimumActivity activity) {
-        this.minimumActivity = activity;
-        _update();
-    }
-
-    @Override
-    public void _setMinimumActivity(int activity) {
-        _setMinimumActivity(MinimumActivity.fromId(activity));
-    }
-
-    @Override
-    public boolean hideInactiveBuffers() {
-        return hideInactiveBuffers;
-    }
-
-    @Override
-    public void _setHideInactiveBuffers(boolean hideInactiveBuffers) {
-        this.hideInactiveBuffers = hideInactiveBuffers;
-        _update();
-    }
-
-    @Override
-    public boolean hideInactiveNetworks() {
-        return hideInactiveNetworks;
-    }
-
-    @Override
-    public void _setHideInactiveNetworks(boolean hideInactiveNetworks) {
-        this.hideInactiveNetworks = hideInactiveNetworks;
-        _update();
-    }
-
-    @Override
-    public void _requestSetBufferViewName(String bufferViewName) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @NonNull
-    @Override
-    public ObservableList<Integer> bufferList() {
-        return buffers;
-    }
-
-    @NonNull
-    @Override
-    public ObservableSet<Integer> bufferIds() {
-        return visibleBufferIds;
-    }
-
-    @NonNull
-    @Override
-    public ObservableSet<Integer> allBufferIds() {
-        return allBufferIds;
-    }
-
-    @Override
-    public void checkAddBuffers() {
-        for (int bufferId : client.bufferManager().bufferIds()) {
-            checkAddBuffer(bufferId);
-        }
-    }
-
-    @NonNull
-    @Override
-    public ObservableSet<Integer> removedBuffers() {
-        return removedBuffers;
-    }
-
-    @NonNull
-    @Override
-    public ObservableSet<Integer> temporarilyRemovedBuffers() {
-        return temporarilyRemovedBuffers;
-    }
-
-    @Override
-    public void _addBuffer(int bufferId, int pos) {
-        if (client.bufferManager().buffer(bufferId) == null) {
-            client.bufferBuffer(this, bufferId, pos);
-            return;
-        }
-
-        if (buffers.contains(bufferId))
-            return;
-
-        if (pos < 0)
-            pos = 0;
-        else if (pos > buffers.size())
-            pos = buffers.size();
-
-        if (removedBuffers.contains(bufferId))
-            removedBuffers.remove(bufferId);
-
-        if (temporarilyRemovedBuffers.contains(bufferId))
-            temporarilyRemovedBuffers.remove(bufferId);
-
-        buffers.add(pos, bufferId);
-        visibleBufferIds.add(bufferId);
-        allBufferIds.add(bufferId);
-    }
-
-    @Override
-    public void _requestAddBuffer(int bufferId, int pos) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _moveBuffer(int bufferId, int pos) {
-        if (!buffers.contains(bufferId))
-            return;
-
-        if (pos < 0)
-            pos = 0;
-        else if (pos >= buffers.size())
-            pos = buffers.size() - 1;
-
-        // If we want to add the buffer after the position it was before, we have to decrement the
-        // position by one.
-        // Example: Before [a, b, c, d, e]
-        //          Now we move c to the last spot (nullindex: 4)
-        //          First we remove c from the current position:
-        //          [a, b, d, e]
-        //          Now, we want to add c at the end, right? But 4 is now out of bounds.
-        //          So we decrement pos by one to make up for the loss of the element in the beginning
-        if (pos > buffers.indexOf(bufferId))
-            pos -= 1;
-
-        buffers.remove(buffers.indexOf(bufferId));
-        buffers.add(bufferId, pos);
-        _update();
-    }
-
-    @Override
-    public void _requestMoveBuffer(int bufferId, int pos) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _removeBuffer(int bufferId) {
-        visibleBufferIds.remove(bufferId);
-        if (buffers.contains(bufferId))
-            buffers.remove((Integer) bufferId);
-
-        if (removedBuffers.contains(bufferId))
-            removedBuffers.remove(bufferId);
-
-        temporarilyRemovedBuffers.add(bufferId);
-        _update();
-    }
-
-    @Override
-    public void _requestRemoveBuffer(int bufferId) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void _removeBufferPermanently(int bufferId) {
-        visibleBufferIds.remove(bufferId);
-        if (buffers.contains(bufferId))
-            buffers.remove((Integer) bufferId);
-
-        if (temporarilyRemovedBuffers.contains(bufferId))
-            temporarilyRemovedBuffers.remove(bufferId);
-
-        removedBuffers.add(bufferId);
-        _update();
-    }
-
-    @Override
-    public void _requestRemoveBufferPermanently(int bufferId) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        bufferViewId = Integer.parseInt(objectName);
-        super.init(objectName, provider, client);
-        client.bufferViewManager()._addBufferViewConfig(this);
-        updateNetworks();
-        checkAddBuffers();
-        _update();
-    }
-
-    @Override
-    public void init(int bufferViewConfigId) {
-        bufferViewId = bufferViewConfigId;
-    }
-
-    @Override
-    public ObservableSet<QNetwork> networkList() {
-        return networkList;
-    }
-
-    @Override
-    public void deleteBuffer(int bufferId) {
-        visibleBufferIds.remove(bufferId);
-        allBufferIds.remove(bufferId);
-        buffers.remove((Integer) bufferId);
-        temporarilyRemovedBuffers.remove(bufferId);
-        removedBuffers.remove(bufferId);
-    }
-
-    @Override
-    public void _update(@NonNull Map<String, QVariant> from) {
-        _update(BufferViewConfigSerializer.get().fromLegacy(from));
-    }
-
-    @Override
-    public void _update(@NonNull QBufferViewConfig from) {
-        this.bufferViewId = from.bufferViewId();
-        this.bufferViewName = from.bufferViewName();
-        this.networkId = from.networkId();
-        this.addNewBuffersAutomatically = from.addNewBuffersAutomatically();
-        this.sortAlphabetically = from.sortAlphabetically();
-        this.disableDecoration = from.disableDecoration();
-        this.allowedBufferTypes = from.allowedBufferTypes();
-        this.minimumActivity = from.minimumActivity();
-        this.hideInactiveBuffers = from.hideInactiveBuffers();
-        this.hideInactiveNetworks = from.hideInactiveNetworks();
-        this.buffers.clear();
-        this.buffers.addAll(from.bufferList());
-        this.visibleBufferIds.retainAll(from.bufferIds());
-        this.visibleBufferIds.addAll(from.bufferIds());
-        this.removedBuffers.retainAll(from.removedBuffers());
-        this.removedBuffers.addAll(from.removedBuffers());
-        this.temporarilyRemovedBuffers.retainAll(from.temporarilyRemovedBuffers());
-        this.temporarilyRemovedBuffers.addAll(from.temporarilyRemovedBuffers());
-        _update();
-    }
-
-    @Override
-    public String toString() {
-        return "BufferViewConfig{" +
-                "bufferViewId=" + bufferViewId +
-                ", bufferViewName='" + bufferViewName + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java
deleted file mode 100644
index 5cf8fe429..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/BufferViewManager.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.ABufferViewManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public class BufferViewManager extends ABufferViewManager {
-    @NonNull
-    final
-    Set<Integer> cachedIds = new HashSet<>();
-    final AndroidObservableSortedList<QBufferViewConfig> list = new AndroidObservableSortedList<>(QBufferViewConfig.class, new AndroidObservableSortedList.ItemComparator<QBufferViewConfig>() {
-        @Override
-        public int compare(QBufferViewConfig o1, QBufferViewConfig o2) {
-            return o1.bufferViewName().compareToIgnoreCase(o2.bufferViewName());
-        }
-
-        @Override
-        public boolean areContentsTheSame(QBufferViewConfig oldItem, QBufferViewConfig newItem) {
-            return oldItem.bufferViewName().equals(newItem.bufferViewName());
-        }
-
-        @Override
-        public boolean areItemsTheSame(QBufferViewConfig item1, QBufferViewConfig item2) {
-            return item1.bufferViewId() == item2.bufferViewId();
-        }
-    });
-    private final GeneralCallback<QBufferViewConfig> observer = config -> list.notifyItemChanged(list.indexOf(config));
-    Map<Integer, QBufferViewConfig> bufferViewConfigs = new HashMap<>();
-
-    public BufferViewManager(@NonNull List<Integer> bufferViewIds) {
-        cachedIds.addAll(bufferViewIds);
-    }
-
-    @NonNull
-    @Override
-    public AndroidObservableSortedList<QBufferViewConfig> bufferViewConfigs() {
-        return list;
-    }
-
-    @Override
-    public QBufferViewConfig bufferViewConfig(int bufferViewId) {
-        return bufferViewConfigs.get(bufferViewId);
-    }
-
-    public void _addBufferViewConfig(@NonNull QBufferViewConfig config) {
-        if (!bufferViewConfigs.containsValue(config)) {
-            QBufferViewConfig before = bufferViewConfigs.get(config.bufferViewId());
-            if (before != null)
-                list.remove(before);
-
-            bufferViewConfigs.put(config.bufferViewId(), config);
-            config.init(String.valueOf(config.bufferViewId()), provider, client);
-            list.add(config);
-            config.addObserver(observer);
-            _update();
-        }
-    }
-
-    @Override
-    public void _addBufferViewConfig(int bufferViewConfigId) {
-        if (bufferViewConfigs.containsKey(bufferViewConfigId))
-            return;
-
-        BufferViewConfig config = BufferViewConfig.create(bufferViewConfigId);
-        _addBufferViewConfig(config);
-        client.requestInitObject("BufferViewConfig", String.valueOf(bufferViewConfigId));
-        _update();
-    }
-
-    @Override
-    public void _deleteBufferViewConfig(int bufferViewConfigId) {
-        if (!bufferViewConfigs.containsKey(bufferViewConfigId))
-            return;
-
-        QBufferViewConfig config = bufferViewConfigs.remove(bufferViewConfigId);
-        config.deleteObserver(observer);
-        list.remove(config);
-        _update();
-    }
-
-    @Override
-    public void checkForNewBuffers(int bufferId) {
-        for (QBufferViewConfig config : bufferViewConfigs()) {
-            config.checkAddBuffer(bufferId);
-        }
-    }
-
-    @Override
-    public Map<Integer, QBufferViewConfig> bufferViewConfigMap() {
-        return bufferViewConfigs;
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        for (int id : cachedIds) {
-            client.requestInitObject("BufferViewConfig", String.valueOf(id));
-        }
-        client.setBufferViewManager(this);
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-
-    }
-
-    @Override
-    public void _update(@NonNull QBufferViewManager from) {
-        this.bufferViewConfigs = from.bufferViewConfigMap();
-        this.list.retainAll(from.bufferViewConfigs());
-        this.list.addAll(from.bufferViewConfigs());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java
deleted file mode 100644
index 97160a8e3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/CoreInfo.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.ACoreInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QCoreInfo;
-
-public class CoreInfo extends ACoreInfo {
-    private Map<String, QVariant> coreData;
-
-    private int sessionConnectedClients;
-
-    private String quasselVersion;
-
-    private String quasselBuildDate;
-
-    private DateTime startTime;
-
-    public CoreInfo(Map<String, QVariant> coreData) {
-        _setCoreData(coreData);
-    }
-
-    @Override
-    public Map<String, QVariant> coreData() {
-        return coreData;
-    }
-
-    @Override
-    public void _setCoreData(Map<String, QVariant> coreData) {
-        this.coreData = coreData;
-
-        QVariant sessionConnectedClients1 = coreData.remove("sessionConnectedClients");
-        this.sessionConnectedClients = sessionConnectedClients1 != null ? (int) sessionConnectedClients1.data : -1;
-
-        QVariant quasselVersion1 = coreData.remove("quasselVersion");
-        this.quasselVersion = quasselVersion1 != null ? (String) quasselVersion1.data : null;
-
-        QVariant quasselBuildDate1 = coreData.remove("quasselBuildDate");
-        this.quasselBuildDate = quasselBuildDate1 != null ? (String) quasselBuildDate1.data : null;
-
-        QVariant startTime1 = coreData.remove("startTime");
-        this.startTime = startTime1 != null ? (DateTime) startTime1.data : null;
-
-        _update();
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-
-    }
-
-    @Override
-    public void _update(QCoreInfo from) {
-
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        client.setCoreInfo(this);
-    }
-
-    public int sessionConnectedClients() {
-        return sessionConnectedClients;
-    }
-
-    public String quasselVersion() {
-        return quasselVersion;
-    }
-
-    public String quasselBuildDate() {
-        return quasselBuildDate;
-    }
-
-    public DateTime startTime() {
-        return startTime;
-    }
-
-    @Override
-    public String toString() {
-        return "CoreInfo{" +
-                "sessionConnectedClients=" + sessionConnectedClients +
-                ", quasselVersion='" + quasselVersion + '\'' +
-                ", quasselBuildDate='" + quasselBuildDate + '\'' +
-                ", startTime=" + startTime +
-                ", coreData=" + coreData +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java
deleted file mode 100644
index e09ce649c..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Identity.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.IdentitySerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.AIdentity;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-public class Identity extends AIdentity {
-    private int id;
-    private String name;
-    private String realName;
-    private List<String> nicks;
-    private String awayNick;
-    private boolean awayNickEnabled;
-    private String awayReason;
-    private boolean awayReasonEnabled;
-    private boolean autoAwayEnabled;
-    private int autoAwayTime;
-    private String autoAwayReason;
-    private boolean autoAwayReasonEnabled;
-    private boolean detachAwayEnabled;
-    private String detachAwayReason;
-    private boolean detachAwayReasonEnabled;
-    private String ident;
-    private String kickReason;
-    private String partReason;
-    private String quitReason;
-    private String sslKey;
-    private String sslCert;
-
-    public Identity(int id, String name, String realName, List<String> nicks, String awayNick, boolean awayNickEnabled, String awayReason, boolean awayReasonEnabled, boolean autoAwayEnabled, int autoAwayTime, String autoAwayReason, boolean autoAwayReasonEnabled, boolean detachAwayEnabled, String detachAwayReason, boolean detachAwayReasonEnabled, String ident, String kickReason, String partReason, String quitReason) {
-        this.id = id;
-        this.name = name;
-        this.realName = realName;
-        this.nicks = nicks;
-        this.awayNick = awayNick;
-        this.awayNickEnabled = awayNickEnabled;
-        this.awayReason = awayReason;
-        this.awayReasonEnabled = awayReasonEnabled;
-        this.autoAwayEnabled = autoAwayEnabled;
-        this.autoAwayTime = autoAwayTime;
-        this.autoAwayReason = autoAwayReason;
-        this.autoAwayReasonEnabled = autoAwayReasonEnabled;
-        this.detachAwayEnabled = detachAwayEnabled;
-        this.detachAwayReason = detachAwayReason;
-        this.detachAwayReasonEnabled = detachAwayReasonEnabled;
-        this.ident = ident;
-        this.kickReason = kickReason;
-        this.partReason = partReason;
-        this.quitReason = quitReason;
-    }
-
-    public static Identity createDefault() {
-        return new Identity(
-                -1,
-                "Standardidentity",
-                "Quassel IRC User",
-                Collections.singletonList("quassel"),
-                "",
-                false,
-                "Gone fishing.",
-                true,
-                false,
-                10,
-                "Not here. No, really. not here!",
-                false,
-                false,
-                "All Quassel clients vanished from the face of the earth...",
-                false,
-                "quassel",
-                "Kindergarten is elsewhere!",
-                "http://quassel-irc.org - Chat comfortably. Anywhere.",
-                "http://quassel-irc.org - Chat comfortably. Anywhere."
-        );
-    }
-
-    @Override
-    public void setToDefaults() {
-        setIdentityName("");
-        setRealName("Quassel IRC User");
-        setNicks(Collections.singletonList("quassel"));
-        setAwayNick("");
-        setAwayNickEnabled(false);
-        setAwayReason("Gone fishing.");
-        setAwayReasonEnabled(true);
-        setAutoAwayEnabled(false);
-        setAutoAwayTime(10);
-        setAutoAwayReason("Not here. No, really. not here!");
-        setAutoAwayReasonEnabled(false);
-        setDetachAwayEnabled(false);
-        setDetachAwayReason("All Quassel clients vanished from the face of the earth...");
-        setDetachAwayReasonEnabled(false);
-        setIdent("quassel");
-        setKickReason("Kindergarten is elsewhere!");
-        setPartReason("http://quassel-irc.org - Chat comfortably. Anywhere.");
-        setQuitReason("http://quassel-irc.org - Chat comfortably. Anywhere.");
-    }
-
-    @Override
-    public boolean isValid() {
-        return false;
-    }
-
-    @Override
-    public int id() {
-        return id;
-    }
-
-    @Override
-    public String identityName() {
-        return name;
-    }
-
-    @Override
-    public String realName() {
-        return realName;
-    }
-
-    @Override
-    public List<String> nicks() {
-        return nicks;
-    }
-
-    @Override
-    public String awayNick() {
-        return awayNick;
-    }
-
-    @Override
-    public boolean awayNickEnabled() {
-        return awayNickEnabled;
-    }
-
-    @Override
-    public String awayReason() {
-        return awayReason;
-    }
-
-    @Override
-    public boolean awayReasonEnabled() {
-        return awayReasonEnabled;
-    }
-
-    @Override
-    public boolean autoAwayEnabled() {
-        return autoAwayEnabled;
-    }
-
-    @Override
-    public int autoAwayTime() {
-        return autoAwayTime;
-    }
-
-    @Override
-    public String autoAwayReason() {
-        return autoAwayReason;
-    }
-
-    @Override
-    public boolean autoAwayReasonEnabled() {
-        return autoAwayReasonEnabled;
-    }
-
-    @Override
-    public boolean detachAwayEnabled() {
-        return detachAwayEnabled;
-    }
-
-    @Override
-    public String detachAwayReason() {
-        return detachAwayReason;
-    }
-
-    @Override
-    public boolean detachAwayReasonEnabled() {
-        return detachAwayReasonEnabled;
-    }
-
-    @Override
-    public String ident() {
-        return ident;
-    }
-
-    @Override
-    public String kickReason() {
-        return kickReason;
-    }
-
-    @Override
-    public String partReason() {
-        return partReason;
-    }
-
-    @Override
-    public String quitReason() {
-        return quitReason;
-    }
-
-    @Override
-    public void _setId(int id) {
-        this.id = id;
-        _update();
-    }
-
-    @Override
-    public void _setIdentityName(String name) {
-        this.name = name;
-        _update();
-    }
-
-    @Override
-    public void _setRealName(String realName) {
-        this.realName = realName;
-        _update();
-    }
-
-    @Override
-    public void _setNicks(List<String> nicks) {
-        this.nicks = nicks;
-        _update();
-    }
-
-    @Override
-    public void _setAwayNick(String awayNick) {
-        this.awayNick = awayNick;
-        _update();
-    }
-
-    @Override
-    public void _setAwayNickEnabled(boolean enabled) {
-        this.awayNickEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setAwayReason(String awayReason) {
-        this.awayReason = awayReason;
-        _update();
-    }
-
-    @Override
-    public void _setAwayReasonEnabled(boolean enabled) {
-        this.awayReasonEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setAutoAwayEnabled(boolean enabled) {
-        this.autoAwayEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setAutoAwayTime(int time) {
-        this.autoAwayTime = time;
-        _update();
-    }
-
-    @Override
-    public void _setAutoAwayReason(String reason) {
-        this.autoAwayReason = reason;
-        _update();
-    }
-
-    @Override
-    public void _setAutoAwayReasonEnabled(boolean enabled) {
-        this.autoAwayReasonEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setDetachAwayEnabled(boolean enabled) {
-        this.detachAwayEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setDetachAwayReason(String reason) {
-        this.detachAwayReason = reason;
-        _update();
-    }
-
-    @Override
-    public void _setDetachAwayReasonEnabled(boolean enabled) {
-        this.detachAwayReasonEnabled = enabled;
-        _update();
-    }
-
-    @Override
-    public void _setIdent(String ident) {
-        this.ident = ident;
-        _update();
-    }
-
-    @Override
-    public void _setKickReason(String reason) {
-        this.kickReason = reason;
-        _update();
-    }
-
-    @Override
-    public void _setPartReason(String reason) {
-        this.partReason = reason;
-        _update();
-    }
-
-    @Override
-    public void _setQuitReason(String reason) {
-        this.quitReason = reason;
-        _update();
-    }
-
-    @Override
-    public void _copyFrom(@NonNull QIdentity other) {
-        this.id = other.id();
-        this.name = other.identityName();
-        this.realName = other.realName();
-        this.nicks = other.nicks();
-        this.awayNick = other.awayNick();
-        this.awayNickEnabled = other.awayNickEnabled();
-        this.awayReason = other.awayReason();
-        this.awayReasonEnabled = other.awayReasonEnabled();
-        this.autoAwayEnabled = other.autoAwayEnabled();
-        this.autoAwayTime = other.autoAwayTime();
-        this.autoAwayReason = other.autoAwayReason();
-        this.autoAwayReasonEnabled = other.autoAwayReasonEnabled();
-        this.detachAwayEnabled = other.detachAwayEnabled();
-        this.detachAwayReason = other.detachAwayReason();
-        this.detachAwayReasonEnabled = other.detachAwayReasonEnabled();
-        this.ident = other.ident();
-        this.kickReason = other.kickReason();
-        this.partReason = other.partReason();
-        this.quitReason = other.quitReason();
-        this.sslKey = other.sslKey();
-        this.sslCert = other.sslCert();
-        _update();
-    }
-
-    @Override
-    public String sslKey() {
-        return sslKey;
-    }
-
-    @Nullable
-    @Override
-    public String sslKeyPem() {
-        return null;
-    }
-
-    @Override
-    public String sslCert() {
-        return sslCert;
-    }
-
-    @Nullable
-    @Override
-    public String sslCertPem() {
-        return null;
-    }
-
-    @Override
-    public void _setSslKey(String encoded) {
-        this.sslKey = encoded;
-        _update();
-    }
-
-    @Override
-    public void _setSslCert(String encoded) {
-        this.sslCert = encoded;
-        _update();
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-        _copyFrom(IdentitySerializer.get().fromDatastream(from));
-    }
-
-    @Override
-    public void _update(QIdentity from) {
-        _copyFrom(from);
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        client.identityManager().createIdentity(this);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof Identity)) return false;
-
-        Identity identity = (Identity) o;
-
-        if (id != identity.id) return false;
-        if (awayNickEnabled != identity.awayNickEnabled) return false;
-        if (awayReasonEnabled != identity.awayReasonEnabled) return false;
-        if (autoAwayEnabled != identity.autoAwayEnabled) return false;
-        if (autoAwayTime != identity.autoAwayTime) return false;
-        if (autoAwayReasonEnabled != identity.autoAwayReasonEnabled) return false;
-        if (detachAwayEnabled != identity.detachAwayEnabled) return false;
-        if (detachAwayReasonEnabled != identity.detachAwayReasonEnabled) return false;
-        if (name != null ? !name.equals(identity.name) : identity.name != null) return false;
-        if (realName != null ? !realName.equals(identity.realName) : identity.realName != null)
-            return false;
-        if (nicks != null ? !nicks.equals(identity.nicks) : identity.nicks != null) return false;
-        if (awayNick != null ? !awayNick.equals(identity.awayNick) : identity.awayNick != null)
-            return false;
-        if (awayReason != null ? !awayReason.equals(identity.awayReason) : identity.awayReason != null)
-            return false;
-        if (autoAwayReason != null ? !autoAwayReason.equals(identity.autoAwayReason) : identity.autoAwayReason != null)
-            return false;
-        if (detachAwayReason != null ? !detachAwayReason.equals(identity.detachAwayReason) : identity.detachAwayReason != null)
-            return false;
-        if (ident != null ? !ident.equals(identity.ident) : identity.ident != null) return false;
-        if (kickReason != null ? !kickReason.equals(identity.kickReason) : identity.kickReason != null)
-            return false;
-        if (partReason != null ? !partReason.equals(identity.partReason) : identity.partReason != null)
-            return false;
-        if (quitReason != null ? !quitReason.equals(identity.quitReason) : identity.quitReason != null)
-            return false;
-        if (sslKey != null ? !sslKey.equals(identity.sslKey) : identity.sslKey != null)
-            return false;
-        return sslCert != null ? sslCert.equals(identity.sslCert) : identity.sslCert == null;
-
-    }
-
-    @Override
-    public int hashCode() {
-        int result = id;
-        result = 31 * result + (name != null ? name.hashCode() : 0);
-        result = 31 * result + (realName != null ? realName.hashCode() : 0);
-        result = 31 * result + (nicks != null ? nicks.hashCode() : 0);
-        result = 31 * result + (awayNick != null ? awayNick.hashCode() : 0);
-        result = 31 * result + (awayNickEnabled ? 1 : 0);
-        result = 31 * result + (awayReason != null ? awayReason.hashCode() : 0);
-        result = 31 * result + (awayReasonEnabled ? 1 : 0);
-        result = 31 * result + (autoAwayEnabled ? 1 : 0);
-        result = 31 * result + autoAwayTime;
-        result = 31 * result + (autoAwayReason != null ? autoAwayReason.hashCode() : 0);
-        result = 31 * result + (autoAwayReasonEnabled ? 1 : 0);
-        result = 31 * result + (detachAwayEnabled ? 1 : 0);
-        result = 31 * result + (detachAwayReason != null ? detachAwayReason.hashCode() : 0);
-        result = 31 * result + (detachAwayReasonEnabled ? 1 : 0);
-        result = 31 * result + (ident != null ? ident.hashCode() : 0);
-        result = 31 * result + (kickReason != null ? kickReason.hashCode() : 0);
-        result = 31 * result + (partReason != null ? partReason.hashCode() : 0);
-        result = 31 * result + (quitReason != null ? quitReason.hashCode() : 0);
-        result = 31 * result + (sslKey != null ? sslKey.hashCode() : 0);
-        result = 31 * result + (sslCert != null ? sslCert.hashCode() : 0);
-        return result;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java
deleted file mode 100644
index fe1274855..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IgnoreListManager.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.BacklogFilter;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.IgnoreListManagerSerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.AIgnoreListManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-import de.kuschku.util.regex.SmartRegEx;
-
-import static de.kuschku.util.AndroidAssert.assertEquals;
-
-public class IgnoreListManager extends AIgnoreListManager {
-    @NonNull
-    private final AndroidObservableSortedList<IgnoreListItem> ignoreList = new AndroidObservableSortedList<>(IgnoreListItem.class, new AndroidObservableSortedList.ItemComparator<IgnoreListItem>() {
-        @Override
-        public int compare(IgnoreListItem o1, IgnoreListItem o2) {
-            return o1.ignoreRule.rule().compareTo(o2.ignoreRule.rule());
-        }
-
-        @Override
-        public boolean areContentsTheSame(IgnoreListItem oldItem, IgnoreListItem newItem) {
-            return oldItem.equals(newItem);
-        }
-
-        @Override
-        public boolean areItemsTheSame(IgnoreListItem item1, IgnoreListItem item2) {
-            return item1.ignoreRule.rule().equals(item2.ignoreRule.rule());
-        }
-    });
-
-
-    public IgnoreListManager(@NonNull List<Integer> scope, @NonNull List<Integer> ignoreType,
-                             @NonNull List<Boolean> isActive, @NonNull List<String> scopeRule, @NonNull List<Boolean> isRegEx,
-                             @NonNull List<Integer> strictness, @NonNull List<String> ignoreRule) {
-        assertEquals(scope.size(), ignoreType.size(), isActive.size(), scopeRule.size(), isRegEx.size(), strictness.size(), ignoreRule.size());
-
-        for (int i = 0; i < scope.size(); i++) {
-            ignoreList.add(new IgnoreListItem(
-                    ignoreType.get(i),
-                    ignoreRule.get(i),
-                    isRegEx.get(i),
-                    strictness.get(i),
-                    scope.get(i),
-                    scopeRule.get(i),
-                    isActive.get(i)
-            ));
-        }
-    }
-
-    @Override
-    public void _removeIgnoreListItem(String ignoreRule) {
-        ignoreList.remove(indexOf(ignoreRule));
-        _update();
-    }
-
-    private int indexOf(String ignoreRule) {
-        for (int i = 0; i < ignoreList.size(); i++) {
-            if (ignoreList.get(i).ignoreRule.rule().equals(ignoreRule))
-                return i;
-        }
-        return -1;
-    }
-
-    @Override
-    public void _toggleIgnoreRule(String ignoreRule) {
-        IgnoreListItem item = ignoreList.get(indexOf(ignoreRule));
-        item.isActive = !item.isActive;
-        _update();
-    }
-
-    @Override
-    public void _addIgnoreListItem(int type, @NonNull String ignoreRule, boolean isRegEx, int strictness, int scope, @NonNull String scopeRule, boolean isActive) {
-        if (contains(ignoreRule))
-            return;
-
-        ignoreList.add(new IgnoreListItem(type, ignoreRule, isRegEx, strictness, scope, scopeRule, isActive));
-        _update();
-    }
-
-    @Override
-    public void _addIgnoreListItem(IgnoreListItem item) {
-        if (contains(item.ignoreRule.rule()))
-            return;
-
-        ignoreList.add(item);
-        _update();
-    }
-
-    private boolean contains(String ignoreRule) {
-        return indexOf(ignoreRule) != -1;
-    }
-
-    @Override
-    public StrictnessType match(String msgContents, String msgSender, Message.Type msgType, @NonNull String network, @NonNull String bufferName) {
-        if (msgType == Message.Type.Plain || msgType == Message.Type.Notice || msgType == Message.Type.Action) {
-            for (IgnoreListItem item : ignoreList) {
-                if (!item.isActive || item.type == IgnoreType.CtcpIgnore)
-                    continue;
-
-                if (item.scopeMatch(network, bufferName)) {
-                    String str;
-                    if (item.type == IgnoreType.MessageIgnore)
-                        str = msgContents;
-                    else
-                        str = msgSender;
-
-                    if (item.matches(str))
-                        return item.strictness;
-                }
-            }
-        }
-        return StrictnessType.UnmatchedStrictness;
-    }
-
-    @Override
-    public void _update(@NonNull Map<String, QVariant> from) {
-        _update(IgnoreListManagerSerializer.get().fromDatastream(from));
-    }
-
-    @Override
-    public void _update(QIgnoreListManager from) {
-        this.ignoreList.retainAll(from.ignoreList());
-        this.ignoreList.addAll(from.ignoreList());
-        this._update();
-    }
-
-    @Override
-    public void _update() {
-        super._update();
-        synchronized (client.backlogStorage().getFilters()) {
-            for (BacklogFilter filter : client.backlogStorage().getFilters()) {
-                filter.update();
-            }
-        }
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        client.setIgnoreListManager(this);
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(ignoreList);
-    }
-
-    @Override
-    public void requestUpdate() {
-        requestUpdate(IgnoreListManagerSerializer.get().toVariantMap(this));
-    }
-
-    @Override
-    public AndroidObservableSortedList<? extends IgnoreListItem> ignoreList() {
-        return ignoreList;
-    }
-
-    @Override
-    public void _toggleIgnoreRule(IgnoreListItem ignoreRule, boolean active) {
-        ignoreRule.isActive = active;
-    }
-
-    public static class IgnoreListItem {
-        private final IgnoreType type;
-        @NonNull
-        private final SmartRegEx ignoreRule;
-        private final boolean isRegEx;
-        private final StrictnessType strictness;
-        private final ScopeType scope;
-        @NonNull
-        private final SmartRegEx[] scopeRules;
-        private final String scopeRule;
-        private boolean isActive;
-
-        public IgnoreListItem(int type, @Nullable String ignoreRule, boolean isRegEx, int strictness, int scope, @Nullable String scopeRule, boolean isActive) {
-            this(IgnoreType.of(type), ignoreRule, isRegEx, StrictnessType.of(strictness), ScopeType.of(scope), scopeRule, isActive);
-        }
-
-        public IgnoreListItem(IgnoreType type, @Nullable String ignoreRule, boolean isRegEx, StrictnessType strictness, ScopeType scope, @Nullable String scopeRule, boolean isActive) {
-            if (scopeRule == null)
-                scopeRule = "";
-            if (ignoreRule == null)
-                ignoreRule = "";
-
-            this.type = type;
-            this.ignoreRule = new SmartRegEx(ignoreRule, Pattern.CASE_INSENSITIVE, SmartRegEx.Syntax.WILDCARD);
-            this.isRegEx = isRegEx;
-            this.strictness = strictness;
-            this.scope = scope;
-            this.isActive = isActive;
-
-            String[] scopeRules = scopeRule.split(";");
-            this.scopeRule = scopeRule;
-            this.scopeRules = new SmartRegEx[scopeRules.length];
-            for (int i = 0; i < scopeRules.length; i++) {
-                this.scopeRules[i] = new SmartRegEx(scopeRules[i].trim(), Pattern.CASE_INSENSITIVE, SmartRegEx.Syntax.WILDCARD);
-            }
-        }
-
-        public IgnoreType getType() {
-            return type;
-        }
-
-        @NonNull
-        public SmartRegEx getIgnoreRule() {
-            return ignoreRule;
-        }
-
-        public boolean isRegEx() {
-            return isRegEx;
-        }
-
-        public StrictnessType getStrictness() {
-            return strictness;
-        }
-
-        public ScopeType getScope() {
-            return scope;
-        }
-
-        @NonNull
-        public String getScopeRule() {
-            return scopeRule;
-        }
-
-        public boolean isActive() {
-            return isActive;
-        }
-
-        public boolean matches(@NonNull String text) {
-            return ignoreRule.matches(text, !isRegEx);
-        }
-
-        private boolean scopeMatch(@NonNull String network, @NonNull String bufferName) {
-            switch (scope) {
-                case NetworkScope:
-                    return scopeMatch(network);
-                case ChannelScope:
-                    return scopeMatch(bufferName);
-                default:
-                case GlobalScope:
-                    return true;
-            }
-        }
-
-        private boolean scopeMatch(@NonNull String scope) {
-            for (SmartRegEx scopeRule : scopeRules) {
-                if (scopeRule.matches(scope, !isRegEx))
-                    return true;
-            }
-            return false;
-        }
-
-        @Override
-        public String toString() {
-            return "IgnoreListItem{" +
-                    "type=" + type +
-                    ", ignoreRule=" + ignoreRule +
-                    ", isRegEx=" + isRegEx +
-                    ", strictness=" + strictness +
-                    ", scope=" + scope +
-                    ", scopeRules=" + Arrays.toString(scopeRules) +
-                    ", isActive=" + isActive +
-                    '}';
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) return true;
-            if (!(o instanceof IgnoreListItem)) return false;
-
-            IgnoreListItem item = (IgnoreListItem) o;
-
-            if (isRegEx() != item.isRegEx()) return false;
-            if (isActive() != item.isActive()) return false;
-            if (getType() != item.getType()) return false;
-            if (!getIgnoreRule().equals(item.getIgnoreRule())) return false;
-            if (getStrictness() != item.getStrictness()) return false;
-            if (getScope() != item.getScope()) return false;
-            // Probably incorrect - comparing Object[] arrays with Arrays.equals
-            if (!Arrays.equals(scopeRules, item.scopeRules)) return false;
-            return getScopeRule() != null ? getScopeRule().equals(item.getScopeRule()) : item.getScopeRule() == null;
-
-        }
-
-        @Override
-        public int hashCode() {
-            int result = getType() != null ? getType().hashCode() : 0;
-            result = 31 * result + getIgnoreRule().hashCode();
-            result = 31 * result + (isRegEx() ? 1 : 0);
-            result = 31 * result + (getStrictness() != null ? getStrictness().hashCode() : 0);
-            result = 31 * result + (getScope() != null ? getScope().hashCode() : 0);
-            result = 31 * result + Arrays.hashCode(scopeRules);
-            result = 31 * result + (getScopeRule() != null ? getScopeRule().hashCode() : 0);
-            result = 31 * result + (isActive() ? 1 : 0);
-            return result;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java
deleted file mode 100644
index aea9713ec..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcChannel.java
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Joiner;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.serializers.IrcChannelSerializer;
-import de.kuschku.libquassel.syncables.types.abstracts.AIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.irc.ModeUtils;
-import de.kuschku.util.observables.lists.ObservableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertEquals;
-
-public class IrcChannel extends AIrcChannel {
-    @NonNull
-    public final Map<Character, List<String>> A_channelModes = new HashMap<>();
-    @NonNull
-    public final Map<Character, String> B_channelModes = new HashMap<>();
-    @NonNull
-    public final Map<Character, String> C_channelModes = new HashMap<>();
-    private final String name;
-    @NonNull
-    private final Map<String, Set<Character>> userModes = new HashMap<>();
-    @NonNull
-    public Set<Character> D_channelModes = new HashSet<>();
-    private String topic;
-    private String password;
-    private boolean encrypted;
-    private WeakReference<QNetwork> network = new WeakReference<>(null);
-    private final ObservableSortedList<String> users = new ObservableSortedList<>((o1, o2) -> {
-        if (userModes(o1).equals(userModes(o2))) {
-            return o1.compareToIgnoreCase(o2);
-        } else {
-            return network().lowestModeIndex(userModes(o1)) - network().lowestModeIndex(userModes(o2));
-        }
-    });
-    private String codecForEncoding;
-    private String codecForDecoding;
-    // Because we don’t have networks at the beginning yet
-    @Nullable
-    private Map<String, String> cachedUserModes;
-    @Nullable
-    private Map<String, Object> cachedChanModes;
-
-    public IrcChannel(String name, String topic, String password, @Nullable Map<String, String> userModes,
-                      @NonNull Map<String, Object> chanModes, boolean encrypted) {
-        this.name = name;
-        this.topic = topic;
-        this.password = password;
-        this.encrypted = encrypted;
-        this.cachedUserModes = userModes;
-        this.cachedChanModes = chanModes;
-    }
-
-    @NonNull
-    public static IrcChannel create(@NonNull String channelName) {
-        return new IrcChannel(
-                channelName,
-                "",
-                "",
-                new HashMap<>(),
-                new HashMap<>(),
-                false
-        );
-    }
-
-    @Override
-    public boolean isKnownUser(@Nullable QIrcUser ircuser) {
-        return ircuser != null && userModes.containsKey(ircuser.nick());
-    }
-
-    @Override
-    public boolean isValidChannelUserMode(@Nullable String mode) {
-        return mode != null && mode.length() == 1;
-    }
-
-    @Override
-    public String name() {
-        return name;
-    }
-
-    @Override
-    public String topic() {
-        return topic;
-    }
-
-    @Override
-    public String password() {
-        return password;
-    }
-
-    @Override
-    public boolean encrypted() {
-        return encrypted;
-    }
-
-    @Override
-    public QNetwork network() {
-        return network.get();
-    }
-
-    @NonNull
-    @Override
-    public List<String> ircUsers() {
-        return new ArrayList<>(userModes.keySet());
-    }
-
-    @Override
-    public String userModes(String nick) {
-        if (userModes.get(nick) != null)
-            return Joiner.on("").join(userModes.get(nick));
-        else
-            return "";
-    }
-
-    @Override
-    public String userModes(@NonNull QIrcUser ircuser) {
-        return userModes(ircuser.nick());
-    }
-
-    @Override
-    public boolean hasMode(char mode) {
-        Network.ChannelModeType modeType = network().channelModeType(mode);
-
-        switch (modeType) {
-            case NOT_A_CHANMODE:
-                return false;
-            case A_CHANMODE:
-                return A_channelModes.containsKey(mode);
-            case B_CHANMODE:
-                return B_channelModes.containsKey(mode);
-            case C_CHANMODE:
-                return C_channelModes.containsKey(mode);
-            case D_CHANMODE:
-                return D_channelModes.contains(mode);
-            default:
-                return false;
-        }
-    }
-
-    @Override
-    public String modeValue(char mode) {
-        QNetwork.ChannelModeType modeType = network().channelModeType(mode);
-
-        switch (modeType) {
-            case B_CHANMODE:
-                if (B_channelModes.containsKey(mode))
-                    return B_channelModes.get(mode);
-                else
-                    return "";
-            case C_CHANMODE:
-                if (C_channelModes.containsKey(mode))
-                    return C_channelModes.get(mode);
-                else
-                    return "";
-            default:
-                return "";
-        }
-    }
-
-    @Override
-    public List<String> modeValueList(char mode) {
-        QNetwork.ChannelModeType modeType = network().channelModeType(mode);
-        switch (modeType) {
-            case A_CHANMODE:
-                if (A_channelModes.containsKey(mode))
-                    return A_channelModes.get(mode);
-            default:
-                return Collections.emptyList();
-        }
-    }
-
-    @Override
-    public String channelModeString() {
-        List<String> params = new LinkedList<>();
-        StringBuilder modeString = new StringBuilder("");
-        for (Character mode : D_channelModes) {
-            modeString.append(mode);
-        }
-        for (Map.Entry<Character, String> entry : C_channelModes.entrySet()) {
-            modeString.append(entry.getKey());
-            params.add(entry.getValue());
-        }
-        for (Map.Entry<Character, String> entry : B_channelModes.entrySet()) {
-            modeString.append(entry.getKey());
-            params.add(entry.getValue());
-        }
-        String result = modeString.toString();
-        if (result.isEmpty())
-            return result;
-        else
-            return String.format("+%s %s", result, Joiner.on(" ").join(params));
-    }
-
-    public String channelModeShort() {
-        StringBuilder modeString = new StringBuilder("");
-        for (Character mode : D_channelModes) {
-            modeString.append(mode);
-        }
-        String result = modeString.toString();
-        if (result.isEmpty())
-            return result;
-        else
-            return String.format("+%s", result);
-    }
-
-    @Override
-    public String codecForEncoding() {
-        return codecForEncoding;
-    }
-
-    @Override
-    public String codecForDecoding() {
-        return codecForDecoding;
-    }
-
-    @Override
-    public void setCodecForEncoding(String codecName) {
-        this.codecForEncoding = codecName;
-    }
-
-    @Override
-    public void setCodecForDecoding(String codecName) {
-        this.codecForDecoding = codecName;
-    }
-
-    @Override
-    public void _setTopic(String topic) {
-        this.topic = topic;
-        _update();
-        updateDisplay();
-    }
-
-    @Override
-    public void _setPassword(String password) {
-        this.password = password;
-    }
-
-    @Override
-    public void _setEncrypted(boolean encrypted) {
-        this.encrypted = encrypted;
-    }
-
-    @Override
-    public void _joinIrcUsers(@NonNull List<String> nicks, @NonNull List<String> modes) {
-        assertEquals(nicks.size(), modes.size());
-        for (int i = 0; i < nicks.size(); i++) {
-            _joinIrcUser(network().ircUser(nicks.get(i)), modes.get(i));
-        }
-    }
-
-    @Override
-    public void _joinIrcUser(QIrcUser ircuser) {
-        _joinIrcUser(ircuser, null);
-    }
-
-    public void _joinIrcUser(@Nullable QIrcUser ircuser, @NonNull String mode) {
-        if (ircuser == null || userModes.containsKey(ircuser.nick())) {
-            _addUserMode(ircuser, mode);
-        } else {
-            userModes.put(ircuser.nick(), ModeUtils.toModes(mode));
-            users.add(ircuser.nick());
-            ircuser._joinChannel(this, true);
-            _update();
-        }
-    }
-
-    @Override
-    public void _part(@NonNull QIrcUser ircuser) {
-        if (isKnownUser(ircuser)) {
-            userModes.remove(ircuser.nick());
-            users.remove(ircuser.nick());
-            ircuser._partChannel(this);
-
-            if (network().isMe(ircuser) || userModes.isEmpty()) {
-                Set<String> users = userModes.keySet();
-                userModes.clear();
-                users.clear();
-                for (String user : users) {
-                    network().ircUser(user)._partChannel(this, true);
-                }
-                network()._removeIrcChannel(this);
-            }
-            _update();
-        }
-    }
-
-    @Override
-    public void _part(String nick) {
-        part(network().ircUser(nick));
-    }
-
-    @Override
-    public void _setUserModes(@NonNull QIrcUser ircuser, String modes) {
-        if (!isKnownUser(ircuser))
-            return;
-
-        String nick = ircuser.nick();
-        userModes.put(nick, ModeUtils.toModes(modes));
-        users.add(nick);
-        users.notifyItemChanged(nick);
-        _update();
-    }
-
-    @Override
-    public void _setUserModes(String nick, String modes) {
-        _setUserModes(network().ircUser(nick), modes);
-    }
-
-    @Override
-    public void _addUserMode(@NonNull QIrcUser ircuser, @NonNull String mode) {
-        if (!isKnownUser(ircuser) || !isValidChannelUserMode(mode))
-            return;
-
-        String nick = ircuser.nick();
-        if (!userModes.get(nick).contains(ModeUtils.toMode(mode))) {
-            userModes.get(nick).add(ModeUtils.toMode(mode));
-            users.notifyItemChanged(nick);
-            _update();
-        }
-    }
-
-    @Override
-    public void _addUserMode(String nick, @NonNull String mode) {
-        _addUserMode(network().ircUser(nick), mode);
-    }
-
-    @Override
-    public void _removeUserMode(@NonNull QIrcUser ircuser, @NonNull String mode) {
-        if (!isKnownUser(ircuser) || !isValidChannelUserMode(mode))
-            return;
-
-        String nick = ircuser.nick();
-        if (userModes.get(nick).contains(ModeUtils.toMode(mode))) {
-            userModes.get(nick).remove(ModeUtils.toMode(mode));
-            users.notifyItemChanged(nick);
-            _update();
-        }
-    }
-
-    @Override
-    public void _removeUserMode(String nick, @NonNull String mode) {
-        _removeUserMode(network().ircUser(nick), mode);
-    }
-
-    @Override
-    public void _addChannelMode(char mode, String value) {
-        QNetwork.ChannelModeType modeType = network().channelModeType(mode);
-
-        switch (modeType) {
-            case NOT_A_CHANMODE:
-                return;
-            case A_CHANMODE:
-                if (!A_channelModes.containsKey(mode))
-                    A_channelModes.put(mode, new ArrayList<>(Collections.singletonList(value)));
-                else if (!A_channelModes.get(mode).contains(value))
-                    A_channelModes.get(mode).add(value);
-                break;
-
-            case B_CHANMODE:
-                B_channelModes.put(mode, value);
-                break;
-
-            case C_CHANMODE:
-                C_channelModes.put(mode, value);
-                break;
-
-            case D_CHANMODE:
-                D_channelModes.add(mode);
-                break;
-        }
-        _update();
-    }
-
-    @Override
-    public void _removeChannelMode(char mode, String value) {
-        QNetwork.ChannelModeType modeType = network().channelModeType(mode);
-        switch (modeType) {
-            case NOT_A_CHANMODE:
-                return;
-            case A_CHANMODE:
-                if (A_channelModes.containsKey(mode))
-                    A_channelModes.get(mode).remove(value);
-                break;
-
-            case B_CHANMODE:
-                B_channelModes.remove(mode);
-                break;
-
-            case C_CHANMODE:
-                C_channelModes.remove(mode);
-                break;
-
-            case D_CHANMODE:
-                D_channelModes.remove(mode);
-                break;
-        }
-        _update();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public void init(QNetwork network, Client client) {
-        this.client = client;
-        this.network = new WeakReference<>(network);
-
-
-        /* TODO: Use just the nick in userModes and users instead – that should make sync things a lot easier */
-        if (cachedUserModes != null) {
-            for (String username : cachedUserModes.keySet()) {
-                userModes.put(username, ModeUtils.toModes(cachedUserModes.get(username)));
-                users.add(username);
-            }
-        }
-        if (cachedChanModes != null) {
-            if (cachedChanModes.get("A") != null) {
-                for (Map.Entry<String, QVariant<List<String>>> entry : ((Map<String, QVariant<List<String>>>) cachedChanModes.get("A")).entrySet()) {
-                    A_channelModes.put(entry.getKey().charAt(0), entry.getValue().data);
-                }
-            }
-
-            if (cachedChanModes.get("B") != null)
-                for (Map.Entry<String, QVariant<String>> entry : ((Map<String, QVariant<String>>) cachedChanModes.get("B")).entrySet()) {
-                    B_channelModes.put(entry.getKey().charAt(0), entry.getValue().data);
-                }
-
-            if (cachedChanModes.get("C") != null)
-                for (Map.Entry<String, QVariant<String>> entry : ((Map<String, QVariant<String>>) cachedChanModes.get("C")).entrySet()) {
-                    C_channelModes.put(entry.getKey().charAt(0), entry.getValue().data);
-                }
-
-            if (cachedChanModes.get("D") != null)
-                D_channelModes = ModeUtils.toModes((String) cachedChanModes.get("D"));
-        }
-
-        cachedUserModes = null;
-        cachedChanModes = null;
-
-
-        QNetwork qNetwork = this.network.get();
-        if (qNetwork != null)
-            qNetwork._addIrcChannel(this);
-        _update();
-    }
-
-    @Override
-    public void _update(@NonNull Map<String, QVariant> from) {
-        _update(IrcChannelSerializer.get().fromDatastream(from));
-    }
-
-    @Override
-    public void _update(QIrcChannel from) {
-
-    }
-
-    @NonNull
-    public Map<String, String> userModes() {
-        Map<String, String> result = new HashMap<>();
-        for (String nick : userModes.keySet()) {
-            result.put(nick, userModes(nick));
-        }
-        return result;
-    }
-
-    @NonNull
-    public Map<String, Object> chanModes() {
-        Map<String, Object> result = new HashMap<>();
-        result.put("A", A_channelModes);
-        result.put("B", B_channelModes);
-        result.put("C", C_channelModes);
-        result.put("D", ModeUtils.fromModes(D_channelModes));
-        return result;
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        String[] split = objectName.split("/", 2);
-        assertEquals(split.length, 2);
-        init(client.networkManager().network(Integer.parseInt(split[0])), client);
-    }
-
-    @NonNull
-    public ObservableSortedList<String> users() {
-        return users;
-    }
-
-    @Override
-    public void _ircUserNickChanged(String oldNick, String newNick) {
-        users.remove(oldNick);
-        users.add(newNick);
-        userModes.put(newNick, userModes.get(oldNick));
-    }
-
-    @Override
-    public List<Character> modeList() {
-        List<Character> modes = new ArrayList<>();
-        modes.addAll(D_channelModes);
-        modes.addAll(C_channelModes.keySet());
-        modes.addAll(B_channelModes.keySet());
-        modes.addAll(A_channelModes.keySet());
-        return modes;
-    }
-
-    @Override
-    public void _update() {
-        super._update();
-    }
-
-    private void updateDisplay() {
-        if (client.connectionStatus() != ConnectionChangeEvent.Status.INITIALIZING_DATA) {
-            ChannelBuffer buffer = client.bufferManager().channel(this);
-            if (buffer != null) {
-                for (QBufferViewConfig qBufferViewConfig : client.bufferViewManager().bufferViewConfigs()) {
-                    qBufferViewConfig.bufferIds().notifyItemChanged(buffer.getInfo().id);
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java
deleted file mode 100644
index 2999b8483..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/IrcUser.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.SparseArray;
-
-import org.joda.time.DateTime;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.buffers.QueryBuffer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.AIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.irc.IrcUserUtils;
-import de.kuschku.util.irc.ModeUtils;
-
-import static de.kuschku.util.AndroidAssert.assertEquals;
-
-public class IrcUser extends AIrcUser {
-    @NonNull
-    private final SparseArray<DateTime> lastActivity = new SparseArray<>();
-    @NonNull
-    private final SparseArray<DateTime> lastSpokenTo = new SparseArray<>();
-    private final List<String> cachedChannels;
-    private final Set<String> channels = new HashSet<>();
-    private String user;
-    private String host;
-    private String nick;
-    private String realName;
-    private String account;
-    private boolean away;
-    private String awayMessage;
-    private DateTime idleTime;
-    private DateTime loginTime;
-    private String server;
-    private String ircOperator;
-    private int lastAwayMessage;
-    private String whoisServiceReply;
-    private String suserHost;
-    private boolean encrypted;
-    private WeakReference<QNetwork> network = new WeakReference<>(null);
-    private Set<Character> userModes;
-
-    public IrcUser(String server, String ircOperator, boolean away, int lastAwayMessage, DateTime idleTime, String whoisServiceReply, String suserHost, String nick, String realName, String account, String awayMessage, DateTime loginTime, boolean encrypted, List<String> channels, String host, String userModes, String user) {
-        this.server = server;
-        this.ircOperator = ircOperator;
-        this.away = away;
-        this.lastAwayMessage = lastAwayMessage;
-        this.idleTime = idleTime;
-        this.whoisServiceReply = whoisServiceReply;
-        this.suserHost = suserHost;
-        this.nick = nick;
-        this.realName = realName;
-        this.account = account;
-        this.awayMessage = awayMessage;
-        this.loginTime = loginTime;
-        this.encrypted = encrypted;
-        this.cachedChannels = channels;
-        this.host = host;
-        this.userModes = ModeUtils.toModes(userModes);
-        this.user = user;
-    }
-
-    @NonNull
-    public static IrcUser create(@NonNull String mask) {
-        String nick;
-        String host;
-        String user;
-
-        // Sometimes this is invoked with a nick instead, so we check
-        if (mask.contains("@")) {
-            nick = IrcUserUtils.getNick(mask);
-            host = IrcUserUtils.getHost(mask);
-            user = IrcUserUtils.getUser(mask);
-        } else {
-            nick = mask;
-            host = null;
-            user = null;
-        }
-
-        return new IrcUser(
-                null,
-                null,
-                false,
-                -1,
-                null,
-                null,
-                null,
-                nick,
-                null,
-                null,
-                null,
-                null,
-                false,
-                null,
-                host,
-                null,
-                user
-        );
-    }
-
-    @Override
-    public String user() {
-        return user;
-    }
-
-    @Override
-    public String host() {
-        return host;
-    }
-
-    @Override
-    public String nick() {
-        return nick;
-    }
-
-    @Override
-    public String realName() {
-        return realName;
-    }
-
-    @Override
-    public String account() {
-        return account;
-    }
-
-    @Override
-    public String hostmask() {
-        return String.format("%s!%s@%s", nick(), user(), host());
-    }
-
-    @Override
-    public boolean isAway() {
-        return away;
-    }
-
-    @Override
-    public String awayMessage() {
-        return awayMessage;
-    }
-
-    @Override
-    public DateTime idleTime() {
-        return idleTime;
-    }
-
-    @Override
-    public DateTime loginTime() {
-        return loginTime;
-    }
-
-    @Override
-    public String server() {
-        return server;
-    }
-
-    @Override
-    public String ircOperator() {
-        return ircOperator;
-    }
-
-    @Override
-    public int lastAwayMessage() {
-        return lastAwayMessage;
-    }
-
-    @Override
-    public String whoisServiceReply() {
-        return whoisServiceReply;
-    }
-
-    @Override
-    public String suserHost() {
-        return suserHost;
-    }
-
-    @Override
-    public boolean encrypted() {
-        return encrypted;
-    }
-
-    @Override
-    public QNetwork network() {
-        return network.get();
-    }
-
-    @NonNull
-    @Override
-    public String userModes() {
-        return ModeUtils.fromModes(userModes);
-    }
-
-    @NonNull
-    @Override
-    public List<String> channels() {
-        List<String> chanList = new ArrayList<>(channels.size());
-        for (String channel : channels) {
-            chanList.add(channel);
-        }
-        return chanList;
-    }
-
-    @Override
-    public DateTime lastChannelActivity(int id) {
-        return lastActivity.get(id);
-    }
-
-    @Override
-    public void setLastChannelActivity(int id, DateTime time) {
-        lastActivity.put(id, time);
-        _update();
-    }
-
-    @Override
-    public DateTime lastSpokenTo(int id) {
-        return lastSpokenTo.get(id);
-    }
-
-    @Override
-    public void setLastSpokenTo(int id, DateTime time) {
-        lastSpokenTo.put(id, time);
-        _update();
-    }
-
-    @Override
-    public void _setUser(String user) {
-        this.user = user;
-        _update();
-    }
-
-    @Override
-    public void _setHost(String host) {
-        this.host = host;
-        _update();
-    }
-
-    @Override
-    public void _setNick(String nick) {
-        this.nick = nick;
-        _update();
-    }
-
-    @Nullable
-    @Override
-    public String getObjectName() {
-        return String.format(Locale.US, "%d/%s", network().networkId(), nick());
-    }
-
-    @Override
-    public void setObjectName(@Nullable String objectName) {
-        network().ircUserNickChanged(nick, objectName.split("/")[1]);
-        super.setObjectName(objectName);
-    }
-
-    @Override
-    public void _setRealName(String realName) {
-        this.realName = realName;
-        _update();
-    }
-
-    @Override
-    public void _setAccount(String account) {
-        this.account = account;
-        _update();
-    }
-
-    @Override
-    public void _setAway(boolean away) {
-        this.away = away;
-        _update();
-    }
-
-    @Override
-    public void _setAwayMessage(String awayMessage) {
-        this.awayMessage = awayMessage;
-        _update();
-    }
-
-    @Override
-    public void _setIdleTime(DateTime idleTime) {
-        this.idleTime = idleTime;
-        _update();
-    }
-
-    @Override
-    public void _setLoginTime(DateTime loginTime) {
-        this.loginTime = loginTime;
-        _update();
-    }
-
-    @Override
-    public void _setServer(String server) {
-        this.server = server;
-        _update();
-    }
-
-    @Override
-    public void _setIrcOperator(String ircOperator) {
-        this.ircOperator = ircOperator;
-        _update();
-    }
-
-    @Override
-    public void _setLastAwayMessage(int lastAwayMessage) {
-        this.lastAwayMessage = lastAwayMessage;
-        _update();
-    }
-
-    @Override
-    public void _setWhoisServiceReply(String whoisServiceReply) {
-        this.whoisServiceReply = whoisServiceReply;
-        _update();
-    }
-
-    @Override
-    public void _setSuserHost(String suserHost) {
-        this.suserHost = suserHost;
-        _update();
-    }
-
-    @Override
-    public void _setEncrypted(boolean encrypted) {
-        this.encrypted = encrypted;
-        _update();
-    }
-
-    @Override
-    public void _updateHostmask(@NonNull String mask) {
-        if (Objects.equals(mask, hostmask()))
-            return;
-
-        setUser(IrcUserUtils.getUser(mask));
-        setHost(IrcUserUtils.getHost(mask));
-        _update();
-    }
-
-    @Override
-    public void _setUserModes(String modes) {
-        this.userModes = ModeUtils.toModes(modes);
-        _update();
-    }
-
-    @Override
-    public void _joinChannel(@NonNull QIrcChannel channel) {
-        _joinChannel(channel, false);
-        _update();
-    }
-
-    @Override
-    public void _joinChannel(@NonNull QIrcChannel channel, boolean skip_channel_join) {
-        if (!channels.contains(channel.name())) {
-            channels.add(channel.name());
-            if (!skip_channel_join)
-                channel._joinIrcUser(this);
-        }
-        _update();
-    }
-
-    @Override
-    public void _joinChannel(String channelname) {
-        _joinChannel(network().newIrcChannel(channelname));
-        _update();
-    }
-
-    @Override
-    public void _partChannel(@NonNull QIrcChannel channel) {
-        _partChannel(channel, false);
-        _update();
-    }
-
-    @Override
-    public void _partChannel(@NonNull QIrcChannel channel, boolean skip_channel_part) {
-        if (channels.contains(channel)) {
-            channels.remove(channel);
-            if (!skip_channel_part)
-                channel._part(this);
-            /*
-            if (channels.isEmpty() && !network().isMe(this))
-                _quit();
-            */
-        }
-        _update();
-    }
-
-    @Override
-    public void _partChannel(String channelname) {
-        _partChannel(network().ircChannel(channelname));
-        _update();
-    }
-
-    @Override
-    public void _quit() {
-        List<String> channels = new ArrayList<>(this.channels);
-        this.channels.clear();
-        QNetwork network = network();
-        if (network != null) {
-            for (String channel : channels) {
-                network.ircChannel(channel)._part(this);
-            }
-            network._removeIrcUser(this);
-        }
-        _update();
-    }
-
-    @Override
-    public void _addUserModes(@Nullable String modes) {
-        if (modes == null || modes.isEmpty())
-            return;
-
-        userModes.addAll(ModeUtils.toModes(modes));
-        _update();
-    }
-
-    @Override
-    public void _removeUserModes(@Nullable String modes) {
-        if (modes == null || modes.isEmpty())
-            return;
-
-        userModes.removeAll(ModeUtils.toModes(modes));
-        _update();
-    }
-
-    @Override
-    public void init(QNetwork network, Client client) {
-        this.network = new WeakReference<>(network);
-        this.client = client;
-
-        if (cachedChannels != null)
-            for (String channelName : cachedChannels) {
-                network().newIrcChannel(channelName);
-                channels.add(channelName);
-            }
-        _update();
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        String[] split = objectName.split("/", 2);
-        assertEquals(split.length, 2);
-        init(client.networkManager().network(Integer.parseInt(split[0])), client);
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-    }
-
-    @Override
-    public void _update(QIrcUser from) {
-    }
-
-    @Override
-    public void _update() {
-        super._update();
-        for (String channel : this.channels) {
-            QNetwork network = this.network();
-            if (network != null) {
-                QIrcChannel channel1 = network.ircChannel(channel);
-                if (channel1 != null) {
-                    channel1.users().notifyItemChanged(nick);
-                }
-            }
-        }
-        QueryBuffer user = client.bufferManager().user(this);
-        if (user != null)
-            client.bufferManager().bufferIds().notifyItemChanged(user.getInfo().id);
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "IrcUser{" + hostmask() + '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java
deleted file mode 100644
index e21263dca..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/Network.java
+++ /dev/null
@@ -1,909 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Observable;
-import java.util.Observer;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.localtypes.buffers.StatusBuffer;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.ANetwork;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.CompatibilityUtils;
-import de.kuschku.util.irc.IrcCaseMappers;
-import de.kuschku.util.irc.IrcUserUtils;
-import de.kuschku.util.irc.ModeUtils;
-import de.kuschku.util.irc.chanmodes.IrcModeProvider;
-import de.kuschku.util.irc.chanmodes.IrcModeProviderFactory;
-
-public class Network extends ANetwork implements Observer {
-    private final Map<String, QIrcChannel> channels;
-    @NonNull
-    private final Map<String, QIrcUser> nicks;
-    private final Map<String, String> supports;
-    private ConnectionState connectionState;
-    private boolean autoAwayActive;
-    private String currentServer;
-    private boolean isConnected;
-    private int latency;
-    private String myNick;
-
-    private NetworkInfo networkInfo;
-
-    private String defaultCodecForServer = "UTF-8";
-    private String defaultCodecForEncoding = "UTF-8";
-    private String defaultCodecForDecoding = "UTF-8";
-
-    private List<String> prefixes;
-    private List<String> prefixModes;
-    private IrcModeProvider modeProvider;
-    private IrcCaseMappers.IrcCaseMapper caseMapper;
-
-    public Network(Collection<QIrcChannel> channels,
-                   Collection<QIrcUser> nicks,
-                   List<NetworkServer> serverList, Map<String, String> supports,
-                   int connectionState, String currentServer, boolean isConnected, int latency,
-                   String myNick, NetworkInfo networkInfo) {
-        this.supports = new HashMap<>(supports);
-        this.connectionState = ConnectionState.of(connectionState);
-        this.currentServer = currentServer;
-        this.isConnected = isConnected;
-        this.latency = latency;
-        this.myNick = myNick;
-        _setNetworkInfo(networkInfo);
-        this.networkInfo._setServerList(serverList);
-
-        updateCaseMapper();
-
-        this.channels = new HashMap<>();
-        for (QIrcChannel qIrcChannel : channels) {
-            this.channels.put(caseMapper.toLowerCase(qIrcChannel.name()), qIrcChannel);
-        }
-        this.nicks = new HashMap<>();
-        for (QIrcUser qIrcUser : nicks) {
-            this.nicks.put(caseMapper.toLowerCase(qIrcUser.nick()), qIrcUser);
-        }
-    }
-
-    public Network(Collection<QIrcChannel> channels, Collection<QIrcUser> users, Map<String, String> supports, int connectionState, String currentServer, boolean isConnected, int latency, String myNick, NetworkInfo networkInfo) {
-        this(channels, users, Collections.emptyList(), supports, connectionState, currentServer, isConnected, latency, myNick, networkInfo);
-    }
-
-    public Network(Collection<QIrcChannel> channels, Collection<QIrcUser> nicks, List<NetworkServer> serverList, Map<String, String> supports, ConnectionState connectionState, String currentServer, boolean isConnected, int latency, String myNick, NetworkInfo networkInfo) {
-        this.supports = new HashMap<>(supports);
-        this.connectionState = connectionState;
-        this.currentServer = currentServer;
-        this.isConnected = isConnected;
-        this.latency = latency;
-        this.myNick = myNick;
-        _setNetworkInfo(networkInfo);
-        this.networkInfo._setServerList(serverList);
-
-        updateCaseMapper();
-
-        this.channels = new HashMap<>();
-        for (QIrcChannel qIrcChannel : channels) {
-            this.channels.put(caseMapper.toLowerCase(qIrcChannel.name()), qIrcChannel);
-        }
-        this.nicks = new HashMap<>();
-        for (QIrcUser qIrcUser : nicks) {
-            this.nicks.put(caseMapper.toLowerCase(qIrcUser.nick()), qIrcUser);
-        }
-    }
-
-    @NonNull
-    public static QNetwork create(int network) {
-        return new Network(
-                Collections.emptyList(),
-                Collections.emptyList(),
-                Collections.emptyList(),
-                Collections.emptyMap(),
-                ConnectionState.Disconnected,
-                "",
-                false,
-                0,
-                "",
-                NetworkInfo.create(network)
-        );
-    }
-
-    @Override
-    public int networkId() {
-        return networkInfo.networkId();
-    }
-
-    @Override
-    public boolean isMyNick(String nick) {
-        return caseMapper.equalsIgnoreCase(myNick, nick);
-    }
-
-    @Override
-    public boolean isMe(@NonNull QIrcUser ircuser) {
-        return caseMapper.equalsIgnoreCase(ircuser.nick(), myNick());
-    }
-
-    @Override
-    public boolean isChannelName(@NonNull String channelname) {
-        if (channelname.isEmpty())
-            return false;
-
-        if (supports("CHANTYPES"))
-            return support("CHANTYPES").contains(channelname.substring(0, 1));
-        else
-            return "#&!+".contains(channelname.substring(0, 1));
-    }
-
-    @Override
-    public boolean isConnected() {
-        return isConnected;
-    }
-
-    @Override
-    public ConnectionState connectionState() {
-        return connectionState;
-    }
-
-    @Override
-    public String prefixToMode(char prefix) {
-        return prefixToMode(ModeUtils.fromMode(prefix));
-    }
-
-    @Override
-    public String prefixToMode(String prefix) {
-        if (prefixes().contains(prefix))
-            return prefixModes().get(prefixes().indexOf(prefix));
-        else
-            return "";
-    }
-
-    @Override
-    public String modeToPrefix(char ch) {
-        return modeToPrefix(ModeUtils.fromMode(ch));
-    }
-
-    @Override
-    public String modeToPrefix(String mode) {
-        if (prefixModes().contains(mode))
-            return prefixes().get(prefixModes().indexOf(mode));
-        else
-            return "";
-    }
-
-    @Override
-    public int modeToIndex(String mode) {
-        int index = prefixModes().indexOf(mode);
-        return index == -1 ? Integer.MAX_VALUE : index;
-    }
-
-    @Override
-    public int lowestModeIndex(String mode) {
-        int lowestIndex = Integer.MAX_VALUE;
-        for (String m : CompatibilityUtils.partStringByChar(mode)) {
-            int index = modeToIndex(m);
-            if (index < lowestIndex)
-                lowestIndex = index;
-        }
-        return lowestIndex;
-    }
-
-    @NonNull
-    @Override
-    public ChannelModeType channelModeType(char mode) {
-        return channelModeType(ModeUtils.fromMode(mode));
-    }
-
-    @NonNull
-    @Override
-    public ChannelModeType channelModeType(@NonNull String mode) {
-        String chanmodes = support("CHANMODES");
-        if (chanmodes.isEmpty())
-            return ChannelModeType.NOT_A_CHANMODE;
-
-        String[] split = chanmodes.split(",");
-        for (int i = 0; i < split.length; i++) {
-            if (split[i].contains(mode)) {
-                return ChannelModeType.of(i);
-            }
-        }
-        return ChannelModeType.NOT_A_CHANMODE;
-    }
-
-    @Override
-    public String networkName() {
-        return networkInfo.networkName();
-    }
-
-    @Override
-    public String currentServer() {
-        return currentServer;
-    }
-
-    @Override
-    public String myNick() {
-        return myNick;
-    }
-
-    @Override
-    public int latency() {
-        return latency;
-    }
-
-    @Override
-    public QIrcUser me() {
-        return ircUser(myNick());
-    }
-
-    @Override
-    public int identity() {
-        return networkInfo.identity();
-    }
-
-    @NonNull
-    @Override
-    public List<String> nicks() {
-        List<String> nicks = new ArrayList<>();
-        for (QIrcUser user : this.nicks.values()) {
-            nicks.add(user.nick());
-        }
-        return nicks;
-    }
-
-    @NonNull
-    @Override
-    public List<String> channels() {
-        return new ArrayList<>(channels.keySet());
-    }
-
-    @Override
-    public boolean useRandomServer() {
-        return networkInfo.useRandomServer();
-    }
-
-    @Override
-    public List<String> perform() {
-        return networkInfo.perform();
-    }
-
-    @Override
-    public boolean useAutoIdentify() {
-        return networkInfo.useAutoIdentify();
-    }
-
-    @Override
-    public String autoIdentifyService() {
-        return networkInfo.autoIdentifyService();
-    }
-
-    @Override
-    public String autoIdentifyPassword() {
-        return networkInfo.autoIdentifyPassword();
-    }
-
-    @Override
-    public boolean useSasl() {
-        return networkInfo.useSasl();
-    }
-
-    @Override
-    public String saslAccount() {
-        return networkInfo.saslAccount();
-    }
-
-    @Override
-    public String saslPassword() {
-        return networkInfo.saslPassword();
-    }
-
-    @Override
-    public boolean useAutoReconnect() {
-        return networkInfo.useAutoReconnect();
-    }
-
-    @Override
-    public int autoReconnectInterval() {
-        return networkInfo.autoReconnectInterval();
-    }
-
-    @Override
-    public short autoReconnectRetries() {
-        return networkInfo.autoReconnectRetries();
-    }
-
-    @Override
-    public boolean unlimitedReconnectRetries() {
-        return networkInfo.unlimitedReconnectRetries();
-    }
-
-    @Override
-    public boolean rejoinChannels() {
-        return networkInfo.rejoinChannels();
-    }
-
-    @Override
-    public NetworkInfo networkInfo() {
-        return networkInfo;
-    }
-
-    @Override
-    public List<String> prefixes() {
-        if (prefixes == null)
-            determinePrefixes();
-        return prefixes;
-    }
-
-    @Override
-    public List<String> prefixModes() {
-        if (prefixModes == null)
-            determinePrefixes();
-        return prefixModes;
-    }
-
-    @Override
-    public IrcModeProvider modeProvider() {
-        if (modeProvider == null)
-            modeProvider = IrcModeProviderFactory.identifyServer(supports.get("CHANMODES"));
-        return modeProvider;
-    }
-
-    @Override
-    public void determinePrefixes() {
-        // seems like we have to construct them first
-        String prefix = support("PREFIX");
-
-        if (prefix.startsWith("(") && prefix.contains(")")) {
-            String[] data = prefix.substring(1).split("\\)");
-            prefixes = Arrays.asList(CompatibilityUtils.partStringByChar(data[1]));
-            prefixModes = Arrays.asList(CompatibilityUtils.partStringByChar(data[0]));
-        } else {
-            List<String> defaultPrefixes = Arrays.asList(CompatibilityUtils.partStringByChar("~&@%+"));
-            List<String> defaultPrefixModes = Arrays.asList(CompatibilityUtils.partStringByChar("qaohv"));
-
-            if (prefix.isEmpty()) {
-                prefixes = defaultPrefixes;
-                prefixModes = defaultPrefixModes;
-                return;
-            }
-
-            // clear the existing modes, just in case we're run multiple times
-            prefixes.clear();
-            prefixModes.clear();
-
-            // we just assume that in PREFIX are only prefix chars stored
-            for (int i = 0; i < defaultPrefixes.size(); i++) {
-                if (prefix.contains(defaultPrefixes.get(i))) {
-                    prefixes.add(defaultPrefixes.get(i));
-                    prefixModes.add(defaultPrefixModes.get(i));
-                }
-            }
-            // check for success
-            if (!prefixes.isEmpty())
-                return;
-
-            // well... our assumption was obviously wrong...
-            // check if it's only prefix modes
-            for (int i = 0; i < defaultPrefixes.size(); i++) {
-                if (prefix.contains(defaultPrefixModes.get(i))) {
-                    prefixes.add(defaultPrefixes.get(i));
-                    prefixModes.add(defaultPrefixModes.get(i));
-                }
-            }
-            // now we've done all we've could...
-        }
-    }
-
-    @Override
-    public boolean supports(String param) {
-        return supports.containsKey(param);
-    }
-
-    @Override
-    public String support(@NonNull String param) {
-        String key = param.toUpperCase(Locale.US);
-        if (supports.containsKey(key))
-            return supports.get(key);
-        else
-            return "";
-    }
-
-    @Override
-    public QIrcUser ircUser(String nickname) {
-        return nicks.get(caseMapper.toLowerCase(nickname));
-    }
-
-    @NonNull
-    @Override
-    public List<QIrcUser> ircUsers() {
-        return new ArrayList<>(nicks.values());
-    }
-
-    @Override
-    public int ircUserCount() {
-        return nicks.size();
-    }
-
-    @Override
-    public QIrcChannel newIrcChannel(@NonNull String channelname) {
-        if (!channels.containsKey(caseMapper.toLowerCase(channelname))) {
-            QIrcChannel channel = IrcChannel.create(channelname);
-            channels.put(caseMapper.toLowerCase(channelname), channel);
-            channel.init(this, client);
-        }
-        return channels.get(caseMapper.toLowerCase(channelname));
-    }
-
-    @Nullable
-    @Override
-    public QIrcChannel ircChannel(String channelname) {
-        channelname = caseMapper.toLowerCase(channelname);
-        if (channels.containsKey(channelname)) {
-            return channels.get(channelname);
-        } else {
-            return null;
-        }
-    }
-
-    @NonNull
-    @Override
-    public List<QIrcChannel> ircChannels() {
-        return new ArrayList<>(channels.values());
-    }
-
-    @Override
-    public int ircChannelCount() {
-        return channels.size();
-    }
-
-    @Override
-    public String codecForServer() {
-        return networkInfo.codecForServer();
-    }
-
-    @Override
-    public String codecForEncoding() {
-        return networkInfo.codecForEncoding();
-    }
-
-    @Override
-    public String codecForDecoding() {
-        return networkInfo.codecForDecoding();
-    }
-
-    @Override
-    public String defaultCodecForServer() {
-        return defaultCodecForServer;
-    }
-
-    @Override
-    public String defaultCodecForEncoding() {
-        return defaultCodecForEncoding;
-    }
-
-    @Override
-    public String defaultCodecForDecoding() {
-        return defaultCodecForDecoding;
-    }
-
-    @Override
-    public void setDefaultCodecForServer(String name) {
-        this.defaultCodecForServer = name;
-    }
-
-    @Override
-    public void setDefaultCodecForEncoding(String name) {
-        this.defaultCodecForEncoding = name;
-    }
-
-    @Override
-    public void setDefaultCodecForDecoding(String name) {
-        this.defaultCodecForDecoding = name;
-    }
-
-    @Override
-    public boolean autoAwayActive() {
-        return autoAwayActive;
-    }
-
-    @Override
-    public void _setAutoAwayActive(boolean active) {
-        this.autoAwayActive = active;
-        _update();
-    }
-
-    @Override
-    public void _setNetworkName(String networkName) {
-        this.networkInfo._setNetworkName(networkName);
-    }
-
-    @Override
-    public void _setCurrentServer(String currentServer) {
-        this.currentServer = currentServer;
-        _update();
-    }
-
-    @Override
-    public void _setConnected(boolean isConnected) {
-        this.isConnected = isConnected;
-        _update();
-        updateDisplay();
-    }
-
-    @Override
-    public void _setConnectionState(int state) {
-        this.connectionState = ConnectionState.of(state);
-        _update();
-    }
-
-    @Override
-    public void _setMyNick(String mynick) {
-        this.myNick = mynick;
-        _update();
-    }
-
-    @Override
-    public void _setLatency(int latency) {
-        this.latency = latency;
-        _update();
-    }
-
-    @Override
-    public void _setIdentity(int identityId) {
-        this.networkInfo._setIdentity(identityId);
-    }
-
-    @Override
-    public void _setServerList(List<NetworkServer> serverList) {
-        this.networkInfo._setServerList(serverList);
-    }
-
-    @Override
-    public void _setUseRandomServer(boolean useRandomServer) {
-        this.networkInfo._setUseRandomServer(useRandomServer);
-    }
-
-    @Override
-    public void _setPerform(List<String> performs) {
-        this.networkInfo._setPerform(performs);
-    }
-
-    @Override
-    public void _setUseAutoIdentify(boolean useAutoIdentify) {
-        this.networkInfo._setUseAutoIdentify(useAutoIdentify);
-    }
-
-    @Override
-    public void _setAutoIdentifyService(String autoIdentifyService) {
-        this.networkInfo._setAutoIdentifyService(autoIdentifyService);
-    }
-
-    @Override
-    public void _setAutoIdentifyPassword(String autoIdentifyPassword) {
-        this.networkInfo._setAutoIdentifyPassword(autoIdentifyPassword);
-    }
-
-    @Override
-    public void _setUseSasl(boolean useSasl) {
-        this.networkInfo._setUseSasl(useSasl);
-    }
-
-    @Override
-    public void _setSaslAccount(String saslAccount) {
-        this.networkInfo._setSaslAccount(saslAccount);
-    }
-
-    @Override
-    public void _setSaslPassword(String saslPassword) {
-        this.networkInfo._setSaslPassword(saslPassword);
-    }
-
-    @Override
-    public void _setUseAutoReconnect(boolean useAutoReconnect) {
-        this.networkInfo._setUseAutoReconnect(useAutoReconnect);
-    }
-
-    @Override
-    public void _setAutoReconnectInterval(int autoReconnectInterval) {
-        this.networkInfo._setAutoReconnectInterval(autoReconnectInterval);
-    }
-
-    @Override
-    public void _setAutoReconnectRetries(short autoReconnectRetries) {
-        this.networkInfo._setAutoReconnectRetries(autoReconnectRetries);
-    }
-
-    @Override
-    public void _setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries) {
-        this.networkInfo._setUnlimitedReconnectRetries(unlimitedReconnectRetries);
-    }
-
-    @Override
-    public void _setRejoinChannels(boolean rejoinChannels) {
-        this.networkInfo._setRejoinChannels(rejoinChannels);
-    }
-
-    @Override
-    public void _setCodecForServer(String codecName) {
-        this.networkInfo._setCodecForServer(codecName);
-    }
-
-    @Override
-    public void _setCodecForEncoding(String codecName) {
-        this.networkInfo._setCodecForEncoding(codecName);
-    }
-
-    @Override
-    public void _setCodecForDecoding(String codecName) {
-        this.networkInfo._setCodecForDecoding(codecName);
-    }
-
-    @Override
-    public void _addSupport(String param) {
-        _addSupport(param, "");
-    }
-
-    @Override
-    public void _addSupport(String param, String value) {
-        supports.put(param, value);
-        _update();
-        updateCaseMapper();
-    }
-
-    @Override
-    public IrcCaseMappers.IrcCaseMapper caseMapper() {
-        return caseMapper;
-    }
-
-    private void updateCaseMapper() {
-        String mapping = support("CASEMAPPING");
-        if (mapping == null) {
-            caseMapper = IrcCaseMappers.unicode;
-        } else {
-            switch (mapping.toLowerCase(Locale.US)) {
-                case "rfc1459":
-                case "strict-rfc1459":
-                    caseMapper = IrcCaseMappers.irc;
-                case "ascii":
-                default:
-                    caseMapper = IrcCaseMappers.unicode;
-            }
-        }
-    }
-
-    @Override
-    public void _removeSupport(String param) {
-        supports.remove(param);
-        _update();
-        updateCaseMapper();
-    }
-
-    @Override
-    public void _addIrcUser(@NonNull String hostmask) {
-        newIrcUser(hostmask);
-    }
-
-    @Override
-    public void _addIrcChannel(@NonNull String channel) {
-        newIrcChannel(channel);
-    }
-
-    @Override
-    public QIrcUser _updateNickFromMask(@NonNull String mask) {
-        String nick = caseMapper.toLowerCase(IrcUserUtils.getNick(mask));
-        QIrcUser user;
-
-        if (nicks.containsKey(nick)) {
-            user = nicks.get(nick);
-            user.updateHostmask(mask);
-        } else {
-            user = newIrcUser(mask);
-        }
-        _update();
-        return user;
-    }
-
-    @NonNull
-    private QIrcUser newIrcUser(@NonNull String mask) {
-        IrcUser user = IrcUser.create(mask);
-        user.init(this, client);
-        client.requestInitObject("IrcUser", user.getObjectName());
-        nicks.put(caseMapper.toLowerCase(user.nick()), user);
-        _update();
-        return user;
-    }
-
-    @Override
-    public void ircUserNickChanged(@NonNull String oldNick, @NonNull String newNick) {
-        if (!caseMapper.equalsIgnoreCase(oldNick, newNick)) {
-            nicks.put(caseMapper.toLowerCase(newNick), nicks.remove(caseMapper.toLowerCase(oldNick)));
-            for (QIrcChannel channel : channels.values()) {
-                channel._ircUserNickChanged(oldNick, newNick);
-            }
-            _update();
-        }
-
-        if (caseMapper.equalsIgnoreCase(myNick(), oldNick))
-            _setMyNick(newNick);
-    }
-
-    @Override
-    public void _connect() {
-        // Do nothing
-    }
-
-    @Override
-    public void _disconnect() {
-        // Do nothing
-    }
-
-    @Override
-    public void _setNetworkInfo(NetworkInfo info) {
-        if (this.networkInfo != null)
-            this.networkInfo.deleteObserver(this);
-        this.networkInfo = info;
-        if (this.networkInfo != null)
-            this.networkInfo.addObserver(this);
-        _update();
-        updateDisplay();
-    }
-
-    @Override
-    public void _removeIrcUser(QIrcUser ircuser) {
-        if (!nicks.containsValue(ircuser))
-            return;
-
-        for (Map.Entry<String, QIrcUser> entry : nicks.entrySet()) {
-            if (entry.getValue() == ircuser) {
-                nicks.remove(entry.getKey());
-                break;
-            }
-        }
-        _update();
-    }
-
-    @Override
-    public void _removeIrcChannel(QIrcChannel ircChannel) {
-        if (!channels.containsValue(ircChannel))
-            return;
-
-        for (Map.Entry<String, QIrcChannel> entry : channels.entrySet()) {
-            if (entry.getValue() == ircChannel) {
-                channels.remove(entry.getKey());
-                break;
-            }
-        }
-        _update();
-    }
-
-    @Override
-    public void _removeChansAndUsers() {
-        nicks.clear();
-        channels.clear();
-        _update();
-    }
-
-    @Override
-    public void _addIrcChannel(@NonNull IrcChannel ircChannel) {
-        channels.put(caseMapper.toLowerCase(ircChannel.name()), ircChannel);
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-
-    }
-
-    @Override
-    public void _update(QNetwork from) {
-
-    }
-
-
-    @Override
-    public void _update() {
-        super._update();
-        if (client != null) {
-            int position = client.networkManager().networks().indexOf(this);
-            if (position != -1)
-                client.networkManager().networks().notifyItemChanged(position);
-        }
-    }
-
-    private void updateDisplay() {
-        if (client != null && client.connectionStatus() != ConnectionChangeEvent.Status.INITIALIZING_DATA && client.bufferViewManager() != null) {
-            StatusBuffer buffer = client.bufferManager().network(networkInfo.networkId());
-            if (buffer != null) {
-                buffer.updateStatus();
-                for (QBufferViewConfig qBufferViewConfig : client.bufferViewManager().bufferViewConfigs()) {
-                    qBufferViewConfig.bufferIds().notifyItemChanged(buffer.getInfo().id);
-                    qBufferViewConfig.networkList().notifyItemChanged(this);
-                }
-            } else {
-                for (QBufferViewConfig qBufferViewConfig : client.bufferViewManager().bufferViewConfigs()) {
-                    qBufferViewConfig.networkList().notifyItemChanged(this);
-                }
-            }
-        }
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        networkInfo._setNetworkId(Integer.parseInt(objectName));
-        client.networkManager().createNetwork(this);
-        for (QIrcChannel channel : channels.values()) {
-            ((IrcChannel) channel).init(networkId() + "/" + channel.name(), provider, client);
-        }
-        for (QIrcUser user : nicks.values()) {
-            ((IrcUser) user).init(networkId() + "/" + user.nick(), provider, client);
-        }
-    }
-
-    public void update(Observable observable, Object data) {
-        _update();
-    }
-
-    @Override
-    public List<NetworkServer> serverList() {
-        return networkInfo.serverList();
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return "Network{" +
-                "name='" + networkInfo.networkName() + '\'' +
-                ", id='" + networkInfo.networkId() + '\'' +
-                '}';
-    }
-
-    @Override
-    public boolean equals(@Nullable Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Network network = (Network) o;
-
-        return networkInfo != null ? networkInfo.equals(network.networkInfo) : network.networkInfo == null;
-
-    }
-
-    @Override
-    public int hashCode() {
-        return networkInfo != null ? networkInfo.hashCode() : 0;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java
deleted file mode 100644
index 632d85031..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkConfig.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.abstracts.ANetworkConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig;
-
-public class NetworkConfig extends ANetworkConfig {
-    private boolean standardCtcp;
-
-    private boolean autoWhoEnabled;
-    private int autoWhoDelay;
-    private int autoWhoNickLimit;
-    private int autoWhoInterval;
-
-    private boolean pingTimeoutEnabled;
-    private int maxPingCount;
-    private int pingInterval;
-
-    public NetworkConfig(boolean standardCtcp, boolean autoWhoEnabled, int autoWhoDelay, int autoWhoNickLimit, int autoWhoInterval, boolean pingTimeoutEnabled, int maxPingCount, int pingInterval) {
-        this.standardCtcp = standardCtcp;
-        this.autoWhoEnabled = autoWhoEnabled;
-        this.autoWhoDelay = autoWhoDelay;
-        this.autoWhoNickLimit = autoWhoNickLimit;
-        this.autoWhoInterval = autoWhoInterval;
-        this.pingTimeoutEnabled = pingTimeoutEnabled;
-        this.maxPingCount = maxPingCount;
-        this.pingInterval = pingInterval;
-    }
-
-    @Override
-    public boolean pingTimeoutEnabled() {
-        return pingTimeoutEnabled;
-    }
-
-    @Override
-    public void _setPingTimeoutEnabled(boolean pingTimeoutEnabled) {
-        this.pingTimeoutEnabled = pingTimeoutEnabled;
-    }
-
-    @Override
-    public void _requestSetPingTimeoutEnabled(boolean pingTimeoutEnabled) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public int pingInterval() {
-        return pingInterval;
-    }
-
-    @Override
-    public void _setPingInterval(int pingInterval) {
-        this.pingInterval = pingInterval;
-    }
-
-    @Override
-    public void _requestSetPingInterval(int pingInterval) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public int maxPingCount() {
-        return maxPingCount;
-    }
-
-    @Override
-    public void _setMaxPingCount(int maxPingCount) {
-        this.maxPingCount = maxPingCount;
-    }
-
-    @Override
-    public void _requestSetMaxPingCount(int maxPingCount) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public boolean autoWhoEnabled() {
-        return autoWhoEnabled;
-    }
-
-    @Override
-    public void _setAutoWhoEnabled(boolean autoWhoEnabled) {
-        this.autoWhoEnabled = autoWhoEnabled;
-    }
-
-    @Override
-    public void _requestSetAutoWhoEnabled(boolean autoWhoEnabled) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public int autoWhoInterval() {
-        return autoWhoInterval;
-    }
-
-    @Override
-    public void _setAutoWhoInterval(int autoWhoInterval) {
-        this.autoWhoInterval = autoWhoInterval;
-    }
-
-    @Override
-    public void _requestSetAutoWhoInterval(int autoWhoInterval) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public int autoWhoNickLimit() {
-        return autoWhoNickLimit;
-    }
-
-    @Override
-    public void _setAutoWhoNickLimit(int autoWhoNickLimit) {
-        this.autoWhoNickLimit = autoWhoNickLimit;
-    }
-
-    @Override
-    public void _requestSetAutoWhoNickLimit(int autoWhoNickLimit) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public int autoWhoDelay() {
-        return autoWhoDelay;
-    }
-
-    @Override
-    public void _setAutoWhoDelay(int autoWhoDelay) {
-        this.autoWhoDelay = autoWhoDelay;
-    }
-
-    @Override
-    public void _requestSetAutoWhoDelay(int autoWhoDelay) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-    }
-
-    @Override
-    public boolean standardCtcp() {
-        return standardCtcp;
-    }
-
-    @Override
-    public void _setStandardCtcp(boolean standardCtcp) {
-        this.standardCtcp = standardCtcp;
-    }
-
-    @Override
-    public void _requestSetStandardCtcp(boolean standardCtcp) {
-        // Do nothing, we’re on the client – the server will receive the sync just as expected
-
-    }
-
-    @Override
-    public void _update(Map<String, QVariant> from) {
-
-    }
-
-    @Override
-    public void _update(QNetworkConfig from) {
-
-    }
-
-    @Override
-    public void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client) {
-        super.init(objectName, provider, client);
-        client.setGlobalNetworkConfig(this);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkInfo.java
deleted file mode 100644
index bbfd54676..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/impl/NetworkInfo.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Observable;
-
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.util.backports.Objects;
-
-public class NetworkInfo extends Observable {
-    private int networkId;
-    private String networkName;
-    private int identity;
-
-    private String codecForServer;
-    private String codecForEncoding;
-    private String codecForDecoding;
-
-    private List<NetworkServer> serverList;
-    private boolean useRandomServer;
-
-    private List<String> perform;
-
-    private boolean useAutoIdentify;
-    private String autoIdentifyService;
-    private String autoIdentifyPassword;
-
-    private boolean useSasl;
-    private String saslAccount;
-    private String saslPassword;
-
-    private boolean useAutoReconnect;
-    private int autoReconnectInterval;
-    private short autoReconnectRetries;
-    private boolean unlimitedReconnectRetries;
-    private boolean rejoinChannels;
-
-    public NetworkInfo(int networkId, String networkName, int identity, String codecForServer, String codecForEncoding, String codecForDecoding, List<NetworkServer> serverList, boolean useRandomServer, List<String> perform, boolean useAutoIdentify, String autoIdentifyService, String autoIdentifyPassword, boolean useSasl, String saslAccount, String saslPassword, boolean useAutoReconnect, int autoReconnectInterval, short autoReconnectRetries, boolean unlimitedReconnectRetries, boolean rejoinChannels) {
-        this.networkId = networkId;
-        this.networkName = networkName;
-        this.identity = identity;
-        this.codecForServer = codecForServer;
-        this.codecForEncoding = codecForEncoding;
-        this.codecForDecoding = codecForDecoding;
-        this.serverList = serverList;
-        this.useRandomServer = useRandomServer;
-        this.perform = perform;
-        this.useAutoIdentify = useAutoIdentify;
-        this.autoIdentifyService = autoIdentifyService;
-        this.autoIdentifyPassword = autoIdentifyPassword;
-        this.useSasl = useSasl;
-        this.saslAccount = saslAccount;
-        this.saslPassword = saslPassword;
-        this.useAutoReconnect = useAutoReconnect;
-        this.autoReconnectInterval = autoReconnectInterval;
-        this.autoReconnectRetries = autoReconnectRetries;
-        this.unlimitedReconnectRetries = unlimitedReconnectRetries;
-        this.rejoinChannels = rejoinChannels;
-    }
-
-    @NonNull
-    public static NetworkInfo create(int networkId) {
-        return new NetworkInfo(
-                networkId,
-                "<not initialized>",
-                0,
-                null,
-                null,
-                null,
-                Collections.emptyList(),
-                false,
-                Collections.emptyList(),
-                false,
-                null,
-                null,
-                false,
-                null,
-                null,
-                false,
-                60,
-                (short) 10,
-                false,
-                false
-        );
-    }
-
-    public boolean rejoinChannels() {
-        return rejoinChannels;
-    }
-
-    public void _setRejoinChannels(boolean rejoinChannels) {
-        this.rejoinChannels = rejoinChannels;
-    }
-
-    public int networkId() {
-        return networkId;
-    }
-
-    public void _setNetworkId(int networkId) {
-        this.networkId = networkId;
-        _update();
-    }
-
-    public String networkName() {
-        return networkName;
-    }
-
-    public void _setNetworkName(String networkName) {
-        this.networkName = networkName;
-        _update();
-    }
-
-    public int identity() {
-        return identity;
-    }
-
-    public void _setIdentity(int identity) {
-        this.identity = identity;
-        _update();
-    }
-
-    public String codecForServer() {
-        return codecForServer;
-    }
-
-    public void _setCodecForServer(String codecForServer) {
-        this.codecForServer = codecForServer;
-        _update();
-    }
-
-    public String codecForEncoding() {
-        return codecForEncoding;
-    }
-
-    public void _setCodecForEncoding(String codecForEncoding) {
-        this.codecForEncoding = codecForEncoding;
-        _update();
-    }
-
-    public String codecForDecoding() {
-        return codecForDecoding;
-    }
-
-    public void _setCodecForDecoding(String codecForDecoding) {
-        this.codecForDecoding = codecForDecoding;
-        _update();
-    }
-
-    public List<NetworkServer> serverList() {
-        return serverList;
-    }
-
-    public void _setServerList(List<NetworkServer> serverList) {
-        this.serverList = serverList;
-        _update();
-    }
-
-    public boolean useRandomServer() {
-        return useRandomServer;
-    }
-
-    public void _setUseRandomServer(boolean useRandomServer) {
-        this.useRandomServer = useRandomServer;
-        _update();
-    }
-
-    public List<String> perform() {
-        return perform;
-    }
-
-    public void _setPerform(List<String> perform) {
-        this.perform = perform;
-        _update();
-    }
-
-    public boolean useAutoIdentify() {
-        return useAutoIdentify;
-    }
-
-    public void _setUseAutoIdentify(boolean useAutoIdentify) {
-        this.useAutoIdentify = useAutoIdentify;
-        _update();
-    }
-
-    public String autoIdentifyService() {
-        return autoIdentifyService;
-    }
-
-    public void _setAutoIdentifyService(String autoIdentifyService) {
-        this.autoIdentifyService = autoIdentifyService;
-        _update();
-    }
-
-    public String autoIdentifyPassword() {
-        return autoIdentifyPassword;
-    }
-
-    public void _setAutoIdentifyPassword(String autoIdentifyPassword) {
-        this.autoIdentifyPassword = autoIdentifyPassword;
-        _update();
-    }
-
-    public boolean useSasl() {
-        return useSasl;
-    }
-
-    public void _setUseSasl(boolean useSasl) {
-        this.useSasl = useSasl;
-        _update();
-    }
-
-    public String saslAccount() {
-        return saslAccount;
-    }
-
-    public void _setSaslAccount(String saslAccount) {
-        this.saslAccount = saslAccount;
-        _update();
-    }
-
-    public String saslPassword() {
-        return saslPassword;
-    }
-
-    public void _setSaslPassword(String saslPassword) {
-        this.saslPassword = saslPassword;
-        _update();
-    }
-
-    public boolean useAutoReconnect() {
-        return useAutoReconnect;
-    }
-
-    public void _setUseAutoReconnect(boolean useAutoReconnect) {
-        this.useAutoReconnect = useAutoReconnect;
-        _update();
-    }
-
-    public int autoReconnectInterval() {
-        return autoReconnectInterval;
-    }
-
-    public void _setAutoReconnectInterval(int autoReconnectInterval) {
-        this.autoReconnectInterval = autoReconnectInterval;
-        _update();
-    }
-
-    public short autoReconnectRetries() {
-        return autoReconnectRetries;
-    }
-
-    public void _setAutoReconnectRetries(short autoReconnectRetries) {
-        this.autoReconnectRetries = autoReconnectRetries;
-        _update();
-    }
-
-    public boolean unlimitedReconnectRetries() {
-        return unlimitedReconnectRetries;
-    }
-
-    public void _setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries) {
-        this.unlimitedReconnectRetries = unlimitedReconnectRetries;
-        _update();
-    }
-
-    private void _update() {
-        setChanged();
-        notifyObservers();
-    }
-
-    @Override
-    public boolean equals(@Nullable Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        NetworkInfo that = (NetworkInfo) o;
-
-        return (networkId == that.networkId &&
-                identity == that.identity &&
-                useRandomServer == that.useRandomServer &&
-                useAutoIdentify == that.useAutoIdentify &&
-                useSasl == that.useSasl &&
-                useAutoReconnect == that.useAutoReconnect &&
-                autoReconnectInterval == that.autoReconnectInterval &&
-                autoReconnectRetries == that.autoReconnectRetries &&
-                unlimitedReconnectRetries == that.unlimitedReconnectRetries &&
-                rejoinChannels == that.rejoinChannels &&
-                Objects.equals(networkName, that.networkName) &&
-                Objects.equals(codecForServer, that.codecForServer) &&
-                Objects.equals(codecForEncoding, that.codecForEncoding) &&
-                Objects.equals(codecForDecoding, that.codecForDecoding) &&
-                Objects.equals(serverList, that.serverList) &&
-                Objects.equals(perform, that.perform) &&
-                Objects.equals(autoIdentifyService, that.autoIdentifyService) &&
-                Objects.equals(autoIdentifyPassword, that.autoIdentifyPassword) &&
-                Objects.equals(saslAccount, that.saslAccount) &&
-                Objects.equals(saslPassword, that.saslPassword)
-        );
-
-    }
-
-    @Override
-    public int hashCode() {
-        int result = networkId;
-        result = 31 * result + (networkName != null ? networkName.hashCode() : 0);
-        result = 31 * result + identity;
-        result = 31 * result + (codecForServer != null ? codecForServer.hashCode() : 0);
-        result = 31 * result + (codecForEncoding != null ? codecForEncoding.hashCode() : 0);
-        result = 31 * result + (codecForDecoding != null ? codecForDecoding.hashCode() : 0);
-        result = 31 * result + (serverList != null ? serverList.hashCode() : 0);
-        result = 31 * result + (useRandomServer ? 1 : 0);
-        result = 31 * result + (perform != null ? perform.hashCode() : 0);
-        result = 31 * result + (useAutoIdentify ? 1 : 0);
-        result = 31 * result + (autoIdentifyService != null ? autoIdentifyService.hashCode() : 0);
-        result = 31 * result + (autoIdentifyPassword != null ? autoIdentifyPassword.hashCode() : 0);
-        result = 31 * result + (useSasl ? 1 : 0);
-        result = 31 * result + (saslAccount != null ? saslAccount.hashCode() : 0);
-        result = 31 * result + (saslPassword != null ? saslPassword.hashCode() : 0);
-        result = 31 * result + (useAutoReconnect ? 1 : 0);
-        result = 31 * result + autoReconnectInterval;
-        result = 31 * result + (int) autoReconnectRetries;
-        result = 31 * result + (unlimitedReconnectRetries ? 1 : 0);
-        result = 31 * result + (rejoinChannels ? 1 : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "NetworkInfo{" +
-                "networkId=" + networkId +
-                ", networkName='" + networkName + '\'' +
-                ", identity=" + identity +
-                ", codecForServer='" + codecForServer + '\'' +
-                ", codecForEncoding='" + codecForEncoding + '\'' +
-                ", codecForDecoding='" + codecForDecoding + '\'' +
-                ", serverList=" + serverList +
-                ", useRandomServer=" + useRandomServer +
-                ", perform=" + perform +
-                ", useAutoIdentify=" + useAutoIdentify +
-                ", autoIdentifyService='" + autoIdentifyService + '\'' +
-                ", autoIdentifyPassword='" + autoIdentifyPassword + '\'' +
-                ", useSasl=" + useSasl +
-                ", saslAccount='" + saslAccount + '\'' +
-                ", saslPassword='" + saslPassword + '\'' +
-                ", useAutoReconnect=" + useAutoReconnect +
-                ", autoReconnectInterval=" + autoReconnectInterval +
-                ", autoReconnectRetries=" + autoReconnectRetries +
-                ", unlimitedReconnectRetries=" + unlimitedReconnectRetries +
-                ", rejoinChannels=" + rejoinChannels +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QAliasManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QAliasManager.java
deleted file mode 100644
index 08588cf85..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QAliasManager.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.objects.types.Command;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public interface QAliasManager extends QObservable<QAliasManager> {
-    boolean contains(final String name);
-
-    boolean isEmpty();
-
-    int count();
-
-    AndroidObservableSortedList<Alias> aliases();
-
-    AndroidObservableSortedList<Alias> defaults();
-
-    // TODO: specify later on
-    @NonNull
-    List<Command> processInput(final BufferInfo info, final String message);
-
-    void _update(Map<String, QVariant> from);
-
-    void _update(QAliasManager from);
-
-    @Synced
-    void addAlias(final String name, final String expansion);
-
-    void _addAlias(final String name, final String expansion);
-
-    void _addAlias(Alias alias);
-
-    void _removeAlias(Alias alias);
-
-    Alias alias(String name);
-
-    void requestUpdate(Map<String, QVariant<Object>> variantMap);
-
-    void requestUpdate();
-
-    class Alias {
-        public final String name;
-        public final String expansion;
-
-        public Alias(String name, String expansion) {
-            this.name = name;
-            this.expansion = expansion;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java
deleted file mode 100644
index 3e7bc60e7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBacklogManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.libquassel.localtypes.BacklogFilter;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-
-public interface QBacklogManager extends QSyncableObject<QBacklogManager> {
-    void requestMoreBacklog(int bufferId, int amount);
-
-    void requestBacklogInitial(int id, int amount);
-
-    @Synced
-    void requestBacklog(int id, int first, int last, int limit, int additional);
-
-    void _requestBacklog(int id, int first, int last, int limit, int additional);
-
-    @Synced
-    void receiveBacklog(int id, int first, int last, int limit, int additional, @NonNull List<Message> messages);
-
-    void _receiveBacklog(int id, int first, int last, int limit, int additional, @NonNull List<Message> messages);
-
-    @Synced
-    void requestBacklogAll(int first, int last, int limit, int additional);
-
-    void _requestBacklogAll(int first, int last, int limit, int additional);
-
-    @Synced
-    void receiveBacklogAll(int first, int last, int limit, int additional, @NonNull List<Message> messages);
-
-    void _receiveBacklogAll(int first, int last, int limit, int additional, @NonNull List<Message> messages);
-
-    @NonNull
-    BacklogFilter filter(int id);
-
-    @NonNull
-    AndroidObservableComparableSortedList<Message> unfiltered(int id);
-
-    @NonNull
-    AndroidObservableComparableSortedList<Message> filtered(int id);
-
-    void setOpen(int bufferId);
-
-    void open(int bufferId);
-
-    int open();
-
-    void receiveBacklog(Message msg);
-
-    int waitingMax();
-
-    @NonNull
-    Set<Integer> waiting();
-
-    void checkWaiting();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java
deleted file mode 100644
index e9874cfda..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferSyncer.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.util.SparseIntArray;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.ObservableElement;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-public interface QBufferSyncer extends QObservable<QBufferSyncer> {
-    int lastSeenMsg(int buffer);
-
-    int markerLine(int buffer);
-
-    @Synced
-    void setLastSeenMsg(int buffer, final int msgId);
-
-    void _setLastSeenMsg(int buffer, final int msgId);
-
-    @Synced
-    void requestSetLastSeenMsg(int buffer, final int msgId);
-
-    void _requestSetLastSeenMsg(int buffer, final int msgId);
-
-    @Synced
-    void setMarkerLine(int buffer, final int msgId);
-
-    void _setMarkerLine(int buffer, final int msgId);
-
-    @Synced
-    void requestSetMarkerLine(int buffer, final int msgId);
-
-    void _requestSetMarkerLine(int buffer, final int msgId);
-
-    @Synced
-    void requestRemoveBuffer(int buffer);
-
-    void _requestRemoveBuffer(int buffer);
-
-    @Synced
-    void removeBuffer(int buffer);
-
-    void _removeBuffer(int buffer);
-
-    @Synced
-    void requestRenameBuffer(int buffer, String newName);
-
-    void _requestRenameBuffer(int buffer, String newName);
-
-    @Synced
-    void renameBuffer(int buffer, String newName);
-
-    void _renameBuffer(int buffer, String newName);
-
-    @Synced
-    void requestMergeBuffersPermanently(int buffer1, int buffer2);
-
-    void _requestMergeBuffersPermanently(int buffer1, int buffer2);
-
-    @Synced
-    void mergeBuffersPermanently(int buffer1, int buffer2);
-
-    void _mergeBuffersPermanently(int buffer1, int buffer2);
-
-    @Synced
-    void requestPurgeBufferIds();
-
-    void _requestPurgeBufferIds();
-
-    @Synced
-    void requestMarkBufferAsRead(int buffer);
-
-    void _requestMarkBufferAsRead(int buffer);
-
-    @Synced
-    void markBufferAsRead(int buffer);
-
-    void _markBufferAsRead(int buffer);
-
-
-    ObservableElement<Integer> activity(int bufferid);
-
-    void setActivity(int bufferid, int activity);
-
-    void addActivity(int bufferid, int activity);
-
-    void addActivity(int bufferid, Message.Type type);
-
-    void addActivity(Message message);
-
-    SparseIntArray lastSeenMsgs();
-
-    SparseIntArray markerLines();
-
-    ObservableSet<Message.Type> getFilteredTypes(int bufferId);
-
-    void setFilters(int bufferId, int filters);
-
-    int getFilters(int bufferId);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
deleted file mode 100644
index 434e55c02..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewConfig.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.ObservableList;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-public interface QBufferViewConfig extends QSyncableObject<QBufferViewConfig> {
-
-    int bufferViewId();
-
-    String bufferViewName();
-
-    @Synced
-    void setBufferViewName(final String bufferViewName);
-
-    void _setBufferViewName(final String bufferViewName);
-
-    int networkId();
-
-    @Synced
-    void setNetworkId(final int networkId);
-
-    void _setNetworkId(final int networkId);
-
-    boolean addNewBuffersAutomatically();
-
-    @Synced
-    void setAddNewBuffersAutomatically(boolean addNewBuffersAutomatically);
-
-    void _setAddNewBuffersAutomatically(boolean addNewBuffersAutomatically);
-
-    boolean sortAlphabetically();
-
-    @Synced
-    void setSortAlphabetically(boolean sortAlphabetically);
-
-    void _setSortAlphabetically(boolean sortAlphabetically);
-
-    boolean disableDecoration();
-
-    @Synced
-    void setDisableDecoration(boolean disableDecoration);
-
-    void _setDisableDecoration(boolean disableDecoration);
-
-    int allowedBufferTypes();
-
-    boolean isBufferTypeAllowed(BufferInfo.Type type);
-
-    void setBufferTypeAllowed(BufferInfo.Type type, boolean allowed);
-
-    @Synced
-    void setAllowedBufferTypes(int bufferTypes);
-
-    void _setAllowedBufferTypes(int bufferTypes);
-
-    MinimumActivity minimumActivity();
-
-    @Synced
-    void setMinimumActivity(MinimumActivity activity);
-
-    void _setMinimumActivity(MinimumActivity activity);
-
-    void _setMinimumActivity(int activity);
-
-    boolean hideInactiveBuffers();
-
-    @Synced
-    void setHideInactiveBuffers(boolean hideInactiveBuffers);
-
-    void _setHideInactiveBuffers(boolean hideInactiveBuffers);
-
-    boolean hideInactiveNetworks();
-
-    @Synced
-    void setHideInactiveNetworks(boolean hideInactiveNetworks);
-
-    void _setHideInactiveNetworks(boolean hideInactiveNetworks);
-
-    @Synced
-    void requestSetBufferViewName(final String bufferViewName);
-
-    void _requestSetBufferViewName(final String bufferViewName);
-
-    @NonNull
-    ObservableList<Integer> bufferList();
-
-    @NonNull
-    ObservableSet<Integer> bufferIds();
-
-    @NonNull
-    ObservableSet<Integer> removedBuffers();
-
-    @NonNull
-    ObservableSet<Integer> temporarilyRemovedBuffers();
-
-    @Synced
-    void addBuffer(final int bufferId, int pos);
-
-    void _addBuffer(final int bufferId, int pos);
-
-    @Synced
-    void requestAddBuffer(final int bufferId, int pos);
-
-    void _requestAddBuffer(final int bufferId, int pos);
-
-    @Synced
-    void moveBuffer(final int bufferId, int pos);
-
-    void _moveBuffer(final int bufferId, int pos);
-
-    @Synced
-    void requestMoveBuffer(final int bufferId, int pos);
-
-    void _requestMoveBuffer(final int bufferId, int pos);
-
-    @Synced
-    void removeBuffer(final int bufferId);
-
-    void _removeBuffer(final int bufferId);
-
-    @Synced
-    void requestRemoveBuffer(final int bufferId);
-
-    void _requestRemoveBuffer(final int bufferId);
-
-    @Synced
-    void removeBufferPermanently(final int bufferId);
-
-    void _removeBufferPermanently(final int bufferId);
-
-    @Synced
-    void requestRemoveBufferPermanently(final int bufferId);
-
-    void _requestRemoveBufferPermanently(final int bufferId);
-
-    void init(int bufferViewConfigId);
-
-    ObservableSet<QNetwork> networkList();
-
-    void deleteBuffer(int bufferId);
-
-    void updateNetworks();
-
-    void checkAddBuffer(int id);
-
-    DisplayType mayDisplay(Buffer buffer);
-
-    @NonNull
-    ObservableSet<Integer> allBufferIds();
-
-    void checkAddBuffers();
-
-    enum DisplayType {
-        NONE,
-        ALWAYS,
-        TEMP_HIDDEN,
-        PERM_HIDDEN
-    }
-
-    enum MinimumActivity {
-        NONE(0),
-        OTHER(1),
-        MESSAGE(2),
-        HIGHLIGHT(4);
-
-        public final int id;
-
-        MinimumActivity(int id) {
-            this.id = id;
-        }
-
-        public static MinimumActivity fromId(int id) {
-            switch (id) {
-                default:
-                case 0:
-                    return NONE;
-                case 1:
-                    return OTHER;
-                case 2:
-                    return MESSAGE;
-                case 4:
-                    return HIGHLIGHT;
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewManager.java
deleted file mode 100644
index b229c1409..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QBufferViewManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public interface QBufferViewManager extends QSyncableObject<QBufferViewManager> {
-    @NonNull
-    AndroidObservableSortedList<QBufferViewConfig> bufferViewConfigs();
-
-    QBufferViewConfig bufferViewConfig(int bufferViewId);
-
-    void _addBufferViewConfig(int bufferViewConfigId);
-
-    void _addBufferViewConfig(final QBufferViewConfig bufferViewConfig);
-
-    @Synced
-    void createBufferView(final QBufferViewConfig bufferView);
-
-    @Synced
-    void createBufferViews(final List<QBufferViewConfig> bufferViewConfigs);
-
-    @Synced
-    void deleteBufferView(int bufferViewId);
-
-    @Synced
-    void deleteBufferViews(final List<Integer> bufferViews);
-
-    void _deleteBufferViewConfig(int bufferViewConfigId);
-
-    void checkForNewBuffers(int bufferId);
-
-    Map<Integer, QBufferViewConfig> bufferViewConfigMap();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCertManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCertManager.java
deleted file mode 100644
index aaf6e1af3..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCertManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import java.security.PrivateKey;
-import java.security.cert.Certificate;
-
-import de.kuschku.libquassel.syncables.Synced;
-
-public interface QCertManager extends QObservable {
-    @NonNull
-    PrivateKey sslKey();
-
-    @Synced
-    void setSslKey(byte[] encoded);
-
-    @NonNull
-    Certificate sslCert();
-
-    @Synced
-    void setSslCert(byte[] encoded);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCoreInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCoreInfo.java
deleted file mode 100644
index 2b4e7caa1..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QCoreInfo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.Synced;
-
-public interface QCoreInfo extends QObservable<QCoreInfo> {
-    Map<String, QVariant> coreData();
-
-    @Synced
-    void setCoreData(final Map<String, QVariant> coreData);
-
-    void _setCoreData(final Map<String, QVariant> coreData);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIdentity.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIdentity.java
deleted file mode 100644
index cff83ed04..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIdentity.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.Nullable;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-
-public interface QIdentity extends QObservable<QIdentity> {
-    void setToDefaults();
-
-    boolean isValid();
-
-    int id();
-
-    String identityName();
-
-    String realName();
-
-    List<String> nicks();
-
-    String awayNick();
-
-    boolean awayNickEnabled();
-
-    String awayReason();
-
-    boolean awayReasonEnabled();
-
-    boolean autoAwayEnabled();
-
-    int autoAwayTime();
-
-    String autoAwayReason();
-
-    boolean autoAwayReasonEnabled();
-
-    boolean detachAwayEnabled();
-
-    String detachAwayReason();
-
-    boolean detachAwayReasonEnabled();
-
-    String ident();
-
-    String kickReason();
-
-    String partReason();
-
-    String quitReason();
-
-    @Synced
-    void setId(int id);
-
-    void _setId(int id);
-
-    @Synced
-    void setIdentityName(final String name);
-
-    void _setIdentityName(final String name);
-
-    @Synced
-    void setRealName(final String realName);
-
-    void _setRealName(final String realName);
-
-    @Synced
-    void setNicks(final List<String> nicks);
-
-    void _setNicks(final List<String> nicks);
-
-    @Synced
-    void setAwayNick(final String awayNick);
-
-    void _setAwayNick(final String awayNick);
-
-    @Synced
-    void setAwayNickEnabled(boolean enabled);
-
-    void _setAwayNickEnabled(boolean enabled);
-
-    @Synced
-    void setAwayReason(final String awayReason);
-
-    void _setAwayReason(final String awayReason);
-
-    @Synced
-    void setAwayReasonEnabled(boolean enabled);
-
-    void _setAwayReasonEnabled(boolean enabled);
-
-    @Synced
-    void setAutoAwayEnabled(boolean enabled);
-
-    void _setAutoAwayEnabled(boolean enabled);
-
-    @Synced
-    void setAutoAwayTime(int time);
-
-    void _setAutoAwayTime(int time);
-
-    @Synced
-    void setAutoAwayReason(final String reason);
-
-    void _setAutoAwayReason(final String reason);
-
-    @Synced
-    void setAutoAwayReasonEnabled(boolean enabled);
-
-    void _setAutoAwayReasonEnabled(boolean enabled);
-
-    @Synced
-    void setDetachAwayEnabled(boolean enabled);
-
-    void _setDetachAwayEnabled(boolean enabled);
-
-    @Synced
-    void setDetachAwayReason(final String reason);
-
-    void _setDetachAwayReason(final String reason);
-
-    @Synced
-    void setDetachAwayReasonEnabled(boolean enabled);
-
-    void _setDetachAwayReasonEnabled(boolean enabled);
-
-    @Synced
-    void setIdent(final String ident);
-
-    void _setIdent(final String ident);
-
-    @Synced
-    void setKickReason(final String reason);
-
-    void _setKickReason(final String reason);
-
-    @Synced
-    void setPartReason(final String reason);
-
-    void _setPartReason(final String reason);
-
-    @Synced
-    void setQuitReason(final String reason);
-
-    void _setQuitReason(final String reason);
-
-    @Synced
-    void copyFrom(final QIdentity other);
-
-    void _copyFrom(final QIdentity other);
-
-    String sslKey();
-
-    @Nullable
-    String sslKeyPem();
-
-    String sslCert();
-
-    @Nullable
-    String sslCertPem();
-
-    @Synced
-    void setSslKey(final String encoded);
-
-    void _setSslKey(final String encoded);
-
-    @Synced
-    void setSslCert(final String encoded);
-
-    void _setSslCert(final String encoded);
-
-    @Synced
-    void update(Identity identity);
-
-    void _update(QIdentity identity);
-
-    void _update(Map<String, QVariant> identity);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIgnoreListManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIgnoreListManager.java
deleted file mode 100644
index e088534fc..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIgnoreListManager.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public interface QIgnoreListManager extends QObservable<QIgnoreListManager> {
-    @Synced
-    void removeIgnoreListItem(final String ignoreRule);
-
-    void _removeIgnoreListItem(final String ignoreRule);
-
-    @Synced
-    void toggleIgnoreRule(final String ignoreRule);
-
-    void _toggleIgnoreRule(final String ignoreRule);
-
-    @Synced
-    void addIgnoreListItem(IgnoreType type, final String ignoreRule, boolean isRegEx, StrictnessType strictness, ScopeType scope, final String scopeRule, boolean isActive);
-
-    @Synced
-    void addIgnoreListItem(int type, final String ignoreRule, boolean isRegEx, int strictness, int scope, final String scopeRule, boolean isActive);
-
-    void _addIgnoreListItem(int type, final String ignoreRule, boolean isRegEx, int strictness, int scope, final String scopeRule, boolean isActive);
-
-    void _addIgnoreListItem(IgnoreListManager.IgnoreListItem item);
-
-    StrictnessType match(String msgContents, String msgSender, Message.Type msgType, String network, String bufferName);
-
-    boolean matches(Message message, QNetwork network);
-
-    void _update(Map<String, QVariant> from);
-
-    void _update(QIgnoreListManager from);
-
-    void requestUpdate(Map<String, QVariant<Object>> variantMap);
-
-    void requestUpdate();
-
-    AndroidObservableSortedList<? extends IgnoreListManager.IgnoreListItem> ignoreList();
-
-    void _toggleIgnoreRule(IgnoreListManager.IgnoreListItem ignoreRule, boolean active);
-
-    enum IgnoreType {
-        SenderIgnore(0),
-        MessageIgnore(1),
-        CtcpIgnore(2);
-
-        public final int value;
-
-        IgnoreType(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static IgnoreType of(int id) {
-            switch (id) {
-                case 1:
-                    return MessageIgnore;
-                case 2:
-                    return CtcpIgnore;
-                default:
-                case 0:
-                    return SenderIgnore;
-            }
-        }
-    }
-
-    enum StrictnessType {
-        UnmatchedStrictness(0),
-        SoftStrictness(1),
-        HardStrictness(2);
-
-        public final int value;
-
-        StrictnessType(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static StrictnessType of(int id) {
-            switch (id) {
-                default:
-                case 0:
-                    return UnmatchedStrictness;
-                case 1:
-                    return SoftStrictness;
-                case 2:
-                    return HardStrictness;
-            }
-        }
-    }
-
-    enum ScopeType {
-        GlobalScope(0),
-        NetworkScope(1),
-        ChannelScope(2);
-
-        public final int value;
-
-        ScopeType(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static ScopeType of(int id) {
-            switch (id) {
-                case 1:
-                    return NetworkScope;
-                case 2:
-                    return ChannelScope;
-                default:
-                case 0:
-                    return GlobalScope;
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java
deleted file mode 100644
index e210f60c8..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcChannel.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.util.observables.lists.ObservableSortedList;
-
-public interface QIrcChannel extends QObservable<QIrcChannel> {
-    boolean isKnownUser(QIrcUser ircuser);
-
-    boolean isValidChannelUserMode(final String mode);
-
-    String name();
-
-    String topic();
-
-    String password();
-
-    boolean encrypted();
-
-    QNetwork network();
-
-    @NonNull
-    List<String> ircUsers();
-
-    String userModes(QIrcUser ircuser);
-
-    String userModes(final String nick);
-
-    boolean hasMode(final char mode);
-
-    String modeValue(final char mode);
-
-    List<String> modeValueList(final char mode);
-
-    String channelModeString();
-
-    String codecForEncoding();
-
-    String codecForDecoding();
-
-    void setCodecForEncoding(final String codecName);
-
-    void setCodecForDecoding(final String codecName);
-
-    @Synced
-    void setTopic(final String topic);
-
-    void _setTopic(final String topic);
-
-    @Synced
-    void setPassword(final String password);
-
-    void _setPassword(final String password);
-
-    @Synced
-    void setEncrypted(boolean encrypted);
-
-    void _setEncrypted(boolean encrypted);
-
-    // Disabled due to type erasure
-    //@Synced void joinIrcUsers(final List<IrcUser> users, final List<String> modes);
-    //void _joinIrcUsers(final List<IrcUser> users, final List<String> modes);
-
-    @Synced
-    void joinIrcUsers(final List<String> nicks, final List<String> modes);
-
-    void _joinIrcUsers(final List<String> nicks, final List<String> modes);
-
-    @Synced
-    void joinIrcUser(QIrcUser ircuser);
-
-    void _joinIrcUser(QIrcUser ircuser);
-
-    @Synced
-    void part(QIrcUser ircuser);
-
-    void _part(QIrcUser ircuser);
-
-    @Synced
-    void part(final String nick);
-
-    void _part(final String nick);
-
-    @Synced
-    void setUserModes(QIrcUser ircuser, final String modes);
-
-    void _setUserModes(QIrcUser ircuser, final String modes);
-
-    @Synced
-    void setUserModes(final String nick, final String modes);
-
-    void _setUserModes(final String nick, final String modes);
-
-    @Synced
-    void addUserMode(QIrcUser ircuser, final String mode);
-
-    void _addUserMode(QIrcUser ircuser, final String mode);
-
-    @Synced
-    void addUserMode(final String nick, final String mode);
-
-    void _addUserMode(final String nick, final String mode);
-
-    @Synced
-    void removeUserMode(QIrcUser ircuser, final String mode);
-
-    void _removeUserMode(QIrcUser ircuser, final String mode);
-
-    @Synced
-    void removeUserMode(final String nick, final String mode);
-
-    void _removeUserMode(final String nick, final String mode);
-
-    @Synced
-    void addChannelMode(final char mode, final String value);
-
-    void _addChannelMode(final char mode, final String value);
-
-    @Synced
-    void removeChannelMode(final char mode, final String value);
-
-    void _removeChannelMode(final char mode, final String value);
-
-    void init(QNetwork network, Client client);
-
-    @Nullable
-    String getObjectName();
-
-    @NonNull
-    ObservableSortedList<String> users();
-
-    void _ircUserNickChanged(String oldNick, String newNick);
-
-    List<Character> modeList();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java
deleted file mode 100644
index c34bfac42..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QIrcUser.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import org.joda.time.DateTime;
-
-import java.util.List;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.syncables.Synced;
-
-public interface QIrcUser extends QObservable<QIrcUser> {
-    String user();
-
-    String host();
-
-    String nick();
-
-    String realName();
-
-    String hostmask();
-
-    String account();
-
-    boolean isAway();
-
-    @Synced
-    void setAway(final boolean away);
-
-    String awayMessage();
-
-    DateTime idleTime();
-
-    DateTime loginTime();
-
-    String server();
-
-    String ircOperator();
-
-    int lastAwayMessage();
-
-    String whoisServiceReply();
-
-    String suserHost();
-
-    boolean encrypted();
-
-    QNetwork network();
-
-    @NonNull
-    String userModes();
-
-    @NonNull
-    List<String> channels();
-
-    DateTime lastChannelActivity(int id);
-
-    void setLastChannelActivity(int id, final DateTime time);
-
-    DateTime lastSpokenTo(int id);
-
-    void setLastSpokenTo(int id, final DateTime time);
-
-    @Synced
-    void setUser(final String user);
-
-    void _setUser(final String user);
-
-    @Synced
-    void setHost(final String host);
-
-    void _setHost(final String host);
-
-    @Synced
-    void setNick(final String nick);
-
-    void _setNick(final String nick);
-
-    @Synced
-    void setRealName(final String realName);
-
-    void _setRealName(final String realName);
-
-    @Synced
-    void setAccount(final String account);
-
-    void _setAccount(final String account);
-
-    void _setAway(final boolean away);
-
-    @Synced
-    void setAwayMessage(final String awayMessage);
-
-    void _setAwayMessage(final String awayMessage);
-
-    @Synced
-    void setIdleTime(final DateTime idleTime);
-
-    void _setIdleTime(final DateTime idleTime);
-
-    @Synced
-    void setLoginTime(final DateTime loginTime);
-
-    void _setLoginTime(final DateTime loginTime);
-
-    @Synced
-    void setServer(final String server);
-
-    void _setServer(final String server);
-
-    @Synced
-    void setIrcOperator(final String ircOperator);
-
-    void _setIrcOperator(final String ircOperator);
-
-    @Synced
-    void setLastAwayMessage(final int lastAwayMessage);
-
-    void _setLastAwayMessage(final int lastAwayMessage);
-
-    @Synced
-    void setWhoisServiceReply(final String whoisServiceReply);
-
-    void _setWhoisServiceReply(final String whoisServiceReply);
-
-    @Synced
-    void setSuserHost(final String suserHost);
-
-    void _setSuserHost(final String suserHost);
-
-    @Synced
-    void setEncrypted(boolean encrypted);
-
-    void _setEncrypted(boolean encrypted);
-
-    @Synced
-    void updateHostmask(final String mask);
-
-    void _updateHostmask(final String mask);
-
-    @Synced
-    void setUserModes(final String modes);
-
-    void _setUserModes(final String modes);
-
-
-    @Synced
-    void joinChannel(QIrcChannel channel);
-
-    void _joinChannel(QIrcChannel channel);
-
-    @Synced
-    void joinChannel(QIrcChannel channel, boolean skip_channel_join);
-
-    void _joinChannel(QIrcChannel channel, boolean skip_channel_join);
-
-    @Synced
-    void joinChannel(final String channelname);
-
-    void _joinChannel(final String channelname);
-
-    @Synced
-    void partChannel(QIrcChannel channel);
-
-    void _partChannel(QIrcChannel channel);
-
-    @Synced
-    void partChannel(QIrcChannel channel, boolean skip_channel_part);
-
-    void _partChannel(QIrcChannel channel, boolean skip_channel_part);
-
-    @Synced
-    void partChannel(final String channelname);
-
-    void _partChannel(final String channelname);
-
-    @Synced
-    void quit();
-
-    void _quit();
-
-    @Synced
-    void addUserModes(final String modes);
-
-    void _addUserModes(final String modes);
-
-    @Synced
-    void removeUserModes(final String modes);
-
-    void _removeUserModes(final String modes);
-
-    void init(QNetwork network, Client client);
-
-    @Nullable
-    String getObjectName();
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetwork.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetwork.java
deleted file mode 100644
index 517ce6be7..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetwork.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.Synced;
-import de.kuschku.libquassel.syncables.types.impl.IrcChannel;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.util.irc.IrcCaseMappers;
-import de.kuschku.util.irc.chanmodes.IrcModeProvider;
-
-public interface QNetwork extends QObservable<QNetwork> {
-    int networkId();
-
-    boolean isMyNick(final String nick);
-
-    boolean isMe(QIrcUser ircuser);
-
-    boolean isChannelName(final String channelname);
-
-    boolean isConnected();
-
-    @Synced
-    void setConnected(boolean isConnected);
-
-    ConnectionState connectionState();
-
-    String prefixToMode(final char prefix);
-
-    String prefixToMode(final String prefix);
-
-    String modeToPrefix(final char mode);
-
-    String modeToPrefix(final String mode);
-
-    int modeToIndex(String mode);
-
-    int lowestModeIndex(String mode);
-
-    @NonNull
-    ChannelModeType channelModeType(final char mode);
-
-    @NonNull
-    ChannelModeType channelModeType(final String mode);
-
-    String networkName();
-
-    String currentServer();
-
-    String myNick();
-
-    int latency();
-
-    QIrcUser me();
-
-    int identity();
-
-    @NonNull
-    List<String> nicks();
-
-    @NonNull
-    List<String> channels();
-
-    List<NetworkServer> serverList();
-
-    boolean useRandomServer();
-
-    List<String> perform();
-
-    boolean useAutoIdentify();
-
-    String autoIdentifyService();
-
-    String autoIdentifyPassword();
-
-    boolean useSasl();
-
-    String saslAccount();
-
-    String saslPassword();
-
-    boolean useAutoReconnect();
-
-    int autoReconnectInterval();
-
-    short autoReconnectRetries();
-
-    boolean unlimitedReconnectRetries();
-
-    boolean rejoinChannels();
-
-    NetworkInfo networkInfo();
-
-    List<String> prefixes();
-
-    List<String> prefixModes();
-
-    IrcModeProvider modeProvider();
-
-    void determinePrefixes();
-
-    boolean supports(final String param);
-
-    String support(final String param);
-
-    QIrcUser ircUser(final String nickname);
-
-    @NonNull
-    List<QIrcUser> ircUsers();
-
-    int ircUserCount();
-
-    QIrcChannel newIrcChannel(final String channelname);
-
-    @Nullable
-    QIrcChannel ircChannel(final String channelname);
-
-    @NonNull
-    List<QIrcChannel> ircChannels();
-
-    int ircChannelCount();
-
-    String codecForServer();
-
-    String codecForEncoding();
-
-    String codecForDecoding();
-
-    String defaultCodecForServer();
-
-    String defaultCodecForEncoding();
-
-    String defaultCodecForDecoding();
-
-    void setDefaultCodecForServer(final String name);
-
-    void setDefaultCodecForEncoding(final String name);
-
-    void setDefaultCodecForDecoding(final String name);
-
-    boolean autoAwayActive();
-
-    @Synced
-    void setAutoAwayActive(boolean active);
-
-    void _setAutoAwayActive(boolean active);
-
-    @Synced
-    void setNetworkName(final String networkName);
-
-    void _setNetworkName(final String networkName);
-
-    @Synced
-    void setCurrentServer(final String currentServer);
-
-    void _setCurrentServer(final String currentServer);
-
-    void _setConnected(boolean isConnected);
-
-    @Synced
-    void setConnectionState(int state);
-
-    void _setConnectionState(int state);
-
-    @Synced
-    void setMyNick(final String mynick);
-
-    void _setMyNick(final String mynick);
-
-    @Synced
-    void setLatency(int latency);
-
-    void _setLatency(int latency);
-
-    @Synced
-    void setIdentity(int identityId);
-
-    void _setIdentity(int identityId);
-
-    @Synced
-    void setServerList(final List<NetworkServer> serverList);
-
-    void _setServerList(final List<NetworkServer> serverList);
-
-    @Synced
-    void setUseRandomServer(boolean useRandomServer);
-
-    void _setUseRandomServer(boolean useRandomServer);
-
-    @Synced
-    void setPerform(final List<String> performs);
-
-    void _setPerform(final List<String> performs);
-
-    @Synced
-    void setUseAutoIdentify(boolean useAutoIdentify);
-
-    void _setUseAutoIdentify(boolean useAutoIdentify);
-
-    @Synced
-    void setAutoIdentifyService(final String autoIdentifyService);
-
-    void _setAutoIdentifyService(final String autoIdentifyService);
-
-    @Synced
-    void setAutoIdentifyPassword(final String autoIdentifyPassword);
-
-    void _setAutoIdentifyPassword(final String autoIdentifyPassword);
-
-    @Synced
-    void setUseSasl(boolean useSasl);
-
-    void setSaslPassword(final String saslPassword);
-
-    void _setUseSasl(boolean useSasl);
-
-    @Synced
-    void setSaslAccount(final String saslAccount);
-
-    void _setSaslAccount(final String saslAccount);
-
-    @Synced
-    void _setSaslPassword(final String saslPassword);
-
-    @Synced
-    void setUseAutoReconnect(boolean useAutoReconnect);
-
-    void _setUseAutoReconnect(boolean useAutoReconnect);
-
-    @Synced
-    void setAutoReconnectInterval(int autoReconnectInterval);
-
-    void _setAutoReconnectInterval(int autoReconnectInterval);
-
-    @Synced
-    void setAutoReconnectRetries(short autoReconnectRetries);
-
-    void _setAutoReconnectRetries(short autoReconnectRetries);
-
-    @Synced
-    void setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries);
-
-    void _setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries);
-
-    @Synced
-    void setRejoinChannels(boolean rejoinChannels);
-
-    void _setRejoinChannels(boolean rejoinChannels);
-
-    @Synced
-    void setCodecForServer(final String codecName);
-
-    void _setCodecForServer(final String codecName);
-
-    @Synced
-    void setCodecForEncoding(final String codecName);
-
-    void _setCodecForEncoding(final String codecName);
-
-    @Synced
-    void setCodecForDecoding(final String codecName);
-
-    void _setCodecForDecoding(final String codecName);
-
-    @Synced
-    void addSupport(final String param);
-
-    void _addSupport(final String param);
-
-    @Synced
-    void addSupport(final String param, final String value);
-
-    void _addSupport(final String param, final String value);
-
-    @Synced
-    void removeSupport(final String param);
-
-    void _removeSupport(final String param);
-
-    @Synced
-    void addIrcUser(final String hostmask);
-
-    void _addIrcUser(final String hostmask);
-
-    @Synced
-    void addIrcChannel(final String channel);
-
-    void _addIrcChannel(final String channel);
-
-    @Synced
-    QIrcUser updateNickFromMask(final String mask);
-
-    QIrcUser _updateNickFromMask(final String mask);
-
-    void ircUserNickChanged(String oldNick, String newnick);
-
-    @Synced
-    void connect();
-
-    void _connect();
-
-    @Synced
-    void disconnect();
-
-    void _disconnect();
-
-    @Synced
-    void setNetworkInfo(final NetworkInfo info);
-
-    void _setNetworkInfo(final NetworkInfo info);
-
-    @Synced
-    void removeIrcUser(QIrcUser ircuser);
-
-    void _removeIrcUser(QIrcUser ircuser);
-
-    @Synced
-    void removeIrcChannel(QIrcChannel ircChannel);
-
-    void _removeIrcChannel(QIrcChannel ircChannel);
-
-    @Synced
-    void removeChansAndUsers();
-
-    void _removeChansAndUsers();
-
-    void _addIrcChannel(IrcChannel ircChannel);
-
-    IrcCaseMappers.IrcCaseMapper caseMapper();
-
-    enum ConnectionState {
-        Disconnected(0),
-        Connecting(1),
-        Initializing(2),
-        Initialized(3),
-        Reconnecting(4),
-        Disconnecting(5);
-
-        public final int value;
-
-        ConnectionState(int value) {
-            this.value = value;
-        }
-
-        @NonNull
-        public static ConnectionState of(int id) {
-            switch (id) {
-                case 1:
-                    return Connecting;
-                case 2:
-                    return Initializing;
-                case 3:
-                    return Initialized;
-                case 4:
-                    return Reconnecting;
-                case 5:
-                    return Disconnecting;
-                default:
-                case 0:
-                    return Disconnected;
-            }
-        }
-    }
-
-    enum ChannelModeType {
-        NOT_A_CHANMODE(-1),
-        A_CHANMODE(0),
-        B_CHANMODE(1),
-        C_CHANMODE(2),
-        D_CHANMODE(3);
-
-        public final int id;
-
-        ChannelModeType(int id) {
-            this.id = id;
-        }
-
-        @NonNull
-        public static ChannelModeType of(int id) {
-            switch (id) {
-                case 0:
-                    return A_CHANMODE;
-                case 1:
-                    return B_CHANMODE;
-                case 2:
-                    return C_CHANMODE;
-                case 3:
-                    return D_CHANMODE;
-                default:
-                case -1:
-                    return NOT_A_CHANMODE;
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetworkConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetworkConfig.java
deleted file mode 100644
index 8e2438bea..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QNetworkConfig.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import de.kuschku.libquassel.syncables.Synced;
-
-public interface QNetworkConfig extends QObservable<QNetworkConfig> {
-    boolean pingTimeoutEnabled();
-
-    @Synced
-    void setPingTimeoutEnabled(boolean pingTimeoutEnabled);
-
-    void _setPingTimeoutEnabled(boolean pingTimeoutEnabled);
-
-    @Synced
-    void requestSetPingTimeoutEnabled(boolean pingTimeoutEnabled);
-
-    void _requestSetPingTimeoutEnabled(boolean pingTimeoutEnabled);
-
-    int pingInterval();
-
-    @Synced
-    void setPingInterval(int pingInterval);
-
-    void _setPingInterval(int pingInterval);
-
-    @Synced
-    void requestSetPingInterval(int pingInterval);
-
-    void _requestSetPingInterval(int pingInterval);
-
-    int maxPingCount();
-
-    @Synced
-    void setMaxPingCount(int maxPingCount);
-
-    void _setMaxPingCount(int maxPingCount);
-
-    @Synced
-    void requestSetMaxPingCount(int maxPingCount);
-
-    void _requestSetMaxPingCount(int maxPingCount);
-
-    boolean autoWhoEnabled();
-
-    @Synced
-    void setAutoWhoEnabled(boolean autoWhoEnabled);
-
-    void _setAutoWhoEnabled(boolean autoWhoEnabled);
-
-    @Synced
-    void requestSetAutoWhoEnabled(boolean autoWhoEnabled);
-
-    void _requestSetAutoWhoEnabled(boolean autoWhoEnabled);
-
-    int autoWhoInterval();
-
-    @Synced
-    void setAutoWhoInterval(int autoWhoInterval);
-
-    void _setAutoWhoInterval(int autoWhoInterval);
-
-    @Synced
-    void requestSetAutoWhoInterval(int autoWhoInterval);
-
-    void _requestSetAutoWhoInterval(int autoWhoInterval);
-
-    int autoWhoNickLimit();
-
-    @Synced
-    void setAutoWhoNickLimit(int autoWhoNickLimit);
-
-    void _setAutoWhoNickLimit(int autoWhoNickLimit);
-
-    @Synced
-    void requestSetAutoWhoNickLimit(int autoWhoNickLimit);
-
-    void _requestSetAutoWhoNickLimit(int autoWhoNickLimit);
-
-    int autoWhoDelay();
-
-    @Synced
-    void setAutoWhoDelay(int autoWhoDelay);
-
-    void _setAutoWhoDelay(int autoWhoDelay);
-
-    @Synced
-    void requestSetAutoWhoDelay(int autoWhoDelay);
-
-    void _requestSetAutoWhoDelay(int autoWhoDelay);
-
-    boolean standardCtcp();
-
-    @Synced
-    void setStandardCtcp(boolean standardCtcp);
-
-    void _setStandardCtcp(boolean standardCtcp);
-
-    @Synced
-    void requestSetStandardCtcp(boolean standardCtcp);
-
-    void _requestSetStandardCtcp(boolean standardCtcp);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QObservable.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QObservable.java
deleted file mode 100644
index 3bdb7f388..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QObservable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-
-public interface QObservable<T> {
-    void addObserver(GeneralCallback<T> o);
-
-    void deleteObserver(GeneralCallback<T> o);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java
deleted file mode 100644
index 436738044..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/interfaces/QSyncableObject.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.interfaces;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-public interface QSyncableObject<T> extends QObservable<T> {
-    void syncVar(@NonNull String methodName, @NonNull Object... params);
-
-    void sync(@NonNull String methodName, @NonNull Object[] params);
-
-    void rpcVar(@NonNull String procedureName, @NonNull Object... params);
-
-    void rpc(@NonNull String procedureName, @NonNull Object[] params);
-
-    void _update(Map<String, QVariant> from);
-
-    void _update(T from);
-
-    void renameObject(String newName);
-
-    @Nullable
-    String getObjectName();
-
-    void setObjectName(@Nullable String objectName);
-
-    void init(@NonNull String objectName, @NonNull BusProvider provider, @NonNull Client client);
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IAliasManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IAliasManager.java
deleted file mode 100644
index 979a72de5..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IAliasManager.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-
-public class IAliasManager implements Invoker<QAliasManager> {
-    @NonNull
-    private static final IAliasManager invoker = new IAliasManager();
-
-    private IAliasManager() {
-    }
-
-    @NonNull
-    public static IAliasManager get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QAliasManager obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "addAlias": {
-                obj._addAlias((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBacklogManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBacklogManager.java
deleted file mode 100644
index 1d5d8619f..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBacklogManager.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-
-public class IBacklogManager implements Invoker<QBacklogManager> {
-    @NonNull
-    private static final IBacklogManager invoker = new IBacklogManager();
-
-    private IBacklogManager() {
-    }
-
-    @NonNull
-    public static IBacklogManager get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QBacklogManager obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "receiveBacklog": {
-                obj._receiveBacklog((int) function.params.get(0), (int) function.params.get(1), (int) function.params.get(2), (int) function.params.get(3), (int) function.params.get(4), (List<Message>) function.params.get(5));
-            }
-            break;
-            case "receiveBacklogAll": {
-                obj._receiveBacklogAll((int) function.params.get(0), (int) function.params.get(1), (int) function.params.get(2), (int) function.params.get(3), (List<Message>) function.params.get(4));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferSyncer.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferSyncer.java
deleted file mode 100644
index 0f5fe0d24..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferSyncer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferSyncer;
-
-public class IBufferSyncer implements Invoker<QBufferSyncer> {
-    @NonNull
-    private static final IBufferSyncer invoker = new IBufferSyncer();
-
-    private IBufferSyncer() {
-    }
-
-    @NonNull
-    public static IBufferSyncer get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QBufferSyncer obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setLastSeenMsg": {
-                obj._setLastSeenMsg((int) function.params.get(0), (int) function.params.get(1));
-            }
-            break;
-            case "setMarkerLine": {
-                obj._setMarkerLine((int) function.params.get(0), (int) function.params.get(1));
-            }
-            break;
-            case "removeBuffer": {
-                obj._removeBuffer((int) function.params.get(0));
-            }
-            break;
-            case "renameBuffer": {
-                obj._renameBuffer((int) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "mergeBuffersPermanently": {
-                obj._mergeBuffersPermanently((int) function.params.get(0), (int) function.params.get(1));
-            }
-            break;
-            case "markBufferAsRead": {
-                obj._markBufferAsRead((int) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewConfig.java
deleted file mode 100644
index 49c326689..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewConfig.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-
-public class IBufferViewConfig implements Invoker<QBufferViewConfig> {
-    @NonNull
-    private static final IBufferViewConfig invoker = new IBufferViewConfig();
-
-    private IBufferViewConfig() {
-    }
-
-    @NonNull
-    public static IBufferViewConfig get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QBufferViewConfig obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setBufferViewName": {
-                obj._setBufferViewName((String) function.params.get(0));
-            }
-            break;
-            case "setNetworkId": {
-                obj._setNetworkId((int) function.params.get(0));
-            }
-            break;
-            case "setAddNewBuffersAutomatically": {
-                obj._setAddNewBuffersAutomatically((boolean) function.params.get(0));
-            }
-            break;
-            case "setSortAlphabetically": {
-                obj._setSortAlphabetically((boolean) function.params.get(0));
-            }
-            break;
-            case "setDisableDecoration": {
-                obj._setDisableDecoration((boolean) function.params.get(0));
-            }
-            break;
-            case "setAllowedBufferTypes": {
-                obj._setAllowedBufferTypes((int) function.params.get(0));
-            }
-            break;
-            case "setMinimumActivity": {
-                obj._setMinimumActivity((int) function.params.get(0));
-            }
-            break;
-            case "setHideInactiveBuffers": {
-                obj._setHideInactiveBuffers((boolean) function.params.get(0));
-            }
-            break;
-            case "setHideInactiveNetworks": {
-                obj._setHideInactiveNetworks((boolean) function.params.get(0));
-            }
-            break;
-            case "addBuffer": {
-                obj._addBuffer((int) function.params.get(0), (int) function.params.get(1));
-            }
-            break;
-            case "moveBuffer": {
-                obj._moveBuffer((int) function.params.get(0), (int) function.params.get(1));
-            }
-            break;
-            case "removeBuffer": {
-                obj._removeBuffer((int) function.params.get(0));
-            }
-            break;
-            case "removeBufferPermanently": {
-                obj._removeBufferPermanently((int) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewManager.java
deleted file mode 100644
index cfe99ffc2..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IBufferViewManager.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-
-public class IBufferViewManager implements Invoker<QBufferViewManager> {
-    @NonNull
-    private static final IBufferViewManager invoker = new IBufferViewManager();
-
-    private IBufferViewManager() {
-    }
-
-    @NonNull
-    public static IBufferViewManager get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QBufferViewManager obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "addBufferViewConfig": {
-                obj._addBufferViewConfig((int) function.params.get(0));
-            }
-            break;
-            case "deleteBufferViewConfig": {
-                obj._deleteBufferViewConfig((int) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICertManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICertManager.java
deleted file mode 100644
index f39f20b9b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICertManager.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QCertManager;
-
-public class ICertManager implements Invoker<QCertManager> {
-    @NonNull
-    private static final ICertManager invoker = new ICertManager();
-
-    private ICertManager() {
-    }
-
-    @NonNull
-    public static ICertManager get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QCertManager obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "": {
-
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IClient.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IClient.java
deleted file mode 100644
index 76a143bb0..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IClient.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.client.QClient;
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.RpcCallFunction;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-
-public class IClient {
-    @NonNull
-    private static final IClient invoker = new IClient();
-
-    private IClient() {
-    }
-
-    @NonNull
-    public static IClient get() {
-        return invoker;
-    }
-
-    public void invoke(RpcCallFunction function, QClient obj) throws SyncInvocationException {
-        switch (function.functionName) {
-            case "2displayMsg(Message)": {
-                obj._displayMsg((Message) function.params.get(0));
-            }
-            break;
-            case "2bufferInfoUpdated(BufferInfo)": {
-                obj._bufferInfoUpdated((BufferInfo) function.params.get(0));
-            }
-            break;
-            case "2identityCreated(Identity)": {
-                obj._identityCreated((Identity) function.params.get(0));
-            }
-            break;
-            case "2identityRemoved(IdentityId)": {
-                obj._identityRemoved((int) function.params.get(0));
-            }
-            break;
-            case "2networkCreated(NetworkId)": {
-                obj._networkCreated((int) function.params.get(0));
-            }
-            break;
-            case "2networkRemoved(NetworkId)": {
-                obj._networkRemoved((int) function.params.get(0));
-            }
-            break;
-            case "2passwordChanged(PeerPtr,bool)": {
-                obj._passwordChanged((long) function.params.get(0), (boolean) function.params.get(1));
-            }
-            break;
-            case "2displayStatusMsg(QString,QString)": {
-                obj._displayStatusMsg((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "__objectRenamed__": {
-                obj.___objectRenamed__((String) function.params.get(0), (String) function.params.get(1), (String) function.params.get(2));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException("Client::" + function.functionName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICoreInfo.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICoreInfo.java
deleted file mode 100644
index 01617bb07..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/ICoreInfo.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.interfaces.QCoreInfo;
-
-public class ICoreInfo implements Invoker<QCoreInfo> {
-    @NonNull
-    private static final ICoreInfo invoker = new ICoreInfo();
-
-    private ICoreInfo() {
-    }
-
-    @NonNull
-    public static ICoreInfo get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QCoreInfo obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setCoreData": {
-                obj._setCoreData((Map<String, QVariant>) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIdentity.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIdentity.java
deleted file mode 100644
index 429f8cc5b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIdentity.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-
-public class IIdentity implements Invoker<QIdentity> {
-    @NonNull
-    private static final IIdentity invoker = new IIdentity();
-
-    private IIdentity() {
-    }
-
-    @NonNull
-    public static IIdentity get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QIdentity obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setId": {
-                obj._setId((int) function.params.get(0));
-            }
-            break;
-            case "setIdentityName": {
-                obj._setIdentityName((String) function.params.get(0));
-            }
-            break;
-            case "setRealName": {
-                obj._setRealName((String) function.params.get(0));
-            }
-            break;
-            case "setNicks": {
-                obj._setNicks((List<String>) function.params.get(0));
-            }
-            break;
-            case "setAwayNick": {
-                obj._setAwayNick((String) function.params.get(0));
-            }
-            break;
-            case "setAwayNickEnabled": {
-                obj._setAwayNickEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setAwayReason": {
-                obj._setAwayReason((String) function.params.get(0));
-            }
-            break;
-            case "setAwayReasonEnabled": {
-                obj._setAwayReasonEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setAutoAwayEnabled": {
-                obj._setAutoAwayEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setAutoAwayTime": {
-                obj._setAutoAwayTime((int) function.params.get(0));
-            }
-            break;
-            case "setAutoAwayReason": {
-                obj._setAutoAwayReason((String) function.params.get(0));
-            }
-            break;
-            case "setAutoAwayReasonEnabled": {
-                obj._setAutoAwayReasonEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setDetachAwayEnabled": {
-                obj._setDetachAwayEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setDetachAwayReason": {
-                obj._setDetachAwayReason((String) function.params.get(0));
-            }
-            break;
-            case "setDetachAwayReasonEnabled": {
-                obj._setDetachAwayReasonEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setIdent": {
-                obj._setIdent((String) function.params.get(0));
-            }
-            break;
-            case "setKickReason": {
-                obj._setKickReason((String) function.params.get(0));
-            }
-            break;
-            case "setPartReason": {
-                obj._setPartReason((String) function.params.get(0));
-            }
-            break;
-            case "setQuitReason": {
-                obj._setQuitReason((String) function.params.get(0));
-            }
-            break;
-            case "setSslKey": {
-                obj._setSslKey((String) function.params.get(0));
-            }
-            break;
-            case "setSslCert": {
-                obj._setSslCert((String) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIgnoreListManager.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIgnoreListManager.java
deleted file mode 100644
index 41347cc71..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIgnoreListManager.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-
-public class IIgnoreListManager implements Invoker<QIgnoreListManager> {
-    @NonNull
-    private static final IIgnoreListManager invoker = new IIgnoreListManager();
-
-    private IIgnoreListManager() {
-    }
-
-    @NonNull
-    public static IIgnoreListManager get() {
-        return invoker;
-    }
-
-    public void invoke(SyncFunction function, QIgnoreListManager object) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "removeIgnoreListItem": {
-                object._removeIgnoreListItem((String) function.params.get(0));
-            }
-            break;
-            case "toggleIgnoreRule": {
-                object._toggleIgnoreRule((String) function.params.get(0));
-            }
-            break;
-            case "addIgnoreListItem": {
-                object._addIgnoreListItem((int) function.params.get(0), (String) function.params.get(1), (boolean) function.params.get(2), (int) function.params.get(3), (int) function.params.get(4), (String) function.params.get(5), (boolean) function.params.get(6));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(object, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcChannel.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcChannel.java
deleted file mode 100644
index 6120c7df9..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcChannel.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-
-public class IIrcChannel implements Invoker<QIrcChannel> {
-    @NonNull
-    private static final IIrcChannel invoker = new IIrcChannel();
-
-    private IIrcChannel() {
-    }
-
-    @NonNull
-    public static IIrcChannel get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QIrcChannel obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setTopic": {
-                obj._setTopic((String) function.params.get(0));
-            }
-            break;
-            case "setPassword": {
-                obj._setPassword((String) function.params.get(0));
-            }
-            break;
-            case "setEncrypted": {
-                obj._setEncrypted((boolean) function.params.get(0));
-            }
-            break;
-            case "joinIrcUsers": {
-                obj._joinIrcUsers((List<String>) function.params.get(0), (List<String>) function.params.get(1));
-            }
-            break;
-            case "part": {
-                obj._part((String) function.params.get(0));
-            }
-            break;
-            case "setUserModes": {
-                obj._setUserModes((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "addUserMode": {
-                obj._addUserMode((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "removeUserMode": {
-                obj._removeUserMode((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "addChannelMode": {
-                obj._addChannelMode((char) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "removeChannelMode": {
-                obj._removeChannelMode((char) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "ircUserNickChanged": {
-                obj._ircUserNickChanged((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcUser.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcUser.java
deleted file mode 100644
index 46b0019c5..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/IIrcUser.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import org.joda.time.DateTime;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-
-public class IIrcUser implements Invoker<QIrcUser> {
-    @NonNull
-    private static final IIrcUser invoker = new IIrcUser();
-
-    private IIrcUser() {
-    }
-
-    @NonNull
-    public static IIrcUser get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QIrcUser obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setAway": {
-                obj._setAway((boolean) function.params.get(0));
-            }
-            break;
-            case "setUser": {
-                obj._setUser((String) function.params.get(0));
-            }
-            break;
-            case "setHost": {
-                obj._setHost((String) function.params.get(0));
-            }
-            break;
-            case "setNick": {
-                obj._setNick((String) function.params.get(0));
-            }
-            break;
-            case "setRealName": {
-                obj._setRealName((String) function.params.get(0));
-            }
-            break;
-            case "setAccount": {
-                obj._setAccount((String) function.params.get(0));
-            }
-            break;
-            case "setAwayMessage": {
-                obj._setAwayMessage((String) function.params.get(0));
-            }
-            break;
-            case "setIdleTime": {
-                obj._setIdleTime((DateTime) function.params.get(0));
-            }
-            break;
-            case "setLoginTime": {
-                obj._setLoginTime((DateTime) function.params.get(0));
-            }
-            break;
-            case "setServer": {
-                obj._setServer((String) function.params.get(0));
-            }
-            break;
-            case "setIrcOperator": {
-                obj._setIrcOperator((String) function.params.get(0));
-            }
-            break;
-            case "setLastAwayMessage": {
-                obj._setLastAwayMessage((int) function.params.get(0));
-            }
-            break;
-            case "setWhoisServiceReply": {
-                obj._setWhoisServiceReply((String) function.params.get(0));
-            }
-            break;
-            case "setSuserHost": {
-                obj._setSuserHost((String) function.params.get(0));
-            }
-            break;
-            case "setEncrypted": {
-                obj._setEncrypted((boolean) function.params.get(0));
-            }
-            break;
-            case "updateHostmask": {
-                obj._updateHostmask((String) function.params.get(0));
-            }
-            break;
-            case "setUserModes": {
-                obj._setUserModes((String) function.params.get(0));
-            }
-            break;
-            case "joinChannel": {
-                obj._joinChannel((String) function.params.get(0));
-            }
-            break;
-            case "partChannel": {
-                obj._partChannel((String) function.params.get(0));
-            }
-            break;
-            case "addUserModes": {
-                obj._addUserModes((String) function.params.get(0));
-            }
-            break;
-            case "removeUserModes": {
-                obj._removeUserModes((String) function.params.get(0));
-            }
-            break;
-            case "quit": {
-                obj._quit();
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetwork.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetwork.java
deleted file mode 100644
index 217cd57cc..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetwork.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-
-public class INetwork implements Invoker<QNetwork> {
-    @NonNull
-    private static final INetwork invoker = new INetwork();
-
-    private INetwork() {
-    }
-
-    @NonNull
-    public static INetwork get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QNetwork obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setAutoAwayActive": {
-                obj._setAutoAwayActive((boolean) function.params.get(0));
-            }
-            break;
-            case "setNetworkName": {
-                obj._setNetworkName((String) function.params.get(0));
-            }
-            break;
-            case "setCurrentServer": {
-                obj._setCurrentServer((String) function.params.get(0));
-            }
-            break;
-            case "setConnected": {
-                obj._setConnected((boolean) function.params.get(0));
-            }
-            break;
-            case "setConnectionState": {
-                obj._setConnectionState((int) function.params.get(0));
-            }
-            break;
-            case "setMyNick": {
-                obj._setMyNick((String) function.params.get(0));
-            }
-            break;
-            case "setLatency": {
-                obj._setLatency((int) function.params.get(0));
-            }
-            break;
-            case "setIdentity": {
-                obj._setIdentity((int) function.params.get(0));
-            }
-            break;
-            case "setServerList": {
-                obj._setServerList((List<NetworkServer>) function.params.get(0));
-            }
-            break;
-            case "setUseRandomServer": {
-                obj._setUseRandomServer((boolean) function.params.get(0));
-            }
-            break;
-            case "setPerform": {
-                obj._setPerform((List<String>) function.params.get(0));
-            }
-            break;
-            case "setUseAutoIdentify": {
-                obj._setUseAutoIdentify((boolean) function.params.get(0));
-            }
-            break;
-            case "setAutoIdentifyService": {
-                obj._setAutoIdentifyService((String) function.params.get(0));
-            }
-            break;
-            case "setAutoIdentifyPassword": {
-                obj._setAutoIdentifyPassword((String) function.params.get(0));
-            }
-            break;
-            case "setUseSasl": {
-                obj._setUseSasl((boolean) function.params.get(0));
-            }
-            break;
-            case "setSaslAccount": {
-                obj._setSaslAccount((String) function.params.get(0));
-            }
-            break;
-            case "setSaslPassword": {
-                obj._setSaslPassword((String) function.params.get(0));
-            }
-            break;
-            case "setUseAutoReconnect": {
-                obj._setUseAutoReconnect((boolean) function.params.get(0));
-            }
-            break;
-            case "setAutoReconnectInterval": {
-                obj._setAutoReconnectInterval((int) function.params.get(0));
-            }
-            break;
-            case "setAutoReconnectRetries": {
-                obj._setAutoReconnectRetries((short) function.params.get(0));
-            }
-            break;
-            case "setUnlimitedReconnectRetries": {
-                obj._setUnlimitedReconnectRetries((boolean) function.params.get(0));
-            }
-            break;
-            case "setRejoinChannels": {
-                obj._setRejoinChannels((boolean) function.params.get(0));
-            }
-            break;
-            case "setCodecForServer": {
-                obj._setCodecForServer((String) function.params.get(0));
-            }
-            break;
-            case "setCodecForEncoding": {
-                obj._setCodecForEncoding((String) function.params.get(0));
-            }
-            break;
-            case "setCodecForDecoding": {
-                obj._setCodecForDecoding((String) function.params.get(0));
-            }
-            break;
-            case "addSupport": {
-                if (function.params.size() == 1)
-                    obj._addSupport((String) function.params.get(0));
-                else if (function.params.size() == 2)
-                    obj._addSupport((String) function.params.get(0), (String) function.params.get(1));
-            }
-            break;
-            case "removeSupport": {
-                obj._removeSupport((String) function.params.get(0));
-            }
-            break;
-            case "addIrcUser": {
-                obj._addIrcUser((String) function.params.get(0));
-            }
-            break;
-            case "addIrcChannel": {
-                obj._addIrcChannel((String) function.params.get(0));
-            }
-            break;
-            case "updateNickFromMask": {
-                obj._updateNickFromMask((String) function.params.get(0));
-            }
-            break;
-            case "setNetworkInfo": {
-                obj._setNetworkInfo((NetworkInfo) function.params.get(0));
-            }
-            break;
-            case "connect": {
-                obj._connect();
-            }
-            break;
-            case "disconnect": {
-                obj._disconnect();
-            }
-            break;
-            case "removeChansAndUsers": {
-                obj._removeChansAndUsers();
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetworkConfig.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetworkConfig.java
deleted file mode 100644
index 43383232b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/INetworkConfig.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetworkConfig;
-
-public class INetworkConfig implements Invoker<QNetworkConfig> {
-    @NonNull
-    private static final INetworkConfig invoker = new INetworkConfig();
-
-    private INetworkConfig() {
-    }
-
-    @NonNull
-    public static INetworkConfig get() {
-        return invoker;
-    }
-
-    @Override
-    public void invoke(SyncFunction function, QNetworkConfig obj) throws SyncInvocationException {
-        switch (function.methodName) {
-            case "setPingTimeoutEnabled": {
-                obj._setPingTimeoutEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setPingInterval": {
-                obj._setPingInterval((int) function.params.get(0));
-            }
-            break;
-            case "setMaxPingCount": {
-                obj._setMaxPingCount((int) function.params.get(0));
-            }
-            break;
-            case "setAutoWhoEnabled": {
-                obj._setAutoWhoEnabled((boolean) function.params.get(0));
-            }
-            break;
-            case "setAutoWhoInterval": {
-                obj._setAutoWhoInterval((int) function.params.get(0));
-            }
-            break;
-            case "setAutoWhoNickLimit": {
-                obj._setAutoWhoNickLimit((int) function.params.get(0));
-            }
-            break;
-            case "setAutoWhoDelay": {
-                obj._setAutoWhoDelay((int) function.params.get(0));
-            }
-            break;
-            case "setStandardCtcp": {
-                obj._setStandardCtcp((boolean) function.params.get(0));
-            }
-            break;
-            case "update": {
-                InvokerHelper.update(obj, function.params.get(0));
-            }
-            break;
-            default: {
-                throw new SyncInvocationException(function.className + "::" + function.methodName);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/Invoker.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/Invoker.java
deleted file mode 100644
index 3a9b88f90..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/Invoker.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-
-public interface Invoker<T> {
-    void invoke(SyncFunction function, T obj) throws SyncInvocationException;
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerHelper.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerHelper.java
deleted file mode 100644
index 020f56d1b..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerHelper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import java.util.Map;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QSyncableObject;
-
-public class InvokerHelper {
-    private InvokerHelper() {
-
-    }
-
-    public static void update(Object object, Object parameter) {
-        if (object instanceof QSyncableObject) {
-            QSyncableObject syncableObject = (QSyncableObject) object;
-            if (parameter instanceof QSyncableObject) {
-                QSyncableObject parameter1 = (QSyncableObject) parameter;
-                syncableObject._update(parameter1);
-            } else if (parameter instanceof Map) {
-                Map parameter1 = (Map) parameter;
-                syncableObject._update(parameter1);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerRegistry.java b/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerRegistry.java
deleted file mode 100644
index c8d762613..000000000
--- a/app/src/main/java/de/kuschku/libquassel/syncables/types/invokers/InvokerRegistry.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.libquassel.syncables.types.invokers;
-
-import de.kuschku.libquassel.exceptions.SyncInvocationException;
-import de.kuschku.libquassel.functions.types.SyncFunction;
-
-public class InvokerRegistry {
-    private InvokerRegistry() {
-
-    }
-
-    public static <T> Invoker<T> getInvoker(SyncFunction function) {
-        switch (function.className) {
-            case "AliasManager":
-                return (Invoker<T>) IAliasManager.get();
-            case "BufferSyncer":
-                return (Invoker<T>) IBufferSyncer.get();
-            case "BufferViewManager":
-                return (Invoker<T>) IBufferViewManager.get();
-            case "Identity":
-                return (Invoker<T>) IIdentity.get();
-            case "IrcChannel":
-                return (Invoker<T>) IIrcChannel.get();
-            case "Network":
-                return (Invoker<T>) INetwork.get();
-            case "BacklogManager":
-                return (Invoker<T>) IBacklogManager.get();
-            case "BufferViewConfig":
-                return (Invoker<T>) IBufferViewConfig.get();
-            case "CoreInfo":
-                return (Invoker<T>) ICoreInfo.get();
-            case "IgnoreListManager":
-                return (Invoker<T>) IIgnoreListManager.get();
-            case "IrcUser":
-                return (Invoker<T>) IIrcUser.get();
-            case "NetworkConfig":
-                return (Invoker<T>) INetworkConfig.get();
-            default:
-                return null;
-        }
-    }
-
-    public static void invoke(SyncFunction function, Object obj) throws SyncInvocationException {
-        Invoker invoker = getInvoker(function);
-        if (invoker != null)
-            invoker.invoke(function, obj);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/Exceptions.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/Exceptions.kt
new file mode 100644
index 000000000..21ec532cc
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/Exceptions.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid_ng
+
+abstract class QuasselException : Exception()
+data class ObjectNotFoundException(val className: String, val objectName: String) :
+  QuasselException()
+
+data class WrongObjectTypeException(val obj: Any?, val type: String) : QuasselException()
+data class UnknownMethodException(val className: String, val methodName: String) :
+  QuasselException()
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasselDroidNG.java b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasselDroidNG.java
deleted file mode 100644
index ca9b37584..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasselDroidNG.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng;
-
-import android.app.Application;
-import android.content.Context;
-
-import com.raizlabs.android.dbflow.config.FlowConfig;
-import com.raizlabs.android.dbflow.config.FlowManager;
-
-import net.danlew.android.joda.JodaTimeAndroid;
-
-import org.acra.ACRA;
-import org.acra.ReportField;
-import org.acra.ReportingInteractionMode;
-import org.acra.annotation.ReportsCrashes;
-
-import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
-
-@ReportsCrashes(
-        formUri = "https://reports.kuschku.de/report/2/",
-        reportType = org.acra.sender.HttpSender.Type.JSON,
-        httpMethod = org.acra.sender.HttpSender.Method.POST,
-        customReportContent = {
-                ReportField.APP_VERSION_CODE,
-                ReportField.APP_VERSION_NAME,
-                ReportField.ANDROID_VERSION,
-                ReportField.PACKAGE_NAME,
-                ReportField.REPORT_ID,
-                ReportField.BUILD,
-                ReportField.STACK_TRACE
-        },
-        mode = ReportingInteractionMode.TOAST,
-        resToastText = R.string.notificationReportCrash
-)
-public class QuasselDroidNG extends Application {
-    private static Context applicationContext;
-
-    public static Context context() {
-        return applicationContext;
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        ACRA.init(this);
-
-        FlowManager.init(new FlowConfig.Builder(this).build());
-        FlowManager.getDatabase(ConnectedDatabase.class).getWritableDatabase();
-
-        JodaTimeAndroid.init(this);
-
-        applicationContext = getApplicationContext();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
new file mode 100644
index 000000000..6832c0ee1
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/QuasseldroidNG.kt
@@ -0,0 +1,60 @@
+package de.kuschku.quasseldroid_ng
+
+import android.app.Application
+import android.content.Context
+import android.content.Intent
+import android.content.pm.ShortcutInfo
+import android.content.pm.ShortcutManager
+import android.graphics.drawable.Icon
+import android.os.Build
+import de.kuschku.quasseldroid_ng.service.QuasselService
+import de.kuschku.quasseldroid_ng.util.helpers.systemService
+import org.acra.ACRA
+import org.acra.ReportingInteractionMode
+import org.acra.config.ConfigurationBuilder
+
+class QuasseldroidNG : Application() {
+  override fun attachBaseContext(base: Context?) {
+    super.attachBaseContext(base)
+
+    val config = ConfigurationBuilder(this)
+      .setMailTo("support@kuschku.de")
+      .setReportingInteractionMode(ReportingInteractionMode.DIALOG)
+      .setResDialogText(R.string.crash_text)
+      .build()
+
+    ACRA.init(this, config)
+  }
+
+  override fun onCreate() {
+    super.onCreate()
+
+    if (!ACRA.isACRASenderServiceProcess()) {
+      startService(Intent(this, QuasselService::class.java))
+      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+        systemService<ShortcutManager>().dynamicShortcuts = listOf(
+          ShortcutInfo.Builder(this, "id1")
+            .setShortLabel("#quassel")
+            .setIcon(Icon.createWithResource(this, R.drawable.ic_shortcut_channel))
+            .setIntent(packageManager.getLaunchIntentForPackage(BuildConfig.APPLICATION_ID))
+            .build(),
+          ShortcutInfo.Builder(this, "id2")
+            .setShortLabel("#quasseldroid")
+            .setIcon(Icon.createWithResource(this, R.drawable.ic_shortcut_channel))
+            .setIntent(packageManager.getLaunchIntentForPackage(BuildConfig.APPLICATION_ID))
+            .build(),
+          ShortcutInfo.Builder(this, "id3")
+            .setShortLabel("#quassel.de")
+            .setIcon(Icon.createWithResource(this, R.drawable.ic_shortcut_channel))
+            .setIntent(packageManager.getLaunchIntentForPackage(BuildConfig.APPLICATION_ID))
+            .build(),
+          ShortcutInfo.Builder(this, "id4")
+            .setShortLabel("justJanne")
+            .setIcon(Icon.createWithResource(this, R.drawable.ic_shortcut_query))
+            .setIntent(packageManager.getLaunchIntentForPackage(BuildConfig.APPLICATION_ID))
+            .build()
+        )
+      }
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
new file mode 100644
index 000000000..7affde4d4
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/persistence/QuasselDatabase.kt
@@ -0,0 +1,207 @@
+package de.kuschku.quasseldroid_ng.persistence
+
+import android.arch.persistence.room.*
+import android.content.Context
+import android.support.annotation.IntRange
+import de.kuschku.quasseldroid_ng.protocol.Message_Flag
+import de.kuschku.quasseldroid_ng.protocol.Message_Flags
+import de.kuschku.quasseldroid_ng.protocol.Message_Type
+import de.kuschku.quasseldroid_ng.protocol.Message_Types
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.util.Flag
+import de.kuschku.quasseldroid_ng.util.Flags
+import org.threeten.bp.Instant
+
+@Database(entities = arrayOf(QuasselDatabase.Buffer::class, QuasselDatabase.Network::class,
+                             QuasselDatabase.Message::class),
+          version = 2)
+@TypeConverters(QuasselDatabase.Message.MessageTypeConverters::class)
+abstract class QuasselDatabase : RoomDatabase() {
+  abstract fun networks(): NetworkDao
+  abstract fun buffers(): BufferDao
+  abstract fun message(): MessageDao
+
+  @Entity(indices = arrayOf(Index("networkId")))
+  class Buffer(
+    @PrimaryKey var bufferId: Int,
+    var networkId: Int,
+    var type: Int,
+    var groupId: Int,
+    var bufferName: String
+  )
+
+  class RawMessage(
+    messageId: Int,
+    time: Instant,
+    type: Message_Types,
+    flag: Message_Flags,
+    var bufferInfo: BufferInfo,
+    sender: String,
+    senderPrefixes: String,
+    content: String
+  ) : Message(messageId, time, type.toInt(), flag.toInt(), bufferInfo.bufferId, sender,
+              senderPrefixes, content)
+
+  @Entity
+  open class Message(
+    @PrimaryKey var messageId: Int,
+    var time: Instant,
+    var type: Int,
+    var flag: Int,
+    var bufferId: Int,
+    var sender: String,
+    var senderPrefixes: String,
+    var content: String
+  ) {
+    enum class MessageType(override val bit: Int) : Flag<MessageType> {
+      Plain(0x00001),
+      Notice(0x00002),
+      Action(0x00004),
+      Nick(0x00008),
+      Mode(0x00010),
+      Join(0x00020),
+      Part(0x00040),
+      Quit(0x00080),
+      Kick(0x00100),
+      Kill(0x00200),
+      Server(0x00400),
+      Info(0x00800),
+      Error(0x01000),
+      DayChange(0x02000),
+      Topic(0x04000),
+      NetsplitJoin(0x08000),
+      NetsplitQuit(0x10000),
+      Invite(0x20000),
+      Markerline(0x40000);
+
+      companion object : Flags.Factory<MessageType> {
+        override val NONE = MessageType.of()
+        override fun of(bit: Int) = Flags.of<MessageType>(bit)
+        override fun of(vararg flags: MessageType) = Flags.of(*flags)
+      }
+    }
+
+    enum class MessageFlag(override val bit: Int) : Flag<MessageFlag> {
+      Self(0x01),
+      Highlight(0x02),
+      Redirected(0x04),
+      ServerMsg(0x08),
+      Backlog(0x80);
+
+      companion object : Flags.Factory<MessageFlag> {
+        override val NONE = MessageFlag.of()
+        override fun of(bit: Int) = Flags.of<MessageFlag>(bit)
+        override fun of(vararg flags: MessageFlag) = Flags.of(*flags)
+      }
+    }
+
+    class MessageTypeConverters {
+      @TypeConverter
+      fun convertInstant(value: Long) = Instant.ofEpochMilli(value)
+
+      @TypeConverter
+      fun convertInstant(value: Instant) = value.toEpochMilli()
+    }
+
+    override fun toString(): String {
+      return "Message(messageId=$messageId, time=$time, type=${Message_Type.of(
+        type)}, flag=${Message_Flag.of(
+        flag)}, bufferId=$bufferId, sender='$sender', senderPrefixes='$senderPrefixes', content='$content')"
+    }
+  }
+
+  @Entity
+  class Network(
+    @PrimaryKey var networkId: Int,
+    var networkName: String
+  )
+
+  @Dao
+  interface NetworkDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    fun save(vararg entities: QuasselDatabase.Network)
+
+    @Query("SELECT * FROM network WHERE networkId = :networkId")
+    fun findById(networkId: Int): QuasselDatabase.Network
+
+    @Query("SELECT * FROM network")
+    fun all(): List<QuasselDatabase.Network>
+
+    @Delete
+    fun delete(Network: QuasselDatabase.Network)
+
+    @Query("DELETE FROM network")
+    fun clear()
+  }
+
+  @Dao
+  interface BufferDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    fun save(vararg entities: QuasselDatabase.Buffer)
+
+    @Query("SELECT * FROM buffer WHERE networkId = :bufferId")
+    fun findById(bufferId: Int): QuasselDatabase.Buffer
+
+    @Query("SELECT * FROM buffer WHERE networkId = :networkId")
+    fun findByNetwork(networkId: Int): List<QuasselDatabase.Buffer>
+
+    @Query("DELETE FROM buffer WHERE networkId = :networkId")
+    fun deleteByNetwork(networkId: Int)
+
+    @Query("SELECT * FROM buffer")
+    fun all(): List<QuasselDatabase.Buffer>
+
+    @Delete
+    fun delete(buffer: QuasselDatabase.Buffer)
+
+    @Query("DELETE FROM buffer")
+    fun clear()
+  }
+
+  @Dao
+  interface MessageDao {
+    @Query("SELECT * FROM message WHERE messageId = :messageId")
+    fun find(messageId: Int): Message
+
+    @Query("SELECT * FROM message WHERE bufferId = :bufferId")
+    fun findByBufferId(bufferId: Int): List<Message>
+
+    @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId DESC LIMIT 1")
+    fun findLastByBufferId(bufferId: Int): Message
+
+    @Update(onConflict = OnConflictStrategy.REPLACE)
+    fun save(entity: Message)
+
+    @Query("UPDATE message SET bufferId = :bufferId1 WHERE bufferId = :bufferId2")
+    fun merge(@IntRange(from = 0) bufferId1: Int, @IntRange(from = 0) bufferId2: Int)
+
+    @Query("DELETE FROM message WHERE bufferId = :bufferId")
+    fun clearBuffer(@IntRange(from = 0) bufferId: Int)
+  }
+
+  object Creator {
+    private var database: QuasselDatabase? = null
+      private set
+
+    // For Singleton instantiation
+    private val LOCK = Any()
+
+    fun init(context: Context): QuasselDatabase {
+      if (database == null) {
+        synchronized(LOCK) {
+          if (database == null) {
+            database = Room.databaseBuilder(context.applicationContext,
+                                            QuasselDatabase::class.java, DATABASE_NAME)
+              .fallbackToDestructiveMigration()
+              .build()
+          }
+        }
+      }
+      return database!!
+    }
+  }
+
+  companion object {
+    const val DATABASE_NAME = "persistence-clientData"
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/ClientData.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/ClientData.kt
new file mode 100644
index 000000000..1b92ec6ac
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/ClientData.kt
@@ -0,0 +1,11 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import org.threeten.bp.Instant
+
+data class ClientData(
+  val identifier: String,
+  val buildDate: Instant,
+  val clientFeatures: Quassel_Features,
+  val protocolFeatures: Protocol_Features,
+  val supportedProtocols: ByteArray
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/HandshakeMessage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/HandshakeMessage.kt
new file mode 100644
index 000000000..34064d826
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/HandshakeMessage.kt
@@ -0,0 +1,255 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import de.kuschku.quasseldroid_ng.util.Flags
+
+
+sealed class HandshakeMessage {
+  class ClientInit(val clientVersion: String?, val buildDate: String?,
+                   val clientFeatures: Quassel_Features?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientInit(clientVersion=$clientVersion, buildDate=$buildDate, clientFeatures=$clientFeatures)"
+    }
+  }
+
+  class ClientInitReject(val errorString: String?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientInitReject(errorString=$errorString)"
+    }
+  }
+
+  class ClientInitAck(val coreFeatures: Quassel_Features?, val coreConfigured: Boolean?,
+                      val backendInfo: QVariantList?,
+                      val authenticatorInfo: QVariantList?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientInitAck(coreFeatures=$coreFeatures, coreConfigured=$coreConfigured, backendInfo=$backendInfo, authenticatorInfo=$authenticatorInfo)"
+    }
+  }
+
+  class CoreSetupData(val adminUser: String?, val adminPassword: String?, val backend: String?,
+                      val setupData: QVariantMap?, val authenticator: String?,
+                      val authSetupData: QVariantMap?) :
+    HandshakeMessage() {
+    override fun toString(): String {
+      return "CoreSetupData(adminUser=$adminUser, adminPassword=$adminPassword, backend=$backend, setupData=$setupData, authenticator=$authenticator, authSetupData=$authSetupData)"
+    }
+  }
+
+  class CoreSetupReject(val errorString: String?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "CoreSetupReject(errorString=$errorString)"
+    }
+  }
+
+  class CoreSetupAck : HandshakeMessage() {
+    override fun toString(): String {
+      return "CoreSetupAck"
+    }
+  }
+
+  class ClientLogin(val user: String?, val password: String?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientLogin"
+    }
+  }
+
+  class ClientLoginReject(val errorString: String?) : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientLoginReject(errorString=$errorString)"
+    }
+  }
+
+  class ClientLoginAck : HandshakeMessage() {
+    override fun toString(): String {
+      return "ClientLoginAck"
+    }
+  }
+
+  class SessionInit(val identities: QVariantList?, val bufferInfos: QVariantList?,
+                    val networkIds: QVariantList?) :
+    HandshakeMessage() {
+    override fun toString(): String {
+      return "SessionInit(identities=$identities, bufferInfos=$bufferInfos, networkIds=$networkIds)"
+    }
+  }
+
+  companion object : HandshakeMessageSerializer<HandshakeMessage> {
+    override fun serialize(data: HandshakeMessage) = when (data) {
+      is ClientInit        -> ClientInitSerializer.serialize(data)
+      is ClientInitReject  -> ClientInitRejectSerializer.serialize(data)
+      is ClientInitAck     -> ClientInitAckSerializer.serialize(data)
+      is CoreSetupData     -> CoreSetupDataSerializer.serialize(data)
+      is CoreSetupReject   -> CoreSetupRejectSerializer.serialize(data)
+      is CoreSetupAck      -> CoreSetupAckSerializer.serialize(data)
+      is ClientLogin       -> ClientLoginSerializer.serialize(data)
+      is ClientLoginReject -> ClientLoginRejectSerializer.serialize(data)
+      is ClientLoginAck    -> ClientLoginAckSerializer.serialize(data)
+      is SessionInit       -> SessionInitSerializer.serialize(data)
+    }
+
+    override fun deserialize(data: QVariantMap): HandshakeMessage {
+      val msgType = data["MsgType"].value<String?>()
+      return when (msgType) {
+        "ClientInit"        -> ClientInitSerializer.deserialize(data)
+        "ClientInitReject"  -> ClientInitRejectSerializer.deserialize(data)
+        "ClientInitAck"     -> ClientInitAckSerializer.deserialize(data)
+        "CoreSetupData"     -> CoreSetupDataSerializer.deserialize(data)
+        "CoreSetupReject"   -> CoreSetupRejectSerializer.deserialize(data)
+        "CoreSetupAck"      -> CoreSetupAckSerializer.deserialize(data)
+        "ClientLogin"       -> ClientLoginSerializer.deserialize(data)
+        "ClientLoginReject" -> ClientLoginRejectSerializer.deserialize(data)
+        "ClientLoginAck"    -> ClientLoginAckSerializer.deserialize(data)
+        "SessionInit"       -> SessionInitSerializer.deserialize(data)
+        else                -> throw IllegalArgumentException(
+          "Invalid MsgType: $msgType"
+        )
+      }
+    }
+
+  }
+}
+
+object ClientInitSerializer : HandshakeMessageSerializer<HandshakeMessage.ClientInit> {
+  override fun serialize(data: HandshakeMessage.ClientInit) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "ClientVersion" to QVariant_(data.clientVersion, Type.QString),
+    "ClientDate" to QVariant_(data.buildDate, Type.QString),
+    "ClientFeatures" to QVariant_(data.clientFeatures?.toInt(), Type.UInt)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientInit(
+    clientVersion = data["ClientVersion"].value(),
+    buildDate = data["ClientDate"].value(),
+    clientFeatures = Flags.of(data["ClientFeatures"].value(0))
+  )
+}
+
+object ClientInitRejectSerializer : HandshakeMessageSerializer<HandshakeMessage.ClientInitReject> {
+  override fun serialize(data: HandshakeMessage.ClientInitReject) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "Error" to QVariant_(data.errorString, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientInitReject(
+    errorString = data["Error"].value()
+  )
+}
+
+object ClientInitAckSerializer : HandshakeMessageSerializer<HandshakeMessage.ClientInitAck> {
+  override fun serialize(data: HandshakeMessage.ClientInitAck) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "CoreFeatures" to QVariant_(data.coreFeatures?.toInt(), Type.UInt),
+    "StorageBackends" to QVariant_(data.backendInfo, Type.QVariantList),
+    "Authenticator" to QVariant_(data.authenticatorInfo, Type.QVariantList),
+    "Configured" to QVariant_(data.coreConfigured, Type.Bool)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientInitAck(
+    coreFeatures = Flags.of(data["CoreFeatures"].value(0)),
+    backendInfo = data["StorageBackends"].value(),
+    authenticatorInfo = data["Authenticators"].value(),
+    coreConfigured = data["Configured"].value()
+  )
+}
+
+object CoreSetupDataSerializer : HandshakeMessageSerializer<HandshakeMessage.CoreSetupData> {
+  override fun serialize(data: HandshakeMessage.CoreSetupData) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "SetupData" to QVariant_(mapOf(
+      "AdminUser" to QVariant_(data.adminUser, Type.QString),
+      "AdminPasswd" to QVariant_(data.adminPassword, Type.QString),
+      "Backend" to QVariant_(data.backend, Type.QString),
+      "ConnectionProperties" to QVariant_(data.setupData, Type.QVariantMap),
+      "Authenticator" to QVariant_(data.authenticator, Type.QString),
+      "AuthProperties" to QVariant_(data.authSetupData, Type.QVariantMap)
+    ), Type.QVariantMap)
+  )
+
+  override fun deserialize(data: QVariantMap): HandshakeMessage.CoreSetupData {
+    val setupData = data["SetupData"].value<QVariantMap?>()
+    return HandshakeMessage.CoreSetupData(
+      adminUser = setupData?.get("AdminUser").value(),
+      adminPassword = setupData?.get("AdminPasswd").value(),
+      backend = setupData?.get("Backend").value(),
+      setupData = setupData?.get("ConnectionProperties").value(),
+      authenticator = setupData?.get("Authenticator").value(),
+      authSetupData = setupData?.get("AuthProperties").value()
+    )
+  }
+}
+
+object CoreSetupRejectSerializer : HandshakeMessageSerializer<HandshakeMessage.CoreSetupReject> {
+  override fun serialize(data: HandshakeMessage.CoreSetupReject) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "Error" to QVariant_(data.errorString, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.CoreSetupReject(
+    errorString = data["Error"].value()
+  )
+}
+
+object CoreSetupAckSerializer : HandshakeMessageSerializer<HandshakeMessage.CoreSetupAck> {
+  override fun serialize(data: HandshakeMessage.CoreSetupAck) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.CoreSetupAck()
+}
+
+object ClientLoginSerializer : HandshakeMessageSerializer<HandshakeMessage.ClientLogin> {
+  override fun serialize(data: HandshakeMessage.ClientLogin) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "User" to QVariant_(data.user, Type.QString),
+    "Password" to QVariant_(data.password, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientLogin(
+    user = data["User"].value(),
+    password = data["Password"].value()
+  )
+}
+
+object ClientLoginRejectSerializer :
+  HandshakeMessageSerializer<HandshakeMessage.ClientLoginReject> {
+  override fun serialize(data: HandshakeMessage.ClientLoginReject) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "Error" to QVariant_(data.errorString, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientLoginReject(
+    errorString = data["Error"].value()
+  )
+}
+
+object ClientLoginAckSerializer : HandshakeMessageSerializer<HandshakeMessage.ClientLoginAck> {
+  override fun serialize(data: HandshakeMessage.ClientLoginAck) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString)
+  )
+
+  override fun deserialize(data: QVariantMap) = HandshakeMessage.ClientLoginAck()
+}
+
+object SessionInitSerializer : HandshakeMessageSerializer<HandshakeMessage.SessionInit> {
+  override fun serialize(data: HandshakeMessage.SessionInit) = mapOf(
+    "MsgType" to QVariant_(data::class.java.simpleName, Type.QString),
+    "SessionState" to QVariant_(mapOf(
+      "BufferInfos" to QVariant_(data.bufferInfos, Type.QVariantList),
+      "NetworkIds" to QVariant_(data.networkIds, Type.QVariantList),
+      "Identities" to QVariant_(data.identities, Type.QVariantList)
+    ), Type.QVariantMap)
+  )
+
+  override fun deserialize(data: QVariantMap): HandshakeMessage.SessionInit {
+    val setupData = data["SessionState"].value<QVariantMap?>()
+    return HandshakeMessage.SessionInit(
+      bufferInfos = setupData?.get("BufferInfos").value(),
+      networkIds = setupData?.get("NetworkIds").value(),
+      identities = setupData?.get("Identities").value()
+    )
+  }
+}
+
+interface HandshakeMessageSerializer<T : HandshakeMessage> {
+  fun serialize(data: T): QVariantMap
+  fun deserialize(data: QVariantMap): T
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/MetaType.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/MetaType.kt
new file mode 100644
index 000000000..b5ca4e9f3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/MetaType.kt
@@ -0,0 +1,101 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.*
+import org.threeten.bp.LocalTime
+import org.threeten.bp.OffsetDateTime
+
+data class MetaType<T>(val klass: Class<T>, val type: Type, val serializer: Serializer<T>? = null,
+                       val name: String = type.serializableName) {
+  companion object {
+    private val byName = HashMap<String, MetaType<*>>()
+    private val byType = HashMap<Type, MetaType<*>>()
+
+    private inline fun <reified T : Any?> addType(type: Type,
+                                                  serializer: Serializer<T>? = null) {
+      val metaType = MetaType(T::class.java, type, serializer, type.serializableName)
+      byName[metaType.name] = metaType
+      byType[metaType.type] = metaType
+    }
+
+    private inline fun <reified T : Any?> addType(type: Type, name: String,
+                                                  serializer: Serializer<T>? = null) {
+      val metaType = MetaType(T::class.java, type, serializer, name)
+      byName[metaType.name] = metaType
+    }
+
+    private inline fun <reified T : Any?> addType(type: Type, name: QType,
+                                                  serializer: Serializer<T>? = null) {
+      addType(type, name.typeName, serializer)
+    }
+
+    init {
+      addType(Type.Void, VoidSerializer)
+      addType(Type.Bool, BoolSerializer)
+      addType(Type.Char, ByteSerializer)
+      addType(Type.UChar, ByteSerializer)
+      addType(Type.Short, ShortSerializer)
+      addType(Type.UShort, ShortSerializer)
+      addType(Type.Int, IntSerializer)
+      addType(Type.UInt, IntSerializer)
+      addType(Type.Long, LongSerializer)
+      addType(Type.ULong, LongSerializer)
+
+      addType(Type.QTime, TimeSerializer)
+      addType(Type.QDateTime, DateTimeSerializer)
+      addType(Type.QChar, CharSerializer)
+      addType(Type.QString, StringSerializer.UTF16)
+      addType(Type.QByteArray, ByteArraySerializer)
+      addType(Type.QStringList, StringListSerializer)
+      addType(Type.QVariantList, VariantListSerializer)
+      addType(Type.QVariantMap, VariantMapSerializer)
+      addType(Type.QVariant, VariantSerializer)
+
+      addType(Type.UserType, QType.BufferId, IntSerializer)
+      addType(Type.UserType, QType.BufferInfo, BufferInfoSerializer)
+      addType(Type.UserType, QType.DccConfig_IpDetectionMode, DccConfig_IpDetectionModeSerializer)
+      addType(Type.UserType, QType.DccConfig_PortSelectionMode,
+              DccConfig_PortSelectionModeSerializer)
+      addType(Type.UserType, QType.IrcUser, VariantMapSerializer)
+      addType(Type.UserType, QType.IrcChannel, VariantMapSerializer)
+      addType(Type.UserType, QType.Identity, VariantMapSerializer)
+      addType(Type.UserType, QType.IdentityId, IntSerializer)
+      addType(Type.UserType, QType.MsgId, IntSerializer)
+      addType(Type.UserType, QType.Message, MessageSerializer)
+      addType(Type.UserType, QType.NetworkId, IntSerializer)
+      addType(Type.UserType, QType.NetworkInfo, VariantMapSerializer)
+      addType(Type.UserType, QType.Network_Server, VariantMapSerializer)
+      addType(Type.UserType, QType.QHostAddress, HostAddressSerializer)
+
+      addType(Type.QByteArray, "UTF8String", StringSerializer.UTF8)
+      addType(Type.QByteArray, "CString", StringSerializer.C)
+
+      addType(Type.Long, "PeerPtr", LongSerializer)
+    }
+
+    fun <T : Any?> get(key: String?): MetaType<T> =
+      byName[key] as MetaType<T>? ?: throw(IllegalArgumentException("Type does not exist: $key"))
+
+
+    fun <T : Any?> get(key: Type?): MetaType<T> =
+      byType[key] as MetaType<T>? ?: throw(IllegalArgumentException("Type does not exist: $key"))
+
+    fun <T : Any?> get(data: T): MetaType<T>? = when (data) {
+      equals(null)      -> get(Type.Void)
+      is Boolean        -> get<Boolean>(Type.Bool)
+      is Byte           -> get<Byte>(Type.Char)
+      is Short          -> get<Short>(Type.Short)
+      is Int            -> get<Int>(Type.Int)
+      is Long           -> get<Long>(Type.Long)
+      is LocalTime      -> get<LocalTime>(Type.QTime)
+      is OffsetDateTime -> get<OffsetDateTime>(Type.QDateTime)
+      is String         -> get<String?>(Type.QString)
+      is QVariant<*>    -> get<QVariant<*>>(Type.QVariant)
+      is List<*>        -> if (data.isEmpty() || data[0] !is String) {
+        get<List<*>>(Type.QVariantList)
+      } else {
+        get<QStringList>(Type.QStringList)
+      }
+      else              -> throw IllegalArgumentException("Unsupported type: $data")
+    } as MetaType<T>
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/NetworkLayerProtocol.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/NetworkLayerProtocol.kt
new file mode 100644
index 000000000..606a5d26a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/NetworkLayerProtocol.kt
@@ -0,0 +1,13 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+enum class NetworkLayerProtocol(val value: Byte) {
+  IPv4Protocol(0),
+  IPv6Protocol(1),
+  AnyIPProtocol(2),
+  UnknownNetworkLayerProtocol(-1);
+
+  companion object {
+    private val byId = NetworkLayerProtocol.values().associateBy(NetworkLayerProtocol::value)
+    fun of(value: Byte) = byId[value] ?: NetworkLayerProtocol.UnknownNetworkLayerProtocol
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QType.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QType.kt
new file mode 100644
index 000000000..ce1138a16
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QType.kt
@@ -0,0 +1,19 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+enum class QType(val typeName: String) {
+  BufferId("BufferId"),
+  BufferInfo("BufferInfo"),
+  DccConfig_IpDetectionMode("DccConfig::IpDetectionMode"),
+  DccConfig_PortSelectionMode("DccConfig::PortSelectionMode"),
+  IrcUser("IrcUser"),
+  IrcChannel("IrcChannel"),
+  Identity("Identity"),
+  IdentityId("IdentityId"),
+  Message("Message"),
+  MsgId("MsgId"),
+  Network("Network"),
+  NetworkId("NetworkId"),
+  NetworkInfo("NetworkInfo"),
+  Network_Server("Network::Server"),
+  QHostAddress("QHostAddress")
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QTypes.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QTypes.kt
new file mode 100644
index 000000000..970d9a74b
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QTypes.kt
@@ -0,0 +1,116 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.StringSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.deserializeString
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.serializeString
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.quassel.ProtocolFeature
+import de.kuschku.quasseldroid_ng.quassel.QuasselFeature
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.INetwork
+import de.kuschku.quasseldroid_ng.util.Flags
+import de.kuschku.quasseldroid_ng.util.ShortFlags
+import java.nio.ByteBuffer
+
+typealias QStringList = List<String?>
+typealias All_ = Any?
+typealias QVariant_ = QVariant<All_>
+typealias QVariantMap = Map<String, QVariant_>
+typealias QVariantList = List<QVariant_>
+
+typealias IdentityId = Int
+typealias BufferId = Int
+typealias MsgId = Int
+typealias NetworkId = Int
+
+typealias Message_Type = QuasselDatabase.Message.MessageType
+typealias Message_Types = Flags<Message_Type>
+
+typealias Message_Flag = QuasselDatabase.Message.MessageFlag
+typealias Message_Flags = Flags<Message_Flag>
+
+typealias Quassel_Feature = QuasselFeature
+typealias Quassel_Features = Flags<Quassel_Feature>
+
+typealias Protocol_Feature = ProtocolFeature
+typealias Protocol_Features = Flags<Protocol_Feature>
+
+typealias Network_ChannelModeType = INetwork.ChannelModeType
+typealias Network_ChannelModeTypes = Flags<Network_ChannelModeType>
+
+typealias Buffer_Type = BufferInfo.Type
+typealias Buffer_Types = ShortFlags<Buffer_Type>
+
+typealias Buffer_Activity = BufferInfo.Activity
+typealias Buffer_Activities = Flags<Buffer_Activity>
+
+typealias UByte = Byte
+typealias UShort = Short
+typealias UInt = Int
+typealias ULong = Long
+
+inline val SLOT
+  get() = Throwable().stackTrace.first().methodName
+
+typealias ARG = QVariant_
+
+fun QVariantMap.toVariantList(): QVariantList =
+  entries.flatMap { (key, value) ->
+    listOf(QVariant_(key.serializeString(StringSerializer.UTF8), Type.QByteArray), value)
+  }
+
+fun QVariantList.toVariantMap(): QVariantMap =
+  (0 until size step 2).map {
+    Pair(
+      get(it).value<ByteBuffer?>().deserializeString(StringSerializer.UTF8) ?: "",
+      get(it + 1)
+    )
+  }.toMap()
+
+fun <K, V> List<Map<K, V>>.transpose(): Map<K, List<V>> {
+  val result = mutableMapOf<K, MutableList<V>>()
+  forEach { map ->
+    map.entries.forEach { (key, value) ->
+      result.getOrPut(key, ::mutableListOf).add(value)
+    }
+  }
+  return result
+}
+
+
+fun <K, V> Map<K, List<V>>.transpose(): List<Map<K, V>> {
+  val result = MutableList(values.map(List<*>::size).max() ?: 0) { mutableMapOf<K, V>() }
+  this.entries.forEach { (key, values) ->
+    values.forEachIndexed { index, value ->
+      result[index][key] = value
+    }
+  }
+  return result
+}
+
+fun nickFromMask(mask: String): String {
+  val (nick, _, _) = splitHostMask(mask)
+  return nick
+}
+
+fun userFromMask(mask: String): String {
+  val (_, user, _) = splitHostMask(mask)
+  return user
+}
+
+fun hostFromMask(mask: String): String {
+  val (_, _, host) = splitHostMask(mask)
+  return host
+}
+
+fun splitHostMask(mask: String): Triple<String, String, String> {
+  if (!mask.contains("@"))
+    return Triple(mask, "", "")
+
+  val (userPart, host) = mask.split("@", limit = 2)
+  if (!userPart.contains("!"))
+    return Triple(mask, "", host)
+
+  val (nick, user) = userPart.split('!', limit = 2)
+  return Triple(nick, user, host)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QVariant.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QVariant.kt
new file mode 100644
index 000000000..da5ffb395
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/QVariant.kt
@@ -0,0 +1,45 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+class QVariant<T>(val data: T?, val type: MetaType<T>) {
+  constructor(data: T?, type: Type) : this(data, MetaType.Companion.get(type))
+  constructor(data: T?, type: QType) : this(data, type.typeName)
+  constructor(data: T?, type: String) : this(data, MetaType.Companion.get(type))
+
+  private fun <U> coerce(): QVariant<U> {
+    return this as QVariant<U>
+  }
+
+  fun or(defValue: T): T {
+    return data ?: defValue
+  }
+
+  fun <U> _value(defValue: U): U {
+    return this.coerce<U>().data ?: defValue
+  }
+
+  fun <U> _valueOr(f: () -> U): U {
+    return this.coerce<U>().data ?: f()
+  }
+
+  fun <U> _valueOrThrow(): U = this._valueOrThrow(NullPointerException())
+
+  fun <U> _valueOrThrow(e: Throwable): U {
+    return this.coerce<U>().data ?: throw e
+  }
+
+  override fun toString(): String {
+    return "QVariant(${type.name}, $data)"
+  }
+}
+
+fun <U> QVariant_?.value(): U?
+  = this?._value<U?>(null)
+
+fun <U> QVariant_?.value(defValue: U): U
+  = this?._value<U>(defValue) ?: defValue
+
+fun <U> QVariant_?.valueOr(f: () -> U): U
+  = this?._valueOr<U>(f) ?: f()
+
+fun <U> QVariant_?.valueOrThrow(e: Throwable = NullPointerException()): U
+  = this?._valueOrThrow<U>(e) ?: throw e
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/SignalProxyMessage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/SignalProxyMessage.kt
new file mode 100644
index 000000000..b694e50c5
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/SignalProxyMessage.kt
@@ -0,0 +1,172 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.StringSerializer.UTF8
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.deserializeString
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.serializeString
+import org.threeten.bp.Instant
+import java.nio.ByteBuffer
+
+enum class RequestType(val value: Int) {
+  Invalid(0),
+  Sync(1),
+  RpcCall(2),
+  InitRequest(3),
+  InitData(4),
+  HeartBeat(5),
+  HeartBeatReply(6);
+
+  companion object {
+    private val byId = enumValues<RequestType>().associateBy(RequestType::value)
+    fun of(value: Int) = byId[value] ?: Invalid
+  }
+}
+
+sealed class SignalProxyMessage {
+  class SyncMessage(val className: String, val objectName: String, val slotName: String,
+                    val params: QVariantList) : SignalProxyMessage() {
+    override fun toString(): String {
+      return "SyncMessage::$className:$objectName/$slotName"
+    }
+  }
+
+  class RpcCall(val slotName: String, val params: QVariantList) : SignalProxyMessage() {
+    override fun toString(): String {
+      return "RpcCall::$slotName"
+    }
+  }
+
+  class InitRequest(val className: String, val objectName: String) : SignalProxyMessage() {
+    override fun toString(): String {
+      return "InitRequest::$className:$objectName"
+    }
+  }
+
+  class InitData(val className: String, val objectName: String, val initData: QVariantMap) :
+    SignalProxyMessage() {
+    override fun toString(): String {
+      return "InitData::$className:$objectName"
+    }
+  }
+
+  class HeartBeat(val timestamp: Instant) : SignalProxyMessage() {
+    override fun toString(): String {
+      return "HeartBeat::$timestamp"
+    }
+  }
+
+  class HeartBeatReply(val timestamp: Instant) : SignalProxyMessage() {
+    override fun toString(): String {
+      return "HeartBeatReply::$timestamp"
+    }
+  }
+
+  companion object : SignalProxyMessageSerializer<SignalProxyMessage> {
+    override fun serialize(data: SignalProxyMessage) = when (data) {
+      is SignalProxyMessage.SyncMessage    -> SyncMessageSerializer.serialize(data)
+      is SignalProxyMessage.RpcCall        -> RpcCallSerializer.serialize(data)
+      is SignalProxyMessage.InitRequest    -> InitRequestSerializer.serialize(data)
+      is SignalProxyMessage.InitData       -> InitDataSerializer.serialize(data)
+      is SignalProxyMessage.HeartBeat      -> HeartBeatSerializer.serialize(data)
+      is SignalProxyMessage.HeartBeatReply -> HeartBeatReplySerializer.serialize(data)
+    }
+
+    override fun deserialize(data: QVariantList): SignalProxyMessage {
+      val type = data.first().value(-1)
+      return when (RequestType.of(type)) {
+        RequestType.Sync           -> SyncMessageSerializer.deserialize(data.drop(1))
+        RequestType.RpcCall        -> RpcCallSerializer.deserialize(data.drop(1))
+        RequestType.InitRequest    -> InitRequestSerializer.deserialize(data.drop(1))
+        RequestType.InitData       -> InitDataSerializer.deserialize(data.drop(1))
+        RequestType.HeartBeat      -> HeartBeatSerializer.deserialize(data.drop(1))
+        RequestType.HeartBeatReply -> HeartBeatReplySerializer.deserialize(data.drop(1))
+        else                       -> throw IllegalArgumentException("Invalid MsgType: $type")
+      }
+    }
+
+  }
+}
+
+object SyncMessageSerializer : SignalProxyMessageSerializer<SignalProxyMessage.SyncMessage> {
+  override fun serialize(data: SignalProxyMessage.SyncMessage): QVariantList = listOf(
+    QVariant_(RequestType.Sync.value, Type.Int),
+    QVariant_(data.className.serializeString(UTF8), Type.QByteArray),
+    QVariant_(data.objectName.serializeString(UTF8), Type.QByteArray),
+    QVariant_(data.slotName.serializeString(UTF8), Type.QByteArray),
+    *data.params.toTypedArray()
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.SyncMessage(
+    data[0].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data[1].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data[2].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data.drop(3)
+  )
+}
+
+object RpcCallSerializer : SignalProxyMessageSerializer<SignalProxyMessage.RpcCall> {
+  override fun serialize(data: SignalProxyMessage.RpcCall) = listOf(
+    QVariant_(RequestType.RpcCall.value, Type.Int),
+    QVariant_(data.slotName.serializeString(UTF8), Type.QByteArray),
+    *data.params.toTypedArray()
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.RpcCall(
+    data[0].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data.drop(1)
+  )
+}
+
+object InitRequestSerializer : SignalProxyMessageSerializer<SignalProxyMessage.InitRequest> {
+  override fun serialize(data: SignalProxyMessage.InitRequest) = listOf(
+    QVariant_(RequestType.InitRequest.value, Type.Int),
+    QVariant_(data.className.serializeString(UTF8), Type.QByteArray),
+    QVariant_(data.objectName.serializeString(UTF8), Type.QByteArray)
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.InitRequest(
+    data[0].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data[1].value<ByteBuffer?>().deserializeString(UTF8) ?: ""
+  )
+}
+
+object InitDataSerializer : SignalProxyMessageSerializer<SignalProxyMessage.InitData> {
+  override fun serialize(data: SignalProxyMessage.InitData) = listOf(
+    QVariant_(RequestType.InitData.value, Type.Int),
+    QVariant_(data.className.serializeString(UTF8), Type.QByteArray),
+    QVariant_(data.objectName.serializeString(UTF8), Type.QByteArray),
+    QVariant_(data.initData, Type.QVariantMap)
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.InitData(
+    data[0].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data[1].value<ByteBuffer?>().deserializeString(UTF8) ?: "",
+    data.drop(2).toVariantMap()
+  )
+}
+
+object HeartBeatSerializer : SignalProxyMessageSerializer<SignalProxyMessage.HeartBeat> {
+  override fun serialize(data: SignalProxyMessage.HeartBeat) = listOf(
+    QVariant_(RequestType.HeartBeat.value, Type.Int),
+    QVariant_(data.timestamp, Type.QDateTime)
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.HeartBeat(
+    data[0].value(Instant.EPOCH)
+  )
+}
+
+object HeartBeatReplySerializer : SignalProxyMessageSerializer<SignalProxyMessage.HeartBeatReply> {
+  override fun serialize(data: SignalProxyMessage.HeartBeatReply) = listOf(
+    QVariant_(RequestType.HeartBeatReply.value, Type.Int),
+    QVariant_(data.timestamp, Type.QDateTime)
+  )
+
+  override fun deserialize(data: QVariantList) = SignalProxyMessage.HeartBeatReply(
+    data[0].value(Instant.EPOCH)
+  )
+}
+
+interface SignalProxyMessageSerializer<T : SignalProxyMessage> {
+  fun serialize(data: T): QVariantList
+  fun deserialize(data: QVariantList): T
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/Type.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/Type.kt
new file mode 100644
index 000000000..dfe2dedee
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/Type.kt
@@ -0,0 +1,104 @@
+package de.kuschku.quasseldroid_ng.protocol
+
+import java.util.*
+
+
+enum class Type(val id: kotlin.Int) {
+  Void(0),
+  Bool(1),
+  Int(2),
+  UInt(3),
+  LongLong(4),
+  ULongLong(5),
+
+  Double(6),
+  QChar(7),
+  QVariantMap(8),
+  QVariantList(9),
+
+  QString(10),
+  QStringList(11),
+  QByteArray(12),
+
+  QBitArray(13),
+  QDate(14),
+  QTime(15),
+  QDateTime(16),
+  QUrl(17),
+
+  QLocale(18),
+  QRect(19),
+  QRectF(20),
+  QSize(21),
+  QSizeF(22),
+
+  QLine(23),
+  QLineF(24),
+  QPoint(25),
+  QPointF(26),
+  QRegExp(27),
+
+  QVariantHash(28),
+  QEasingCurve(29),
+
+  FirstGuiType(63),
+
+  QFont(64),
+  QPixmap(65),
+  QBrush(66),
+  QColor(67),
+  QPalette(68),
+
+  QIcon(69),
+  QImage(70),
+  QPolygon(71),
+  QRegion(72),
+  QBitmap(73),
+
+  QCursor(74),
+  QSizePolicy(75),
+  QKeySequence(76),
+  QPen(77),
+
+  QTextLength(78),
+  QTextFormat(79),
+  QMatrix(80),
+  QTransform(81),
+
+  QMatrix4x4(82),
+  QVector2D(83),
+  QVector3D(84),
+  QVector4D(85),
+
+  QQuaternion(86),
+
+  VoidStar(128),
+  Long(129),
+  Short(130),
+  Char(131),
+  ULong(132),
+
+  UShort(133),
+  UChar(134),
+  Float(135),
+  QObjectStar(136),
+  QWidgetStar(137),
+
+  QVariant(138),
+
+  User(256),
+  UserType(127),
+  LastType(-1);
+
+  val serializableName
+    get() = if (name.startsWith("Q")) {
+      name
+    } else {
+      name.toLowerCase(Locale.ENGLISH)
+    }
+
+  companion object {
+    private val byId = Type.values().associateBy(Type::id)
+    fun of(type: kotlin.Int) = byId[type]
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BoolSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BoolSerializer.kt
new file mode 100644
index 000000000..67c8b33a8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BoolSerializer.kt
@@ -0,0 +1,17 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object BoolSerializer : Serializer<Boolean> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Boolean,
+                         features: Quassel_Features) = buffer.put(if (data) {
+    0x01
+  } else {
+    0x00
+  }.toByte())
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features)
+    = buffer.get() != 0x00.toByte()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BufferInfoSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BufferInfoSerializer.kt
new file mode 100644
index 000000000..15398ee17
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/BufferInfoSerializer.kt
@@ -0,0 +1,32 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Buffer_Type
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object BufferInfoSerializer : Serializer<BufferInfo> {
+  override fun serialize(buffer: ChainedByteBuffer, data: BufferInfo, features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.bufferId, features)
+    IntSerializer.serialize(buffer, data.networkId, features)
+    ShortSerializer.serialize(buffer, data.type.toShort(), features)
+    IntSerializer.serialize(buffer, data.groupId, features)
+    StringSerializer.UTF8.serialize(buffer, data.bufferName, features)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): BufferInfo {
+    val bufferId = IntSerializer.deserialize(buffer, features)
+    val networkId = IntSerializer.deserialize(buffer, features)
+    val type = Buffer_Type.of(ShortSerializer.deserialize(buffer, features))
+    val groupId = IntSerializer.deserialize(buffer, features)
+    val bufferName = StringSerializer.UTF8.deserialize(buffer, features)
+    return BufferInfo(
+      bufferId = bufferId,
+      networkId = networkId,
+      type = type,
+      groupId = groupId,
+      bufferName = bufferName
+    )
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteArraySerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteArraySerializer.kt
new file mode 100644
index 000000000..7a6bd9039
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteArraySerializer.kt
@@ -0,0 +1,29 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object ByteArraySerializer : Serializer<ByteBuffer?> {
+  override fun serialize(buffer: ChainedByteBuffer, data: ByteBuffer?, features: Quassel_Features) {
+    if (data == null) {
+      IntSerializer.serialize(buffer, -1, features)
+    } else {
+      IntSerializer.serialize(buffer, data.remaining(), features)
+      buffer.put(data)
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): ByteBuffer? {
+    val len = IntSerializer.deserialize(buffer, features)
+    return if (len == -1) {
+      null
+    } else {
+      val result = ByteBuffer.allocate(len)
+      while (result.hasRemaining())
+        result.put(buffer.get())
+      result.flip()
+      result
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteSerializer.kt
new file mode 100644
index 000000000..47e0f47ea
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ByteSerializer.kt
@@ -0,0 +1,15 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object ByteSerializer : Serializer<Byte> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Byte, features: Quassel_Features) {
+    buffer.put(data)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Byte {
+    return buffer.get()
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/CharSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/CharSerializer.kt
new file mode 100644
index 000000000..2d031300a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/CharSerializer.kt
@@ -0,0 +1,44 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+import java.nio.CharBuffer
+
+object CharSerializer : Serializer<Char> {
+  private val byteBuffer = ByteBuffer.allocateDirect(2)
+  private val charBuffer = CharBuffer.allocate(1)
+  private val encoder = Charsets.UTF_16BE.newEncoder()
+  private val decoder = Charsets.UTF_16BE.newDecoder()
+
+  override fun serialize(buffer: ChainedByteBuffer, data: Char, features: Quassel_Features) {
+    synchronized(this) {
+      charBuffer.clear()
+      charBuffer.put(data)
+      charBuffer.flip()
+      byteBuffer.clear()
+      encoder.encode(charBuffer, byteBuffer, true)
+      byteBuffer.flip()
+      if (byteBuffer.remaining() == 2) {
+        buffer.put(byteBuffer)
+      } else {
+        buffer.putShort(0)
+      }
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Char {
+    synchronized(this) {
+      byteBuffer.clear()
+      byteBuffer.putShort(buffer.short)
+      byteBuffer.flip()
+      charBuffer.clear()
+      decoder.decode(byteBuffer, charBuffer, true)
+      charBuffer.flip()
+      return if (charBuffer.remaining() == 1)
+        charBuffer.get()
+      else
+        '\u0000'
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DateTimeSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DateTimeSerializer.kt
new file mode 100644
index 000000000..b70ad22b1
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DateTimeSerializer.kt
@@ -0,0 +1,73 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import org.threeten.bp.Instant
+import org.threeten.bp.LocalDateTime
+import org.threeten.bp.OffsetDateTime
+import org.threeten.bp.ZoneOffset
+import org.threeten.bp.temporal.ChronoField
+import org.threeten.bp.temporal.JulianFields
+import org.threeten.bp.temporal.Temporal
+import java.nio.ByteBuffer
+
+object DateTimeSerializer : Serializer<Temporal> {
+  enum class TimeSpec(val value: Byte) {
+    LocalTime(0),
+    UTC(1),
+    OffsetFromUTC(2),
+    TimeZone(3);
+
+    companion object {
+      private val map = TimeSpec.values().associateBy(TimeSpec::value)
+      fun of(type: Byte) = map[type]
+    }
+  }
+
+  override fun serialize(buffer: ChainedByteBuffer, data: Temporal, features: Quassel_Features) {
+    when (data) {
+      is LocalDateTime  -> {
+        IntSerializer.serialize(buffer, data.getLong(JulianFields.JULIAN_DAY).toInt(), features)
+        IntSerializer.serialize(buffer, data.getLong(ChronoField.MILLI_OF_DAY).toInt(), features)
+        ByteSerializer.serialize(buffer, TimeSpec.LocalTime.value, features)
+      }
+      is OffsetDateTime -> {
+        IntSerializer.serialize(buffer, data.getLong(JulianFields.JULIAN_DAY).toInt(), features)
+        IntSerializer.serialize(buffer, data.getLong(ChronoField.MILLI_OF_DAY).toInt(), features)
+        ByteSerializer.serialize(buffer, TimeSpec.OffsetFromUTC.value, features)
+        IntSerializer.serialize(buffer, data.offset.totalSeconds, features)
+      }
+      is Instant        -> {
+        val time = data.atOffset(ZoneOffset.UTC)
+        IntSerializer.serialize(buffer, time.getLong(JulianFields.JULIAN_DAY).toInt(), features)
+        IntSerializer.serialize(buffer, time.getLong(ChronoField.MILLI_OF_DAY).toInt(), features)
+        ByteSerializer.serialize(buffer, TimeSpec.UTC.value, features)
+      }
+      else              ->
+        throw IllegalArgumentException(
+          "Unsupported Format: ${data::class.java.canonicalName}")
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Temporal {
+    val julianDay = IntSerializer.deserialize(buffer, features).toLong()
+    val milliOfDay = IntSerializer.deserialize(buffer, features).toLong()
+    val timeSpec = TimeSpec.of(ByteSerializer.deserialize(buffer, features))
+    if (milliOfDay == -1L || julianDay == -1L)
+      return Instant.EPOCH
+    return when (timeSpec) {
+      TimeSpec.LocalTime ->
+        LocalDateTime.now()
+          .with(JulianFields.JULIAN_DAY, julianDay)
+          .with(ChronoField.MILLI_OF_DAY, milliOfDay)
+          .atZone(ZoneOffset.systemDefault())
+          .toInstant()
+      else               ->
+        OffsetDateTime.now()
+          .with(JulianFields.JULIAN_DAY, julianDay)
+          .with(ChronoField.MILLI_OF_DAY, milliOfDay)
+          .withOffsetSameLocal(ZoneOffset.UTC)
+          .toInstant()
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_IpDetectionModeSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_IpDetectionModeSerializer.kt
new file mode 100644
index 000000000..0df0a8001
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_IpDetectionModeSerializer.kt
@@ -0,0 +1,18 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IDccConfig
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object DccConfig_IpDetectionModeSerializer : Serializer<IDccConfig.IpDetectionMode> {
+  override fun serialize(buffer: ChainedByteBuffer, data: IDccConfig.IpDetectionMode,
+                         features: Quassel_Features) {
+    buffer.put(data.value)
+  }
+
+  override fun deserialize(buffer: ByteBuffer,
+                           features: Quassel_Features): IDccConfig.IpDetectionMode {
+    return IDccConfig.IpDetectionMode.of(buffer.get())
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_PortSelectionModeSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_PortSelectionModeSerializer.kt
new file mode 100644
index 000000000..f97b8308c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/DccConfig_PortSelectionModeSerializer.kt
@@ -0,0 +1,18 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IDccConfig
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object DccConfig_PortSelectionModeSerializer : Serializer<IDccConfig.PortSelectionMode> {
+  override fun serialize(buffer: ChainedByteBuffer, data: IDccConfig.PortSelectionMode,
+                         features: Quassel_Features) {
+    buffer.put(data.value)
+  }
+
+  override fun deserialize(buffer: ByteBuffer,
+                           features: Quassel_Features): IDccConfig.PortSelectionMode {
+    return IDccConfig.PortSelectionMode.of(buffer.get())
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HandshakeVariantMapSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HandshakeVariantMapSerializer.kt
new file mode 100644
index 000000000..e928abb82
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HandshakeVariantMapSerializer.kt
@@ -0,0 +1,31 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object HandshakeVariantMapSerializer : Serializer<QVariantMap> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QVariantMap, features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.size * 2, features)
+    data.entries.forEach { (key, value) ->
+      VariantSerializer.serialize(buffer, QVariant_(key, Type.QString), features)
+      VariantSerializer.serialize(buffer, value, features)
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QVariantMap {
+    val range = 0 until IntSerializer.deserialize(buffer, features) / 2
+    val pairs = range.map {
+      val keyRaw: ByteBuffer? = VariantSerializer.deserialize(buffer, features).value()
+      val key: String? = if (keyRaw != null) {
+        StringSerializer.UTF8.deserializeAll(keyRaw)
+      } else {
+        null
+      }
+      val value = VariantSerializer.deserialize(buffer, features)
+      Pair(key ?: "", value)
+    }
+    val pairArray = pairs.toTypedArray()
+    return mapOf(*pairArray)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HostAddressSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HostAddressSerializer.kt
new file mode 100644
index 000000000..74c0c6168
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/HostAddressSerializer.kt
@@ -0,0 +1,48 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.NetworkLayerProtocol
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.net.Inet4Address
+import java.net.Inet6Address
+import java.net.InetAddress
+import java.nio.ByteBuffer
+
+object HostAddressSerializer : Serializer<InetAddress> {
+  override fun serialize(buffer: ChainedByteBuffer, data: InetAddress, features: Quassel_Features) {
+    when (data) {
+      is Inet4Address -> {
+        ByteSerializer.serialize(buffer, NetworkLayerProtocol.IPv4Protocol.value, features)
+        buffer.put(data.address)
+      }
+      is Inet6Address -> {
+        ByteSerializer.serialize(buffer, NetworkLayerProtocol.IPv6Protocol.value, features)
+        buffer.put(data.address)
+      }
+      else            -> {
+        ByteSerializer.serialize(buffer, NetworkLayerProtocol.UnknownNetworkLayerProtocol.value,
+                                 features)
+        throw IllegalArgumentException("Invalid network protocol ${data.javaClass.canonicalName}")
+      }
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): InetAddress {
+    val type = ByteSerializer.deserialize(buffer, features)
+    return when (NetworkLayerProtocol.of(type)) {
+      NetworkLayerProtocol.IPv4Protocol -> {
+        val buf = ByteArray(4)
+        buffer.get(buf)
+        Inet4Address.getByAddress(buf)
+      }
+      NetworkLayerProtocol.IPv6Protocol -> {
+        val buf = ByteArray(16)
+        buffer.get(buf)
+        Inet6Address.getByAddress(buf)
+      }
+      else                              -> {
+        throw IllegalArgumentException("Invalid network protocol $type")
+      }
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/IntSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/IntSerializer.kt
new file mode 100644
index 000000000..f3c680e22
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/IntSerializer.kt
@@ -0,0 +1,15 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object IntSerializer : Serializer<Int> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Int, features: Quassel_Features) {
+    buffer.putInt(data)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Int {
+    return buffer.int
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/LongSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/LongSerializer.kt
new file mode 100644
index 000000000..2e92c7b1f
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/LongSerializer.kt
@@ -0,0 +1,15 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object LongSerializer : Serializer<Long> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Long, features: Quassel_Features) {
+    buffer.putLong(data)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Long {
+    return buffer.long
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/MessageSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/MessageSerializer.kt
new file mode 100644
index 000000000..96fe47730
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/MessageSerializer.kt
@@ -0,0 +1,40 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.quassel.QuasselFeature
+import de.kuschku.quasseldroid_ng.util.hasFlag
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import org.threeten.bp.Instant
+import java.nio.ByteBuffer
+
+object MessageSerializer : Serializer<QuasselDatabase.RawMessage> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QuasselDatabase.RawMessage,
+                         features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.messageId, features)
+    IntSerializer.serialize(buffer, data.time.epochSecond.toInt(), features)
+    IntSerializer.serialize(buffer, data.type, features)
+    ByteSerializer.serialize(buffer, data.flag.toByte(), features)
+    BufferInfoSerializer.serialize(buffer, data.bufferInfo, features)
+    StringSerializer.UTF8.serialize(buffer, data.sender, features)
+    if (features.hasFlag(QuasselFeature.SenderPrefixes))
+      StringSerializer.UTF8.serialize(buffer, data.senderPrefixes, features)
+    StringSerializer.UTF8.serialize(buffer, data.content, features)
+  }
+
+  override fun deserialize(buffer: ByteBuffer,
+                           features: Quassel_Features): QuasselDatabase.RawMessage {
+    return QuasselDatabase.RawMessage(
+      messageId = IntSerializer.deserialize(buffer, features),
+      time = Instant.ofEpochSecond(IntSerializer.deserialize(buffer, features).toLong()),
+      type = QuasselDatabase.Message.MessageType.of(IntSerializer.deserialize(buffer, features)),
+      flag = QuasselDatabase.Message.MessageFlag.of(
+        ByteSerializer.deserialize(buffer, features).toInt()),
+      bufferInfo = BufferInfoSerializer.deserialize(buffer, features),
+      sender = StringSerializer.UTF8.deserialize(buffer, features) ?: "",
+      senderPrefixes = if (features.hasFlag(QuasselFeature.SenderPrefixes))
+        StringSerializer.UTF8.deserialize(buffer, features) ?: "" else "",
+      content = StringSerializer.UTF8.deserialize(buffer, features) ?: ""
+    )
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ProtocolSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ProtocolSerializer.kt
new file mode 100644
index 000000000..69d9aafce
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ProtocolSerializer.kt
@@ -0,0 +1,23 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Protocol_Features
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.quassel.Protocol
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object ProtocolSerializer : Serializer<Protocol> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Protocol, features: Quassel_Features) {
+    ByteSerializer.serialize(buffer, data.flags.toByte(), features)
+    ShortSerializer.serialize(buffer, data.data, features)
+    ByteSerializer.serialize(buffer, data.version, features)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Protocol {
+    return Protocol(
+      Protocol_Features.of(ByteSerializer.deserialize(buffer, features).toInt()),
+      ShortSerializer.deserialize(buffer, features),
+      ByteSerializer.deserialize(buffer, features)
+    )
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/Serializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/Serializer.kt
new file mode 100644
index 000000000..aa3f55566
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/Serializer.kt
@@ -0,0 +1,27 @@
+/*
+ *  Copyright (C) 2017 Janne Koschinski
+ *
+ *  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, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+interface Serializer<T> {
+  fun serialize(buffer: ChainedByteBuffer, data: T, features: Quassel_Features)
+  fun deserialize(buffer: ByteBuffer, features: Quassel_Features): T
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ShortSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ShortSerializer.kt
new file mode 100644
index 000000000..f9f733e9e
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/ShortSerializer.kt
@@ -0,0 +1,15 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object ShortSerializer : Serializer<Short> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Short, features: Quassel_Features) {
+    buffer.putShort(data)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Short {
+    return buffer.short
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringListSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringListSerializer.kt
new file mode 100644
index 000000000..335094b86
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringListSerializer.kt
@@ -0,0 +1,23 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.QStringList
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object StringListSerializer : Serializer<QStringList?> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QStringList?,
+                         features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data?.size ?: 0, features)
+    data?.forEach {
+      StringSerializer.UTF16.serialize(buffer, it, features)
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QStringList {
+    return (0 until IntSerializer.deserialize(buffer, features)).map {
+      StringSerializer.UTF16.deserialize(buffer, features)
+    }.toMutableList()
+  }
+
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringSerializer.kt
new file mode 100644
index 000000000..ab220637a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/StringSerializer.kt
@@ -0,0 +1,101 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.QVariant
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.helpers.copyTo
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+import java.nio.CharBuffer
+import java.nio.charset.Charset
+import java.nio.charset.CharsetDecoder
+import java.nio.charset.CharsetEncoder
+
+abstract class StringSerializer(
+  private val encoder: CharsetEncoder,
+  private val decoder: CharsetDecoder,
+  private val trailingNullBytes: Int
+) : Serializer<String?> {
+  constructor(charset: Charset,
+              trailingNullByte: Boolean = false) : this(
+    charset.newEncoder(),
+    charset.newDecoder(),
+    if (trailingNullByte) {
+      1
+    } else {
+      0
+    }
+  )
+
+  object UTF16 : StringSerializer(Charsets.UTF_16BE)
+  object UTF8 : StringSerializer(Charsets.UTF_8)
+  object C : StringSerializer(Charsets.ISO_8859_1, trailingNullByte = true)
+
+  override fun serialize(buffer: ChainedByteBuffer, data: String?, features: Quassel_Features) {
+    if (data == null) {
+      IntSerializer.serialize(buffer, -1, features)
+    } else {
+      val charBuffer = CharBuffer.allocate(data.length)
+      charBuffer.put(data)
+      charBuffer.flip()
+      val byteBuffer = encoder.encode(charBuffer)
+      IntSerializer.serialize(buffer, byteBuffer.remaining() + trailingNullBytes, features)
+      buffer.put(byteBuffer)
+      for (i in 0 until trailingNullBytes)
+        buffer.put(0)
+    }
+  }
+
+  fun serialize(data: String?): ByteBuffer = if (data == null) {
+    ByteBuffer.allocate(0)
+  } else {
+    val charBuffer = CharBuffer.allocate(data.length)
+    charBuffer.put(data)
+    charBuffer.flip()
+    encoder.encode(charBuffer)
+  }
+
+  fun deserializeAll(buffer: ByteBuffer): String? {
+    val len = buffer.remaining()
+    return if (len == -1) {
+      null
+    } else {
+      val byteBuffer = ByteBuffer.allocate(len)
+      buffer.copyTo(byteBuffer)
+      byteBuffer.clear()
+      byteBuffer.limit(byteBuffer.limit() - trailingNullBytes)
+      decoder.decode(byteBuffer).toString()
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): String? {
+    val len = IntSerializer.deserialize(buffer, features)
+    return if (len == -1) {
+      null
+    } else {
+      val byteBuffer = ByteBuffer.allocate(len)
+      buffer.copyTo(byteBuffer)
+      byteBuffer.clear()
+      byteBuffer.limit(byteBuffer.limit() - trailingNullBytes)
+      decoder.decode(byteBuffer).toString()
+    }
+  }
+}
+
+fun QVariant<ByteBuffer>?.deserializeString(
+  serializer: StringSerializer) = if (this?.data == null) {
+  null
+} else {
+  serializer.deserializeAll(data)
+}
+
+fun ByteBuffer?.deserializeString(serializer: StringSerializer) = if (this == null) {
+  null
+} else {
+  serializer.deserializeAll(this)
+}
+
+fun String?.serializeString(serializer: StringSerializer) = if (this == null) {
+  null
+} else {
+  serializer.serialize(this)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/TimeSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/TimeSerializer.kt
new file mode 100644
index 000000000..3cbd7d66d
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/TimeSerializer.kt
@@ -0,0 +1,16 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import org.threeten.bp.LocalTime
+import java.nio.ByteBuffer
+
+object TimeSerializer : Serializer<LocalTime> {
+  override fun serialize(buffer: ChainedByteBuffer, data: LocalTime, features: Quassel_Features) {
+    IntSerializer.serialize(buffer, (data.toNanoOfDay() / 1000).toInt(), features)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): LocalTime {
+    return LocalTime.ofNanoOfDay(IntSerializer.deserialize(buffer, features).toLong() * 1000)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantListSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantListSerializer.kt
new file mode 100644
index 000000000..699e94a00
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantListSerializer.kt
@@ -0,0 +1,27 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantList
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object VariantListSerializer : Serializer<QVariantList> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QVariantList,
+                         features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.size, features)
+    data.forEach {
+      VariantSerializer.serialize(buffer, it, features)
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QVariantList {
+    val length = IntSerializer.deserialize(buffer, features)
+    val result = mutableListOf<QVariant_>()
+    for (i in 0 until length) {
+      result.add(VariantSerializer.deserialize(buffer, features))
+    }
+    return result
+  }
+
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantMapSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantMapSerializer.kt
new file mode 100644
index 000000000..732c09070
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantMapSerializer.kt
@@ -0,0 +1,26 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object VariantMapSerializer : Serializer<QVariantMap> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QVariantMap, features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.size, features)
+    data.entries.forEach { (key, value) ->
+      StringSerializer.UTF16.serialize(buffer, key, features)
+      VariantSerializer.serialize(buffer, value, features)
+    }
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QVariantMap {
+    return mutableMapOf(*(0 until IntSerializer.deserialize(buffer, features)).map {
+      Pair(
+        StringSerializer.UTF16.deserialize(buffer, features) ?: "",
+        VariantSerializer.deserialize(buffer, features)
+      )
+    }.toTypedArray())
+  }
+
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantSerializer.kt
new file mode 100644
index 000000000..29fcb18c9
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VariantSerializer.kt
@@ -0,0 +1,39 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object VariantSerializer : Serializer<QVariant_> {
+  override fun serialize(buffer: ChainedByteBuffer, data: QVariant_, features: Quassel_Features) {
+    IntSerializer.serialize(buffer, data.type.type.id, features)
+    BoolSerializer.serialize(buffer, false, features)
+    if (data.type.type == Type.UserType) {
+      StringSerializer.C.serialize(buffer, data.type.name, features)
+    }
+    if (data.type.serializer == null) {
+      throw IllegalArgumentException("Unknown type: ${data.type.name}")
+    }
+    data.type.serializer.serialize(buffer, data.data, features)
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): QVariant_ {
+    val rawType = IntSerializer.deserialize(buffer, features)
+    val type = Type.of(rawType)
+
+    val isNull = BoolSerializer.deserialize(buffer, features)
+
+    val metaType: MetaType<All_> = if (type == Type.UserType) {
+      val deserialize = StringSerializer.C.deserialize(buffer, features)
+      MetaType.get(deserialize)
+    } else {
+      MetaType.get(type)
+    }
+    if (metaType.serializer == null) {
+      throw IllegalArgumentException("Unknown type: ${metaType.name}")
+    }
+
+    val result = metaType.serializer.deserialize(buffer, features)
+    return QVariant(result, metaType)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VoidSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VoidSerializer.kt
new file mode 100644
index 000000000..e7b172a77
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/protocol/primitive/serializer/VoidSerializer.kt
@@ -0,0 +1,14 @@
+package de.kuschku.quasseldroid_ng.protocol.primitive.serializer
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.ByteBuffer
+
+object VoidSerializer : Serializer<Any?> {
+  override fun serialize(buffer: ChainedByteBuffer, data: Any?, features: Quassel_Features) {
+  }
+
+  override fun deserialize(buffer: ByteBuffer, features: Quassel_Features): Any? {
+    return null
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/BufferInfo.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/BufferInfo.kt
new file mode 100644
index 000000000..19c9bb276
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/BufferInfo.kt
@@ -0,0 +1,38 @@
+package de.kuschku.quasseldroid_ng.quassel
+
+import de.kuschku.quasseldroid_ng.protocol.Buffer_Types
+import de.kuschku.quasseldroid_ng.util.Flag
+import de.kuschku.quasseldroid_ng.util.Flags
+import de.kuschku.quasseldroid_ng.util.ShortFlag
+import de.kuschku.quasseldroid_ng.util.ShortFlags
+
+data class BufferInfo(var bufferId: Int, var networkId: Int, var type: Buffer_Types,
+                      var groupId: Int,
+                      var bufferName: String?) {
+  enum class Type(override val bit: Short) : ShortFlag<Type> {
+    InvalidBuffer(0x00),
+    StatusBuffer(0x01),
+    ChannelBuffer(0x02),
+    QueryBuffer(0x04),
+    GroupBuffer(0x08);
+
+    companion object : ShortFlags.Factory<Type> {
+      val validValues = values().filter { it.bit != 0.toShort() }.toTypedArray()
+      override fun of(bit: Short) = ShortFlags.ofBitMask<Type>(bit)
+      override fun of(vararg flags: Type) = ShortFlags.of(*flags)
+    }
+  }
+
+  enum class Activity(override val bit: Int) : Flag<Activity> {
+    NoActivity(0x00),
+    OtherActivity(0x01),
+    NewMessage(0x02),
+    Highlight(0x40);
+
+    companion object : Flags.Factory<Activity> {
+      override val NONE = Activity.of()
+      override fun of(bit: Int) = Flags.of<Activity>(bit)
+      override fun of(vararg flags: Activity) = Flags.of(*flags)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/NetworkInfo.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/NetworkInfo.kt
new file mode 100644
index 000000000..4c6c257eb
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/NetworkInfo.kt
@@ -0,0 +1,2 @@
+package de.kuschku.quasseldroid_ng.quassel
+
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolFeature.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolFeature.kt
new file mode 100644
index 000000000..034daba49
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolFeature.kt
@@ -0,0 +1,16 @@
+package de.kuschku.quasseldroid_ng.quassel
+
+import de.kuschku.quasseldroid_ng.util.Flag
+import de.kuschku.quasseldroid_ng.util.Flags
+
+enum class ProtocolFeature(override val bit: Int) : Flag<ProtocolFeature> {
+  None(0x00),
+  TLS(0x01),
+  Compression(0x02);
+
+  companion object : Flags.Factory<ProtocolFeature> {
+    override val NONE = ProtocolFeature.of()
+    override fun of(bit: Int) = Flags.of<ProtocolFeature>(bit)
+    override fun of(vararg flags: ProtocolFeature) = Flags.of(*flags)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolMeta.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolMeta.kt
new file mode 100644
index 000000000..ca65033f3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/ProtocolMeta.kt
@@ -0,0 +1,5 @@
+package de.kuschku.quasseldroid_ng.quassel
+
+import de.kuschku.quasseldroid_ng.protocol.Protocol_Features
+
+data class Protocol(val flags: Protocol_Features, val data: Short, val version: Byte)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/QuasselFeature.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/QuasselFeature.kt
new file mode 100644
index 000000000..ccfe70cfa
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/QuasselFeature.kt
@@ -0,0 +1,44 @@
+package de.kuschku.quasseldroid_ng.quassel
+
+import de.kuschku.quasseldroid_ng.util.Flag
+import de.kuschku.quasseldroid_ng.util.Flags
+
+/**
+ * A list of features that are optional in core and/or client, but need runtime checking
+ *
+ * Some features require an uptodate counterpart, but don't justify a protocol break.
+ * This is what we use this enum for. Add such features to it and check at runtime on the other
+ * side for their existence.
+ *
+ * This list should be cleaned up after every protocol break, as we can assume them to be present then.
+ */
+enum class QuasselFeature(override val bit: Int) : Flag<QuasselFeature> {
+  None(0x0000),
+  SynchronizedMarkerLine(0x0001),
+  SaslAuthentication(0x0002),
+  SaslExternal(0x0004),
+  HideInactiveNetworks(0x0008),
+  PasswordChange(0x0010),
+  /** IRCv3 capability negotiation, account tracking */
+  CapNegotiation(0x0020),
+  /** IRC server SSL validation */
+  VerifyServerSSL(0x0040),
+  /** IRC server custom message rate limits */
+  CustomRateLimits(0x0080),
+  DccFileTransfer(0x0100),
+  /** Timestamp formatting in away (e.g. %%hh:mm%%) */
+  AwayFormatTimestamp(0x0200),
+  /** Whether or not the core supports auth backends. */
+  Authenticators(0x0400),
+  /** Sync buffer activity status */
+  BufferActivitySync(0x0800),
+  /** Show prefixes for senders in backlog */
+  SenderPrefixes(0x1000);
+
+  companion object : Flags.Factory<QuasselFeature> {
+    override val NONE: Flags<QuasselFeature> = QuasselFeature.of()
+    val validValues = values().filter { it.bit != 0 }.toTypedArray()
+    override fun of(bit: Int) = Flags.of<QuasselFeature>(bit)
+    override fun of(vararg flags: QuasselFeature) = Flags.of(*flags)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/AliasManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/AliasManager.kt
new file mode 100644
index 000000000..a86219cd4
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/AliasManager.kt
@@ -0,0 +1,162 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.protocol.valueOr
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IAliasManager
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IAliasManager.Alias
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ISyncableObject
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import java.util.*
+import java.util.regex.Pattern
+
+class AliasManager constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "AliasManager"), IAliasManager, ISyncableObject {
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "Aliases" to QVariant_(initAliases(), Type.QVariantMap)
+  )
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetAliases(properties["Aliases"].valueOr(::emptyMap))
+  }
+
+  override fun initAliases(): QVariantMap = mapOf(
+    "names" to QVariant_(_aliases.map(Alias::name), Type.QStringList),
+    "expansions" to QVariant_(_aliases.map(Alias::expansion), Type.QStringList)
+  )
+
+  override fun initSetAliases(aliases: QVariantMap) {
+    val names = aliases["names"].valueOr<List<String>>(::emptyList)
+    val expansions = aliases["expansions"].valueOr<List<String>>(::emptyList)
+
+    if (names.size != expansions.size)
+      throw IllegalArgumentException(
+        "Sizes do not match: names=${names.size}, expansions=${expansions.size}")
+
+    _aliases.clear()
+    _aliases.addAll(names.zip(expansions, ::Alias))
+  }
+
+  override fun addAlias(name: String, expansion: String) {
+    if (contains(name)) {
+      return
+    }
+
+    _aliases.add(Alias(name, expansion))
+
+    super.addAlias(name, expansion)
+  }
+
+  fun indexOf(name: String) = _aliases.map(Alias::name).indexOf(name)
+
+  fun contains(name: String) = _aliases.map(Alias::name).contains(name)
+
+  fun defaults() = listOf<Alias>(
+    Alias("j", "/join $0"),
+    Alias("ns", "/msg nickserv $0"),
+    Alias("nickserv", "/msg nickserv $0"),
+    Alias("cs", "/msg chanserv $0"),
+    Alias("chanserv", "/msg chanserv $0"),
+    Alias("hs", "/msg hostserv $0"),
+    Alias("hostserv", "/msg hostserv $0"),
+    Alias("wii", "/whois $0 $0"),
+    Alias("back", "/quote away"),
+
+    // let's add aliases for scripts that only run on linux
+    Alias("inxi", "/exec inxi $0"),
+    Alias("sysinfo", "/exec inxi -d")
+  )
+
+  fun processInput(info: BufferInfo, message: String,
+                   previousCommands: MutableList<IAliasManager.Command>) {
+    var msg = message
+
+    // leading slashes indicate there's a command to call unless there is another one in the first section (like a path /proc/cpuinfo)
+    // For those habitally tied to irssi, "/ " also makes the rest of the line a literal message
+    val secondSlashPos = msg.indexOf('/', 1)
+    val firstSpacePos = msg.indexOf(' ')
+    if (!msg.startsWith('/') || firstSpacePos == 1 ||
+      (secondSlashPos != -1 && (secondSlashPos < firstSpacePos || firstSpacePos == -1))) {
+      if (msg.startsWith("//"))
+        msg = msg.substring(1)  // "//asdf" is transformed to "/asdf"
+      else if (msg.startsWith("/ "))
+        msg.substring(2)  // "/ /asdf" is transformed to "/asdf"
+      msg = "/SAY $msg" // make sure we only send proper commands to the core
+    } else {
+      // check for aliases
+      val split = msg.split(' ', ignoreCase = true, limit = 2)
+      val search: String = split.firstOrNull()
+        ?: return
+      val found = _aliases.firstOrNull { it.name.equals(search, true) }
+        ?: return
+      expand(found.expansion, info, split.getOrNull(1) ?: "", previousCommands)
+    }
+
+    previousCommands.add(IAliasManager.Command(info, msg))
+  }
+
+  fun expand(expansion: String, bufferInfo: BufferInfo, msg: String,
+             previousCommands: MutableList<IAliasManager.Command>) {
+    val network = proxy.network(bufferInfo.networkId)
+
+    val paramRange = Pattern.compile("""\$(\d+)\.\.(\d*)""")
+    val commands = Arrays.asList(
+      *expansion.split("; ?").dropLastWhile { it.isEmpty() }.toTypedArray())
+    val params = Arrays.asList<String>(
+      *msg.split(' ').dropLastWhile({ it.isEmpty() }).toTypedArray())
+    val expandedCommands = LinkedList<String>()
+
+    for (i in commands.indices) {
+      var command = commands[i]
+
+      if (params.size != 0) {
+        val m = paramRange.matcher(command)
+        while (m.find()) {
+          val start = m.group(1).toIntOrNull() ?: -1
+          val replacement: String
+          // $1.. would be "arg1 and all following"
+          replacement = if (m.group(2).isEmpty()) {
+            params.subList(start, params.size).joinToString(" ")
+          } else {
+            val end = m.group(2).toIntOrNull() ?: -1
+            if (end < start) {
+              ""
+            } else {
+              params.subList(start, end).joinToString(" ")
+            }
+          }
+          command = command.substring(0, m.start()) + replacement + command.substring(m.end())
+        }
+      }
+
+      for (j in params.size downTo 1) {
+        val user = network?.ircUser(params[j - 1])
+        val host = user?.host() ?: "*"
+        command = command.replace(String.format(Locale.US, "$%d:hostname", j).toRegex(), host)
+        command = command.replace(String.format(Locale.US, "$%d", j).toRegex(), params[j - 1])
+      }
+      command = command.replace("$0", msg)
+      command = command.replace("\$channelname", bufferInfo.bufferName ?: "")
+      command = command.replace("\$channel", bufferInfo.bufferName ?: "")
+      command = command.replace("\$currentnick", network?.myNick() ?: "")
+      command = command.replace("\$nick", network?.myNick() ?: "")
+      command = command.replace("\$network", network?.networkName() ?: "")
+      expandedCommands.add(command)
+    }
+    while (!expandedCommands.isEmpty()) {
+      val command: String
+      if (expandedCommands[0].trim { it <= ' ' }.toLowerCase(Locale.US).startsWith("/wait ")) {
+        command = expandedCommands.joinToString("; ")
+        expandedCommands.clear()
+      } else {
+        command = expandedCommands[0]
+      }
+      previousCommands.add(IAliasManager.Command(bufferInfo, command))
+    }
+  }
+
+  private val _aliases = mutableListOf<IAliasManager.Alias>()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BacklogManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BacklogManager.kt
new file mode 100644
index 000000000..7c58a3a33
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BacklogManager.kt
@@ -0,0 +1,19 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.BufferId
+import de.kuschku.quasseldroid_ng.protocol.MsgId
+import de.kuschku.quasseldroid_ng.protocol.QVariantList
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IBacklogManager
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class BacklogManager constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "BacklogManager"), IBacklogManager {
+  override fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
+                              additional: Int, messages: QVariantList) {
+  }
+
+  override fun receiveBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int,
+                                 messages: QVariantList) {
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferSyncer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferSyncer.kt
new file mode 100644
index 000000000..91c6ebc70
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferSyncer.kt
@@ -0,0 +1,123 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IBufferSyncer
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import de.kuschku.quasseldroid_ng.util.Flags
+
+class BufferSyncer constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "BufferSyncer"), IBufferSyncer {
+  fun lastSeenMsg(buffer: BufferId): MsgId = _lastSeenMsg[buffer] ?: 0
+  fun markerLine(buffer: BufferId): MsgId = _markerLines[buffer] ?: 0
+  fun activity(buffer: BufferId): Message_Types = _bufferActivities[buffer] ?: Message_Types.of()
+
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "Activities" to QVariant_(initActivities(), Type.QVariantList),
+    "LastSeenMsg" to QVariant_(initLastSeenMsg(), Type.QVariantList),
+    "MarkerLines" to QVariant_(initMarkerLines(), Type.QVariantList)
+  )
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetActivities(properties["Activities"].valueOr(::emptyList))
+    initSetLastSeenMsg(properties["LastSeenMsg"].valueOr(::emptyList))
+    initSetMarkerLines(properties["MarkerLines"].valueOr(::emptyList))
+  }
+
+  override fun initActivities(): QVariantList {
+    val list: MutableList<QVariant_> = mutableListOf()
+    for ((key, value) in _bufferActivities) {
+      list.add(QVariant_(key, QType.BufferId))
+      list.add(QVariant_(value, Type.Int))
+    }
+    return list
+  }
+
+  override fun initLastSeenMsg(): QVariantList {
+    val list: MutableList<QVariant_> = mutableListOf()
+    for ((key, value) in _bufferActivities) {
+      list.add(QVariant_(key, QType.BufferId))
+      list.add(QVariant_(value, QType.MsgId))
+    }
+    return list
+  }
+
+  override fun initMarkerLines(): QVariantList {
+    val list: MutableList<QVariant_> = mutableListOf()
+    for ((key, value) in _bufferActivities) {
+      list.add(QVariant_(key, QType.BufferId))
+      list.add(QVariant_(value, QType.MsgId))
+    }
+    return list
+  }
+
+  override fun initSetActivities(data: QVariantList) {
+    (0 until data.size step 2).map {
+      data[it].value(0) to data[it + 1].value(0)
+    }.forEach { (buffer, activity) ->
+      setBufferActivity(buffer, activity)
+    }
+  }
+
+  override fun initSetLastSeenMsg(data: QVariantList) {
+    (0 until data.size step 2).map {
+      data[it].value(0) to data[it + 1].value(0)
+    }.forEach { (buffer, msgId) ->
+      setLastSeenMsg(buffer, msgId)
+    }
+  }
+
+  override fun initSetMarkerLines(data: QVariantList) {
+    (0 until data.size step 2).map {
+      data[it].value(0) to data[it + 1].value(0)
+    }.forEach { (buffer, msgId) ->
+      setMarkerLine(buffer, msgId)
+    }
+  }
+
+  override fun mergeBuffersPermanently(buffer1: BufferId, buffer2: BufferId) {
+    _lastSeenMsg.remove(buffer2)
+    _markerLines.remove(buffer2)
+    _bufferActivities.remove(buffer2)
+  }
+
+  override fun removeBuffer(buffer: BufferId) {
+    _lastSeenMsg.remove(buffer)
+    _markerLines.remove(buffer)
+    _bufferActivities.remove(buffer)
+  }
+
+  override fun renameBuffer(buffer: BufferId, newName: String) {
+  }
+
+  override fun setLastSeenMsg(buffer: BufferId, msgId: MsgId) {
+    if (msgId < 0)
+      return
+
+    val oldLastSeenMsg = lastSeenMsg(buffer)
+    if (oldLastSeenMsg < msgId) {
+      _lastSeenMsg[buffer] = msgId
+      super.setLastSeenMsg(buffer, msgId)
+    }
+  }
+
+  override fun setMarkerLine(buffer: BufferId, msgId: MsgId) {
+    if (msgId < 0 || markerLine(buffer) == msgId)
+      return
+
+    _markerLines[buffer] = msgId
+    super.setMarkerLine(buffer, msgId)
+  }
+
+  override fun setBufferActivity(buffer: BufferId, activity: Int) {
+    val flags = Message_Types.of<Message_Type>(activity)
+    super.setBufferActivity(buffer, activity)
+    _bufferActivities[buffer] = flags
+  }
+
+  private val _lastSeenMsg: MutableMap<BufferId, MsgId> = mutableMapOf()
+  private val _markerLines: MutableMap<BufferId, MsgId> = mutableMapOf()
+  private val _bufferActivities: MutableMap<BufferId, Flags<QuasselDatabase.Message.MessageType>> = mutableMapOf()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewConfig.kt
new file mode 100644
index 000000000..29c48f710
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewConfig.kt
@@ -0,0 +1,209 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import clamp
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IBufferViewConfig
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class BufferViewConfig constructor(
+  bufferViewId: Int,
+  proxy: SignalProxy
+) : SyncableObject(proxy, "BufferViewConfig"), IBufferViewConfig {
+  override fun init() {
+    renameObject("$_bufferViewId")
+  }
+
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "BufferList" to QVariant_(initBufferList(), Type.QVariantList),
+    "RemovedBuffers" to QVariant_(initBufferList(), Type.QVariantList),
+    "TemporarilyRemovedBuffers" to QVariant_(initBufferList(), Type.QVariantList)
+  ) + initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetBufferList(properties["BufferList"].valueOr(::emptyList))
+    initSetRemovedBuffers(properties["RemovedBuffers"].valueOr(::emptyList))
+    initSetTemporarilyRemovedBuffers(properties["TemporarilyRemovedBuffers"].valueOr(::emptyList))
+    initSetProperties(properties)
+  }
+
+  override fun initBufferList(): QVariantList = _buffers.map {
+    QVariant_(it, QType.BufferId)
+  }
+
+  override fun initRemovedBuffers(): QVariantList = _removedBuffers.map {
+    QVariant_(it, QType.BufferId)
+  }
+
+  override fun initTemporarilyRemovedBuffers(): QVariantList = _temporarilyRemovedBuffers.map {
+    QVariant_(it, QType.BufferId)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "bufferViewName" to QVariant_(bufferViewName(), Type.QString),
+    "networkId" to QVariant_(networkId(), QType.NetworkId),
+    "addNewBuffersAutomatically" to QVariant_(addNewBuffersAutomatically(), Type.Bool),
+    "sortAlphabetically" to QVariant_(sortAlphabetically(), Type.Bool),
+    "hideInactiveBuffers" to QVariant_(hideInactiveBuffers(), Type.Bool),
+    "hideInactiveNetworks" to QVariant_(hideInactiveNetworks(), Type.Bool),
+    "disableDecoration" to QVariant_(disableDecoration(), Type.Bool),
+    "allowedBufferTypes" to QVariant_(allowedBufferTypes(), Type.Int),
+    "minimumActivity" to QVariant_(minimumActivity(), Type.Int),
+    "showSearch" to QVariant_(showSearch(), Type.Bool)
+  )
+
+  override fun initSetBufferList(buffers: QVariantList) {
+    _buffers = buffers.mapNotNull { it.value<BufferId?>() }.toMutableList()
+  }
+
+  override fun initSetRemovedBuffers(buffers: QVariantList) {
+    _removedBuffers = buffers.mapNotNull { it.value<BufferId?>() }.toMutableSet()
+  }
+
+  override fun initSetTemporarilyRemovedBuffers(buffers: QVariantList) {
+    _temporarilyRemovedBuffers = buffers.mapNotNull { it.value<BufferId?>() }.toMutableSet()
+  }
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setBufferViewName(properties["bufferViewName"].value(bufferViewName()))
+    setNetworkId(properties["networkId"].value(networkId()))
+    setAddNewBuffersAutomatically(
+      properties["addNewBuffersAutomatically"].value(addNewBuffersAutomatically()))
+    setSortAlphabetically(properties["sortAlphabetically"].value(sortAlphabetically()))
+    setHideInactiveBuffers(properties["hideInactiveBuffers"].value(hideInactiveBuffers()))
+    setHideInactiveNetworks(properties["hideInactiveNetworks"].value(hideInactiveNetworks()))
+    setDisableDecoration(properties["disableDecoration"].value(disableDecoration()))
+    setAllowedBufferTypes(properties["allowedBufferTypes"].value(allowedBufferTypes().toInt()))
+    setMinimumActivity(properties["minimumActivity"].value(minimumActivity().toInt()))
+    setShowSearch(properties["showSearch"].value(showSearch()))
+  }
+
+  override fun addBuffer(bufferId: BufferId, pos: Int) {
+    if (_buffers.contains(bufferId))
+      return
+
+    if (_removedBuffers.contains(bufferId))
+      _removedBuffers.remove(bufferId)
+
+    if (_temporarilyRemovedBuffers.contains(bufferId))
+      _temporarilyRemovedBuffers.remove(bufferId)
+
+    _buffers.add(minOf(maxOf(pos, 0), _buffers.size), bufferId)
+  }
+
+  override fun moveBuffer(bufferId: BufferId, pos: Int) {
+    if (!_buffers.contains(bufferId))
+      return
+
+    val currentPos = _buffers.indexOf(bufferId)
+    val targetPos = pos.clamp(0, _buffers.size - 1)
+
+    if (currentPos > targetPos) {
+      _buffers.removeAt(currentPos)
+      _buffers.add(bufferId, targetPos)
+    }
+
+    if (currentPos < targetPos) {
+      _buffers.removeAt(currentPos)
+      _buffers.add(bufferId, targetPos - 1)
+    }
+  }
+
+  override fun removeBuffer(bufferId: BufferId) {
+    if (_buffers.contains(bufferId))
+      _buffers.remove(bufferId)
+
+    if (_removedBuffers.contains(bufferId))
+      _removedBuffers.remove(bufferId)
+
+    _temporarilyRemovedBuffers.add(bufferId)
+  }
+
+  override fun removeBufferPermanently(bufferId: BufferId) {
+    if (_buffers.contains(bufferId))
+      _buffers.remove(bufferId)
+
+    if (_temporarilyRemovedBuffers.contains(bufferId))
+      _temporarilyRemovedBuffers.remove(bufferId);
+
+    _removedBuffers.add(bufferId)
+  }
+
+  fun bufferViewId() = _bufferViewId
+  fun bufferViewName() = _bufferViewName
+  fun networkId() = _networkId
+  fun addNewBuffersAutomatically() = _addNewBuffersAutomatically
+  fun sortAlphabetically() = _sortAlphabetically
+  fun hideInactiveBuffers() = _hideInactiveBuffers
+  fun hideInactiveNetworks() = _hideInactiveNetworks
+  fun disableDecoration() = _disableDecoration
+  fun allowedBufferTypes() = _allowedBufferTypes
+  fun minimumActivity() = _minimumActivity
+  fun showSearch() = _showSearch
+
+
+  override fun setAddNewBuffersAutomatically(addNewBuffersAutomatically: Boolean) {
+    _addNewBuffersAutomatically = addNewBuffersAutomatically
+    super.setAddNewBuffersAutomatically(addNewBuffersAutomatically)
+  }
+
+  override fun setAllowedBufferTypes(bufferTypes: Int) {
+    _allowedBufferTypes = Buffer_Type.of(bufferTypes.toShort())
+    super.setAllowedBufferTypes(bufferTypes)
+  }
+
+  override fun setBufferViewName(bufferViewName: String) {
+    _bufferViewName = bufferViewName
+    super.setBufferViewName(bufferViewName)
+  }
+
+  override fun setDisableDecoration(disableDecoration: Boolean) {
+    _disableDecoration = disableDecoration
+    super.setDisableDecoration(disableDecoration)
+  }
+
+  override fun setHideInactiveBuffers(hideInactiveBuffers: Boolean) {
+    _hideInactiveBuffers = hideInactiveBuffers
+    super.setHideInactiveBuffers(hideInactiveBuffers)
+  }
+
+  override fun setHideInactiveNetworks(hideInactiveNetworks: Boolean) {
+    _hideInactiveNetworks = hideInactiveNetworks
+    super.setHideInactiveNetworks(hideInactiveNetworks)
+  }
+
+  override fun setMinimumActivity(activity: Int) {
+    _minimumActivity = Buffer_Activity.of(activity)
+    super.setMinimumActivity(activity)
+  }
+
+  override fun setNetworkId(networkId: NetworkId) {
+    _networkId = networkId
+    super.setNetworkId(networkId)
+  }
+
+  override fun setShowSearch(showSearch: Boolean) {
+    _showSearch = showSearch
+    super.setShowSearch(showSearch)
+  }
+
+  override fun setSortAlphabetically(sortAlphabetically: Boolean) {
+    _sortAlphabetically = sortAlphabetically
+    super.setSortAlphabetically(sortAlphabetically)
+  }
+
+  val _bufferViewId: Int = bufferViewId
+  var _bufferViewName: String = ""
+  var _networkId: NetworkId = 0
+  var _addNewBuffersAutomatically: Boolean = true
+  var _sortAlphabetically: Boolean = true
+  var _hideInactiveBuffers: Boolean = false
+  var _hideInactiveNetworks: Boolean = false
+  var _disableDecoration: Boolean = false
+  var _allowedBufferTypes: Buffer_Types = Buffer_Type.of(*Buffer_Type.validValues)
+  var _minimumActivity: Buffer_Activities = Buffer_Activities.of(0)
+  var _showSearch: Boolean = false
+  var _buffers: MutableList<BufferId> = mutableListOf()
+  var _removedBuffers: MutableSet<BufferId> = mutableSetOf()
+  var _temporarilyRemovedBuffers: MutableSet<BufferId> = mutableSetOf()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewManager.kt
new file mode 100644
index 000000000..7ea65b6f7
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/BufferViewManager.kt
@@ -0,0 +1,55 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IBufferViewManager
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class BufferViewManager constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "BufferViewManager"), IBufferViewManager {
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "BufferViewIds" to QVariant_(initBufferViewIds(), Type.QVariantList)
+  )
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetBufferViewIds(properties["BufferViewIds"].valueOr(::emptyList))
+  }
+
+  override fun initBufferViewIds(): QVariantList = _bufferViewConfigs.keys.map {
+    QVariant_(it, Type.Int)
+  }
+
+  fun bufferViewConfig(bufferViewId: Int) = _bufferViewConfigs[bufferViewId]
+
+  fun bufferViewConfigs() = _bufferViewConfigs.values
+
+  override fun initSetBufferViewIds(bufferViewIds: QVariantList) {
+    bufferViewIds
+      .mapNotNull { it.value<Int>() }
+      .forEach { addBufferViewConfig(it) }
+  }
+
+  override fun addBufferViewConfig(config: BufferViewConfig) {
+    if (_bufferViewConfigs.contains(config.bufferViewId()))
+      return
+
+    proxy.synchronize(config)
+    _bufferViewConfigs[config.bufferViewId()] = config
+  }
+
+  override fun addBufferViewConfig(bufferViewConfigId: Int) {
+    if (_bufferViewConfigs.contains(bufferViewConfigId))
+      return
+
+    addBufferViewConfig(BufferViewConfig(bufferViewConfigId, proxy))
+  }
+
+  override fun deleteBufferViewConfig(bufferViewConfigId: Int) {
+    if (!_bufferViewConfigs.contains(bufferViewConfigId))
+      return
+
+    _bufferViewConfigs.remove(bufferViewConfigId)
+  }
+
+  private val _bufferViewConfigs: MutableMap<BufferId, BufferViewConfig> = mutableMapOf()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CertManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CertManager.kt
new file mode 100644
index 000000000..a02fe7177
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CertManager.kt
@@ -0,0 +1,47 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ICertManager
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import java.nio.ByteBuffer
+
+class CertManager constructor(
+  private val _identityId: IdentityId,
+  proxy: SignalProxy
+) : SyncableObject(proxy, "CertManager"), ICertManager {
+  override fun init() {
+    renameObject("$_identityId")
+  }
+
+  override fun toVariantMap() = initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "sslKey" to QVariant_(sslKeyPem(), Type.QByteArray),
+    "sslCert" to QVariant_(sslCertPem(), Type.QByteArray)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setSslKey(properties["sslKey"].value())
+    setSslCert(properties["sslCert"].value())
+  }
+
+  fun sslCertPem() = _sslCert
+  fun sslKeyPem() = _sslKey
+
+  override fun setSslCert(encoded: ByteBuffer?) {
+    _sslCert = encoded
+    super.setSslCert(encoded)
+  }
+
+  override fun setSslKey(encoded: ByteBuffer?) {
+    _sslKey = encoded
+    super.setSslKey(encoded)
+  }
+
+  private var _sslKey: ByteBuffer? = null
+  private var _sslCert: ByteBuffer? = null
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CoreInfo.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CoreInfo.kt
new file mode 100644
index 000000000..6e29d5c40
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/CoreInfo.kt
@@ -0,0 +1,35 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.protocol.value
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ICoreInfo
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class CoreInfo constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "CoreInfo"), ICoreInfo {
+  override fun toVariantMap() = initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "coreData" to QVariant_(coreData(), Type.QVariantMap)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setCoreData(properties["coreData"].value(coreData()))
+  }
+
+  override fun setCoreData(data: QVariantMap) {
+    _coreData = data
+    super.setCoreData(data)
+  }
+
+  fun coreData() = _coreData
+
+  private var _coreData: QVariantMap = emptyMap()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/DccConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/DccConfig.kt
new file mode 100644
index 000000000..364689678
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/DccConfig.kt
@@ -0,0 +1,148 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IDccConfig
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import java.net.Inet4Address
+import java.net.InetAddress
+
+class DccConfig constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "DccConfig"), IDccConfig {
+  override fun init() {
+    renameObject("DccConfig")
+  }
+
+  override fun toVariantMap() = initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    /// Whether DCC is enabled
+    "dccEnabled" to QVariant_(isDccEnabled(), Type.Bool),
+    /// The IP to use for outgoing traffic
+    "outgoingIp" to QVariant_(outgoingIp(), QType.QHostAddress),
+    /// The IP detection mode
+    "ipDetectionMode" to QVariant_(ipDetectionMode(), QType.DccConfig_IpDetectionMode),
+    /// The port range selection mode
+    "portSelectionMode" to QVariant_(portSelectionMode(), QType.DccConfig_PortSelectionMode),
+    /// Minimum port to use for incoming connections
+    "minPort" to QVariant_(minPort(), Type.UShort),
+    /// Maximum port to use for incoming connections
+    "maxPort" to QVariant_(maxPort(), Type.UShort),
+    /// The chunk size to be used
+    "chunkSize" to QVariant_(chunkSize(), Type.Int),
+    /// The timeout for DCC transfers
+    "sendTimeout" to QVariant_(sendTimeout(), Type.Int),
+    /// Whether passive (reverse) DCC should be used
+    "usePassiveDcc" to QVariant_(usePassiveDcc(), Type.Bool),
+    /// Whether fast sending should be used
+    "useFastSend" to QVariant_(useFastSend(), Type.Bool)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    /// Whether DCC is enabled
+    setDccEnabled(properties["dccEnabled"].value(isDccEnabled()))
+    /// The IP to use for outgoing traffic
+    setOutgoingIp(properties["outgoingIp"].value(outgoingIp()))
+    /// The IP detection mode
+    setIpDetectionMode(properties["ipDetectionMode"].value(ipDetectionMode()))
+    /// The port range selection mode
+    setPortSelectionMode(properties["portSelectionMode"].value(portSelectionMode()))
+    /// Minimum port to use for incoming connections
+    setMinPort(properties["minPort"].value(minPort()))
+    /// Maximum port to use for incoming connections
+    setMaxPort(properties["maxPort"].value(maxPort()))
+    /// The chunk size to be used
+    setChunkSize(properties["chunkSize"].value(chunkSize()))
+    /// The timeout for DCC transfers
+    setSendTimeout(properties["sendTimeout"].value(sendTimeout()))
+    /// Whether passive (reverse) DCC should be used
+    setUsePassiveDcc(properties["usePassiveDcc"].value(usePassiveDcc()))
+    /// Whether fast sending should be used
+    setUseFastSend(properties["useFastSend"].value(useFastSend()))
+  }
+
+  override fun setDccEnabled(enabled: Boolean) {
+    _dccEnabled = enabled
+  }
+
+  override fun setOutgoingIp(outgoingIp: InetAddress) {
+    _outgoingIp = outgoingIp
+  }
+
+  override fun setIpDetectionMode(ipDetectionMode: IDccConfig.IpDetectionMode) {
+    _ipDetectionMode = ipDetectionMode
+  }
+
+  override fun setPortSelectionMode(portSelectionMode: IDccConfig.PortSelectionMode) {
+    _portSelectionMode = portSelectionMode
+  }
+
+  override fun setMinPort(port: UShort) {
+    _minPort = port
+  }
+
+  override fun setMaxPort(port: UShort) {
+    _maxPort = port
+  }
+
+  override fun setChunkSize(chunkSize: Int) {
+    _chunkSize = chunkSize
+  }
+
+  override fun setSendTimeout(timeout: Int) {
+    _sendTimeout = timeout
+  }
+
+  override fun setUsePassiveDcc(use: Boolean) {
+    _usePassiveDcc = use
+  }
+
+  override fun setUseFastSend(use: Boolean) {
+    _useFastSend = use
+  }
+
+  fun isDccEnabled() = _dccEnabled
+  fun outgoingIp() = _outgoingIp
+  fun ipDetectionMode() = _ipDetectionMode
+  fun portSelectionMode() = _portSelectionMode
+  fun minPort() = _minPort
+  fun maxPort() = _maxPort
+  fun chunkSize() = _chunkSize
+  fun sendTimeout() = _sendTimeout
+  fun usePassiveDcc() = _usePassiveDcc
+  fun useFastSend() = _useFastSend
+
+  /**  Whether DCC is enabled */
+  private var _dccEnabled: Boolean = false
+
+  /**  The IP to use for outgoing traffic */
+  private var _outgoingIp: InetAddress = Inet4Address.getByAddress(byteArrayOf(127, 0, 0, 1))
+
+  /**  The IP detection mode */
+  private var _ipDetectionMode: IDccConfig.IpDetectionMode = IDccConfig.IpDetectionMode.Automatic
+
+  /**  The port range selection mode */
+  private var _portSelectionMode: IDccConfig.PortSelectionMode = IDccConfig.PortSelectionMode.Automatic
+
+  /**  Minimum port to use for incoming connections */
+  private var _minPort: UShort = 1024
+
+  /**  Maximum port to use for incoming connections */
+  private var _maxPort: UShort = 32767
+
+  /**  The chunk size to be used */
+  private var _chunkSize: Int = 16
+
+  /**  The timeout for DCC transfers */
+  private var _sendTimeout: Int = 180
+
+  /**  Whether passive (reverse) DCC should be used */
+  private var _usePassiveDcc: Boolean = false
+
+  /**  Whether fast sending should be used */
+  private var _useFastSend: Boolean = false
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Identity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Identity.kt
new file mode 100644
index 000000000..1b66db966
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Identity.kt
@@ -0,0 +1,198 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IIdentity
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class Identity constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "Identity"), IIdentity {
+  override fun toVariantMap() = initProperties()
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun init() {
+    renameObject("${id()}")
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "identityId" to QVariant_(id(), QType.IdentityId),
+    "identityName" to QVariant_(identityName(), Type.QString),
+    "realName" to QVariant_(realName(), Type.QString),
+    "nicks" to QVariant_(nicks(), Type.QStringList),
+    "awayNick" to QVariant_(awayNick(), Type.QString),
+    "awayNickEnabled" to QVariant_(awayNickEnabled(), Type.Bool),
+    "awayReason" to QVariant_(awayReason(), Type.QString),
+    "awayReasonEnabled" to QVariant_(awayReasonEnabled(), Type.Bool),
+    "autoAwayEnabled" to QVariant_(autoAwayEnabled(), Type.Bool),
+    "autoAwayTime" to QVariant_(autoAwayTime(), Type.Int),
+    "autoAwayReason" to QVariant_(autoAwayReason(), Type.QString),
+    "autoAwayReasonEnabled" to QVariant_(autoAwayReasonEnabled(), Type.Bool),
+    "detachAwayEnabled" to QVariant_(detachAwayEnabled(), Type.Bool),
+    "detachAwayReason" to QVariant_(detachAwayReason(), Type.QString),
+    "detachAwayReasonEnabled" to QVariant_(detachAwayReasonEnabled(), Type.Bool),
+    "ident" to QVariant_(ident(), Type.QString),
+    "kickReason" to QVariant_(kickReason(), Type.QString),
+    "partReason" to QVariant_(partReason(), Type.QString),
+    "quitReason" to QVariant_(quitReason(), Type.QString)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setId(properties["identityId"].value(id()))
+    setIdentityName(properties["identityName"].value(identityName()))
+    setRealName(properties["realName"].value(realName()))
+    setNicks(properties["nicks"].value(nicks()))
+    setAwayNick(properties["awayNick"].value(awayNick()))
+    setAwayNickEnabled(properties["awayNickEnabled"].value(awayNickEnabled()))
+    setAwayReason(properties["awayReason"].value(awayReason()))
+    setAwayReasonEnabled(properties["awayReasonEnabled"].value(awayReasonEnabled()))
+    setAutoAwayEnabled(properties["autoAwayEnabled"].value(autoAwayEnabled()))
+    setAutoAwayTime(properties["autoAwayTime"].value(autoAwayTime()))
+    setAutoAwayReason(properties["autoAwayReason"].value(autoAwayReason()))
+    setAutoAwayReasonEnabled(properties["autoAwayReasonEnabled"].value(autoAwayReasonEnabled()))
+    setDetachAwayEnabled(properties["detachAwayEnabled"].value(detachAwayEnabled()))
+    setDetachAwayReason(properties["detachAwayReason"].value(detachAwayReason()))
+    setDetachAwayReasonEnabled(
+      properties["detachAwayReasonEnabled"].value(detachAwayReasonEnabled()))
+    setIdent(properties["ident"].value(ident()))
+    setKickReason(properties["kickReason"].value(kickReason()))
+    setPartReason(properties["partReason"].value(partReason()))
+    setQuitReason(properties["quitReason"].value(quitReason()))
+  }
+
+  fun id() = _identityId
+  fun identityName() = _identityName
+  fun realName() = _realName
+  fun nicks() = _nicks
+  fun awayNick() = _awayNick
+  fun awayNickEnabled() = _awayNickEnabled
+  fun awayReason() = _awayReason
+  fun awayReasonEnabled() = _awayReasonEnabled
+  fun autoAwayEnabled() = _autoAwayEnabled
+  fun autoAwayTime() = _autoAwayTime
+  fun autoAwayReason() = _autoAwayReason
+  fun autoAwayReasonEnabled() = _autoAwayReasonEnabled
+  fun detachAwayEnabled() = _detachAwayEnabled
+  fun detachAwayReason() = _detachAwayReason
+  fun detachAwayReasonEnabled() = _detachAwayReasonEnabled
+  fun ident() = _ident
+  fun kickReason() = _kickReason
+  fun partReason() = _partReason
+  fun quitReason() = _quitReason
+
+  override fun setAutoAwayEnabled(enabled: Boolean) {
+    _autoAwayEnabled = enabled
+    super.setAutoAwayEnabled(enabled)
+  }
+
+  override fun setAutoAwayReason(reason: String) {
+    _autoAwayReason = reason
+    super.setAutoAwayReason(reason)
+  }
+
+  override fun setAutoAwayReasonEnabled(enabled: Boolean) {
+    _autoAwayReasonEnabled = enabled
+    super.setAutoAwayReasonEnabled(enabled)
+  }
+
+  override fun setAutoAwayTime(time: Int) {
+    _autoAwayTime = time
+    super.setAutoAwayTime(time)
+  }
+
+  override fun setAwayNick(awayNick: String) {
+    _awayNick = awayNick
+    super.setAwayNick(awayNick)
+  }
+
+  override fun setAwayNickEnabled(enabled: Boolean) {
+    _awayNickEnabled = enabled
+    super.setAwayNickEnabled(enabled)
+  }
+
+  override fun setAwayReason(awayReason: String) {
+    _awayReason = awayReason
+    super.setAwayReason(awayReason)
+  }
+
+  override fun setAwayReasonEnabled(enabled: Boolean) {
+    _awayReasonEnabled = enabled
+    super.setAwayReasonEnabled(enabled)
+  }
+
+  override fun setDetachAwayEnabled(enabled: Boolean) {
+    _detachAwayEnabled = enabled
+    super.setDetachAwayEnabled(enabled)
+  }
+
+  override fun setDetachAwayReason(reason: String) {
+    _detachAwayReason = reason
+    super.setDetachAwayReason(reason)
+  }
+
+  override fun setDetachAwayReasonEnabled(enabled: Boolean) {
+    _detachAwayReasonEnabled = enabled
+    super.setDetachAwayReasonEnabled(enabled)
+  }
+
+  override fun setId(id: IdentityId) {
+    _identityId = id
+    super.setId(id)
+  }
+
+  override fun setIdent(ident: String) {
+    _ident = ident
+    super.setIdent(ident)
+  }
+
+  override fun setIdentityName(name: String) {
+    _identityName = name
+    super.setIdentityName(name)
+  }
+
+  override fun setKickReason(reason: String) {
+    _kickReason = reason
+    super.setKickReason(reason)
+  }
+
+  override fun setNicks(nicks: QStringList) {
+    _nicks = nicks.filterNotNull().toMutableList()
+    super.setNicks(nicks)
+  }
+
+  override fun setPartReason(reason: String) {
+    _partReason = reason
+    super.setPartReason(reason)
+  }
+
+  override fun setQuitReason(reason: String) {
+    _quitReason = reason
+    super.setQuitReason(reason)
+  }
+
+  override fun setRealName(realName: String) {
+    _realName = realName
+    super.setRealName(realName)
+  }
+
+  private var _identityId: IdentityId = -1
+  private var _identityName: String = "<empty>"
+  private var _realName: String = ""
+  private var _nicks: MutableList<String> = mutableListOf("quassel")
+  private var _awayNick: String = ""
+  private var _awayNickEnabled: Boolean = false
+  private var _awayReason: String = "Gone fishing."
+  private var _awayReasonEnabled: Boolean = true
+  private var _autoAwayEnabled: Boolean = false
+  private var _autoAwayTime: Int = 10
+  private var _autoAwayReason: String = "Not here. No, really. not here!"
+  private var _autoAwayReasonEnabled: Boolean = false
+  private var _detachAwayEnabled: Boolean = false
+  private var _detachAwayReason: String = "All Quassel clients vanished from the face of the earth..."
+  private var _detachAwayReasonEnabled: Boolean = false
+  private var _ident: String = "quassel"
+  private var _kickReason: String = "Kindergarten is elsewhere!"
+  private var _partReason: String = "http://quassel-irc.org - Chat comfortably. Anywhere."
+  private var _quitReason: String = "http://quassel-irc.org - Chat comfortably. Anywhere."
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IgnoreListManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IgnoreListManager.kt
new file mode 100644
index 000000000..c447a2de0
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IgnoreListManager.kt
@@ -0,0 +1,36 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.protocol.valueOr
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IIgnoreListManager
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class IgnoreListManager constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "IgnoreListManager"), IIgnoreListManager {
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "IgnoreList" to QVariant_(initIgnoreList(), Type.QVariantMap)
+  )
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetIgnoreList(properties["IgnoreList"].valueOr(::emptyMap))
+  }
+
+  override fun initIgnoreList(): QVariantMap = emptyMap()
+
+  override fun initSetIgnoreList(ignoreList: QVariantMap) {
+  }
+
+  override fun addIgnoreListItem(type: Int, ignoreRule: String, isRegEx: Boolean, strictness: Int,
+                                 scope: Int, scopeRule: String, isActive: Boolean) {
+  }
+
+  override fun removeIgnoreListItem(ignoreRule: String) {
+  }
+
+  override fun toggleIgnoreRule(ignoreRule: String) {
+  }
+
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcChannel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcChannel.kt
new file mode 100644
index 000000000..1fb8e0878
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcChannel.kt
@@ -0,0 +1,317 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IIrcChannel
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.INetwork
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import de.kuschku.quasseldroid_ng.util.helpers.getOr
+import java.nio.charset.Charset
+
+class IrcChannel(
+  name: String,
+  network: Network,
+  proxy: SignalProxy
+) : SyncableObject(proxy, "IrcChannel"), IIrcChannel {
+  override fun init() {
+    renameObject("${network().networkId()}/${name()}")
+  }
+
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "ChanModes" to QVariant_(initChanModes(), Type.QVariantMap),
+    "UserModes" to QVariant_(initUserModes(), Type.QVariantMap)
+  ) + initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetChanModes(properties["ChanModes"].valueOr(::emptyMap))
+    initSetUserModes(properties["UserModes"].valueOr(::emptyMap))
+    initSetProperties(properties)
+  }
+
+  override fun initChanModes(): QVariantMap = mapOf(
+    "A" to QVariant_(_A_channelModes.entries.map { (key, value) ->
+      key to QVariant_(value.toList(), Type.QStringList)
+    }, Type.QVariantMap),
+    "B" to QVariant_(_B_channelModes.entries.map { (key, value) ->
+      key to QVariant_(value, Type.QString)
+    }, Type.QVariantMap),
+    "C" to QVariant_(_C_channelModes.entries.map { (key, value) ->
+      key to QVariant_(value, Type.QString)
+    }, Type.QVariantMap),
+    "D" to QVariant_(_D_channelModes.joinToString(), Type.QString)
+  )
+
+  override fun initUserModes(): QVariantMap = _userModes.entries.map { (key, value) ->
+    key.nick() to QVariant_(value, Type.QString)
+  }.toMap()
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "name" to QVariant_(name(), Type.QString),
+    "topic" to QVariant_(topic(), Type.QString),
+    "password" to QVariant_(password(), Type.QString),
+    "encrypted" to QVariant_(encrypted(), Type.Bool)
+  )
+
+  override fun initSetChanModes(chanModes: QVariantMap) {
+    chanModes["A"].valueOr<Map<String, QVariant_>>(::emptyMap).forEach { (key, variant) ->
+      _A_channelModes[key.toCharArray().first()] =
+        variant.valueOr<QStringList>(::emptyList).filterNotNull().toMutableSet()
+    }
+    chanModes["B"].valueOr<Map<String, QVariant_>>(::emptyMap).forEach { (key, variant) ->
+      _B_channelModes[key.toCharArray().first()] = variant.value("")
+    }
+    chanModes["C"].valueOr<Map<String, QVariant_>>(::emptyMap).forEach { (key, variant) ->
+      _C_channelModes[key.toCharArray().first()] = variant.value("")
+    }
+    _D_channelModes = chanModes["D"].value("").toCharArray().toMutableSet()
+  }
+
+  override fun initSetUserModes(usermodes: QVariantMap) {
+    _userModes.putAll(usermodes.entries.map { (key, value) ->
+      network().newIrcUser(key) to value.value("")
+    }.toMap())
+  }
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setTopic(properties["topic"].value(topic()))
+    setPassword(properties["password"].value(password()))
+    setEncrypted(properties["encrypted"].value(encrypted()))
+  }
+
+  fun isKnownUser(ircUser: IrcUser): Boolean {
+    return _userModes.contains(ircUser)
+  }
+
+  fun isValidChannelUserMode(mode: String): Boolean {
+    return mode.length <= 1
+  }
+
+  fun name() = _name
+  fun topic() = _topic
+  fun password() = _password
+  fun encrypted() = _encrypted
+  fun network() = _network
+  fun ircUsers() = _userModes.keys
+  fun userModes(ircUser: IrcUser) = _userModes.getOr(ircUser, "")
+  fun userModes(nick: String) = network().ircUser(nick)?.let { userModes(it) } ?: ""
+  fun hasMode(mode: Char) = when (network().channelModeType(mode)) {
+    INetwork.ChannelModeType.A_CHANMODE ->
+      _A_channelModes.contains(mode)
+    INetwork.ChannelModeType.B_CHANMODE ->
+      _B_channelModes.contains(mode)
+    INetwork.ChannelModeType.C_CHANMODE ->
+      _C_channelModes.contains(mode)
+    INetwork.ChannelModeType.D_CHANMODE ->
+      _D_channelModes.contains(mode)
+    else                                ->
+      false
+  }
+
+  fun modeValue(mode: Char) = when (network().channelModeType(mode)) {
+    INetwork.ChannelModeType.B_CHANMODE ->
+      _B_channelModes.getOr(mode, "")
+    INetwork.ChannelModeType.C_CHANMODE ->
+      _C_channelModes.getOr(mode, "")
+    else                                ->
+      ""
+  }
+
+  fun modeValueList(mode: Char): Set<String> = when (network().channelModeType(mode)) {
+    INetwork.ChannelModeType.A_CHANMODE ->
+      _A_channelModes.getOrElse(mode, ::emptySet)
+    else                                ->
+      emptySet()
+  }
+
+  fun channelModeString(): String {
+    val modeString = StringBuffer(_D_channelModes.joinToString())
+    val params = mutableListOf<String>()
+    _C_channelModes.entries.forEach { (key, value) ->
+      modeString.append(key)
+      params.add(value)
+    }
+    _B_channelModes.entries.forEach { (key, value) ->
+      modeString.append(key)
+      params.add(value)
+    }
+    return if (modeString.isBlank()) {
+      ""
+    } else {
+      "+$modeString ${params.joinToString(" ")}"
+    }
+  }
+
+  fun codecForEncoding() = _codecForEncoding
+  fun codecForDecoding() = _codecForDecoding
+  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codec: Charset) {
+    _codecForEncoding = codec
+  }
+
+  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codec: Charset) {
+    _codecForDecoding = codec
+  }
+
+  override fun setTopic(topic: String) {
+    if (_topic == topic)
+      return
+    _topic = topic
+    super.setTopic(topic)
+  }
+
+  override fun setPassword(password: String) {
+    if (_password == password)
+      return
+    _password = password
+    super.setPassword(password)
+  }
+
+  override fun setEncrypted(encrypted: Boolean) {
+    if (_encrypted == encrypted)
+      return
+    _encrypted = encrypted
+    super.setEncrypted(encrypted)
+  }
+
+  override fun joinIrcUsers(nicks: QStringList, modes: QStringList) {
+    val (rawUsers, rawModes) = nicks.zip(modes)
+      .map { network().ircUser(it.first) to it.second }
+      .filter { it.first != null }
+      .map { Pair(it.first!!, it.second ?: "") }.unzip()
+    joinIrcUsersInternal(rawUsers, rawModes)
+  }
+
+  private fun joinIrcUsersInternal(rawUsers: List<IrcUser>, rawModes: List<String>) {
+    val users = rawUsers.zip(rawModes)
+    val newNicks = users.filter { !_userModes.contains(it.first) }
+    val oldNicks = users.filter { _userModes.contains(it.first) }
+    for ((user, modes) in oldNicks) {
+      modes.forEach { mode ->
+        addUserMode(user, mode)
+      }
+    }
+    for ((user, modes) in newNicks) {
+      _userModes[user] = modes
+      user.joinChannel(this, true)
+    }
+    if (newNicks.isNotEmpty())
+      super.joinIrcUsers(
+        newNicks.map(Pair<IrcUser, String>::first).map(IrcUser::nick),
+        newNicks.map(Pair<IrcUser, String>::second)
+      )
+  }
+
+  override fun joinIrcUser(ircuser: IrcUser) {
+    joinIrcUsersInternal(listOf(ircuser), listOf(""))
+  }
+
+  override fun part(ircuser: IrcUser?) {
+    if (ircuser == null)
+      return
+    if (!isKnownUser(ircuser))
+      return
+    _userModes.remove(ircuser)
+    ircuser.partChannel(this)
+    if (network().isMe(ircuser) || _userModes.isEmpty()) {
+      for (user in _userModes.keys) {
+        user.partChannel(this)
+      }
+      _userModes.clear()
+      network().removeIrcChannel(this)
+      proxy.stopSynchronize(this)
+    }
+    super.part(ircuser)
+  }
+
+  override fun part(nick: String) {
+    part(network().ircUser(nick))
+  }
+
+  override fun setUserModes(ircuser: IrcUser?, modes: String) {
+    if (ircuser == null || !isKnownUser(ircuser))
+      return
+    _userModes[ircuser] = modes
+    super.setUserModes(ircuser.nick(), modes)
+  }
+
+  override fun setUserModes(nick: String, modes: String) {
+    setUserModes(network().ircUser(nick), modes)
+  }
+
+  fun addUserMode(ircuser: IrcUser, mode: Char) {
+    super.addUserMode(ircuser, Character.toString(mode))
+  }
+
+  override fun addUserMode(ircuser: IrcUser?, mode: String) {
+    if (ircuser == null || !isKnownUser(ircuser) || !isValidChannelUserMode(mode))
+      return
+    if (_userModes.getOr(ircuser, "").contains(mode, ignoreCase = true))
+      return
+    _userModes[ircuser] = _userModes.getOr(ircuser, "") + mode
+    super.addUserMode(ircuser.nick(), mode)
+  }
+
+  override fun addUserMode(nick: String, mode: String) {
+    addUserMode(network().ircUser(nick), mode)
+  }
+
+  override fun removeUserMode(ircuser: IrcUser?, mode: String) {
+    if (ircuser == null || !isKnownUser(ircuser) || !isValidChannelUserMode(mode))
+      return
+    if (_userModes.getOr(ircuser, "").contains(mode, ignoreCase = true))
+      return
+    _userModes[ircuser] = _userModes.getOr(ircuser, "")
+      .replace(mode, "", ignoreCase = true)
+    super.addUserMode(ircuser.nick(), mode)
+  }
+
+  override fun removeUserMode(nick: String, mode: String) {
+    removeUserMode(network().ircUser(nick), mode)
+  }
+
+  override fun addChannelMode(mode: Char, value: String) {
+    when (network().channelModeType(mode)) {
+      INetwork.ChannelModeType.A_CHANMODE     ->
+        _A_channelModes.getOrPut(mode, ::mutableSetOf).add(value)
+      INetwork.ChannelModeType.B_CHANMODE     ->
+        _B_channelModes[mode] = value
+      INetwork.ChannelModeType.C_CHANMODE     ->
+        _C_channelModes[mode] = value
+      INetwork.ChannelModeType.D_CHANMODE     ->
+        _D_channelModes.add(mode)
+      INetwork.ChannelModeType.NOT_A_CHANMODE ->
+        throw IllegalArgumentException("Received invalid channel mode: $mode $value")
+    }
+    super.addChannelMode(mode, value)
+  }
+
+  override fun removeChannelMode(mode: Char, value: String) {
+    when (network().channelModeType(mode)) {
+      INetwork.ChannelModeType.A_CHANMODE     ->
+        _A_channelModes.getOrPut(mode, ::mutableSetOf).remove(value)
+      INetwork.ChannelModeType.B_CHANMODE     ->
+        _B_channelModes.remove(mode)
+      INetwork.ChannelModeType.C_CHANMODE     ->
+        _C_channelModes.remove(mode)
+      INetwork.ChannelModeType.D_CHANMODE     ->
+        _D_channelModes.remove(mode)
+      INetwork.ChannelModeType.NOT_A_CHANMODE ->
+        throw IllegalArgumentException("Received invalid channel mode: $mode $value")
+    }
+    super.removeChannelMode(mode, value)
+  }
+
+  private var _name: String = name
+  private var _topic: String = ""
+  private var _password: String = ""
+  private var _encrypted: Boolean = false
+  private var _userModes: MutableMap<IrcUser, String> = mutableMapOf()
+  private var _network: Network = network
+  private var _codecForEncoding: Charset? = null
+  private var _codecForDecoding: Charset? = null
+  private var _A_channelModes: MutableMap<Char, MutableSet<String>> = mutableMapOf()
+  private var _B_channelModes: MutableMap<Char, String> = mutableMapOf()
+  private var _C_channelModes: MutableMap<Char, String> = mutableMapOf()
+  private var _D_channelModes: MutableSet<Char> = mutableSetOf()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcListHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcListHelper.kt
new file mode 100644
index 000000000..f61b65bca
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcListHelper.kt
@@ -0,0 +1,21 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.NetworkId
+import de.kuschku.quasseldroid_ng.protocol.QStringList
+import de.kuschku.quasseldroid_ng.protocol.QVariantList
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IIrcListHelper
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class IrcListHelper constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "IrcListHelper"), IIrcListHelper {
+  override fun receiveChannelList(netId: NetworkId, channelFilters: QStringList,
+                                  data: QVariantList) {
+  }
+
+  override fun reportFinishedList(netId: NetworkId) {
+  }
+
+  override fun reportError(error: String) {
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcUser.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcUser.kt
new file mode 100644
index 000000000..e01b208e0
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/IrcUser.kt
@@ -0,0 +1,287 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IIrcUser
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import org.threeten.bp.Instant
+import java.nio.charset.Charset
+
+class IrcUser(
+  hostmask: String,
+  network: Network,
+  proxy: SignalProxy
+) : SyncableObject(proxy, "IrcUser"), IIrcUser {
+  override fun init() {
+    updateObjectName()
+  }
+
+  override fun toVariantMap() = initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "user" to QVariant_(user(), Type.QString),
+    "host" to QVariant_(host(), Type.QString),
+    "nick" to QVariant_(nick(), Type.QString),
+    "realName" to QVariant_(realName(), Type.QString),
+    "account" to QVariant_(account(), Type.QString),
+    "away" to QVariant_(isAway(), Type.Bool),
+    "awayMessage" to QVariant_(awayMessage(), Type.QString),
+    "idleTime" to QVariant_(idleTime(), Type.QDateTime),
+    "loginTime" to QVariant_(loginTime(), Type.QDateTime),
+    "server" to QVariant_(server(), Type.QString),
+    "ircOperator" to QVariant_(ircOperator(), Type.QString),
+    "lastAwayMessage" to QVariant_(lastAwayMessage(), Type.Int),
+    "whoisServiceReply" to QVariant_(whoisServiceReply(), Type.QString),
+    "suserHost" to QVariant_(suserHost(), Type.QString),
+    "encrypted" to QVariant_(encrypted(), Type.Bool),
+
+    "channels" to QVariant_(channels(), Type.QStringList),
+    "userModes" to QVariant_(userModes(), Type.QString)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setUser(properties["user"].value(user()))
+    setHost(properties["host"].value(host()))
+    setNick(properties["nick"].value(nick()))
+    setRealName(properties["realName"].value(realName()))
+    setAccount(properties["account"].value(account()))
+    setAway(properties["away"].value(isAway()))
+    setAwayMessage(properties["awayMessage"].value(awayMessage()))
+    setIdleTime(properties["idleTime"].value(idleTime()))
+    setLoginTime(properties["loginTime"].value(loginTime()))
+    setServer(properties["server"].value(server()))
+    setIrcOperator(properties["ircOperator"].value(ircOperator()))
+    setLastAwayMessage(properties["lastAwayMessage"].value(lastAwayMessage()))
+    setWhoisServiceReply(properties["whoisServiceReply"].value(whoisServiceReply()))
+    setSuserHost(properties["suserHost"].value(suserHost()))
+    setEncrypted(properties["encrypted"].value(encrypted()))
+
+    setUserModes(properties["userModes"].value(userModes()))
+  }
+
+  fun user() = _user
+  fun host() = _host
+  fun nick() = _nick
+  fun realName() = _realName
+  fun account() = _account
+  fun hostMask() = "${nick()}!${user()}@${host()}"
+  fun isAway() = _away
+  fun awayMessage() = _awayMessage
+  fun idleTime(): Instant {
+    if (Instant.now().epochSecond - _idleTimeSet.epochSecond > 1200)
+      _idleTime = Instant.EPOCH
+    return _idleTime
+  }
+
+  fun loginTime() = _loginTime
+  fun server() = _server
+  fun ircOperator() = _ircOperator
+  fun lastAwayMessage() = _lastAwayMessage
+  fun whoisServiceReply() = _whoisServiceReply
+  fun suserHost() = _suserHost
+  fun encrypted() = _encrypted
+  fun network() = _network
+  fun userModes() = _userModes
+  fun channels() = _channels.map(IrcChannel::name)
+  fun codecForEncoding() = _codecForEncoding
+  fun codecForDecoding() = _codecForDecoding
+  fun setCodecForEncoding(codecName: String) = setCodecForEncoding(Charset.forName(codecName))
+  fun setCodecForEncoding(codec: Charset) {
+    _codecForEncoding = codec
+  }
+
+  fun setCodecForDecoding(codecName: String) = setCodecForDecoding(Charset.forName(codecName))
+  fun setCodecForDecoding(codec: Charset) {
+    _codecForDecoding = codec
+  }
+
+  override fun setUser(user: String) {
+    if (_user != user) {
+      _user = user
+      super.setUser(user)
+    }
+  }
+
+  override fun setHost(host: String) {
+    if (_host != host) {
+      _host = host
+      super.setHost(host)
+    }
+  }
+
+  override fun setNick(nick: String) {
+    if (nick.isNotBlank() && _nick != nick) {
+      _nick = nick
+      updateObjectName()
+      super.setNick(nick)
+    }
+  }
+
+  override fun setRealName(realName: String) {
+    if (_realName != realName) {
+      _realName = realName
+      super.setRealName(realName)
+    }
+  }
+
+  override fun setAccount(account: String) {
+    if (_account != account) {
+      _account = account
+      super.setAccount(account)
+    }
+  }
+
+  override fun setAway(away: Boolean) {
+    if (_away != away) {
+      _away = away
+      super.setAway(away)
+    }
+  }
+
+  override fun setAwayMessage(awayMessage: String) {
+    if (_awayMessage != awayMessage) {
+      _awayMessage = awayMessage
+      super.setAwayMessage(awayMessage)
+    }
+  }
+
+  override fun setIdleTime(idleTime: Instant) {
+    if (_idleTime != idleTime) {
+      _idleTime = idleTime
+      _idleTimeSet = Instant.now()
+      super.setIdleTime(idleTime)
+    }
+  }
+
+  override fun setLoginTime(loginTime: Instant) {
+    if (_loginTime != loginTime) {
+      _loginTime = loginTime
+      super.setLoginTime(loginTime)
+    }
+  }
+
+  override fun setIrcOperator(ircOperator: String) {
+    if (_ircOperator != ircOperator) {
+      _ircOperator = ircOperator
+      super.setIrcOperator(ircOperator)
+    }
+  }
+
+  override fun setLastAwayMessage(lastAwayMessage: Int) {
+    if (lastAwayMessage > _lastAwayMessage) {
+      _lastAwayMessage = lastAwayMessage
+      super.setLastAwayMessage(lastAwayMessage)
+    }
+  }
+
+  override fun setWhoisServiceReply(whoisServiceReply: String) {
+    if (_whoisServiceReply != whoisServiceReply) {
+      _whoisServiceReply = whoisServiceReply
+      super.setWhoisServiceReply(whoisServiceReply)
+    }
+  }
+
+  override fun setSuserHost(suserHost: String) {
+    if (_suserHost != suserHost) {
+      _suserHost = suserHost
+      super.setSuserHost(suserHost)
+    }
+  }
+
+  override fun setEncrypted(encrypted: Boolean) {
+    if (_encrypted != encrypted) {
+      _encrypted = encrypted
+      super.setEncrypted(encrypted)
+    }
+  }
+
+  override fun updateHostmask(mask: String) {
+    if (hostMask() != mask) {
+      val (user, host, _) = splitHostMask(mask)
+      setUser(user)
+      setHost(host)
+    }
+  }
+
+  override fun setUserModes(modes: String) {
+    if (_userModes != modes) {
+      _userModes = modes
+      super.setUserModes(modes)
+    }
+  }
+
+  override fun joinChannel(channel: IrcChannel, skip_channel_join: Boolean) {
+    if (!_channels.contains(channel)) {
+      _channels.add(channel)
+      if (!skip_channel_join)
+        channel.joinIrcUser(this)
+    }
+  }
+
+  override fun joinChannel(channelname: String) {
+    joinChannel(network().newIrcChannel(channelname))
+  }
+
+  override fun partChannel(channel: IrcChannel) {
+    if (_channels.contains(channel)) {
+      _channels.remove(channel)
+      channel.part(this)
+      super.partChannel(channel.name())
+      if (_channels.isEmpty() && !network().isMe(this))
+        quit()
+    }
+  }
+
+  override fun partChannel(channelname: String) {
+    val channel = network().ircChannel(channelname)
+      ?: throw IllegalArgumentException("Received part for unknown channel : $channelname")
+    partChannel(channel)
+  }
+
+  override fun quit() {
+    for (channel in _channels) {
+      channel.part(this)
+    }
+    _channels.clear()
+    network().removeIrcUser(this)
+    super.quit()
+    proxy.stopSynchronize(this)
+  }
+
+  override fun addUserModes(modes: String) {
+    super.addUserModes(modes)
+  }
+
+  override fun removeUserModes(modes: String) {
+    super.removeUserModes(modes)
+  }
+
+  fun updateObjectName() {
+    renameObject("${network().networkId()}/$_nick")
+  }
+
+  private var _nick: String = nickFromMask(hostmask)
+  private var _user: String = userFromMask(hostmask)
+  private var _host: String = hostFromMask(hostmask)
+  private var _realName: String = ""
+  private var _account: String = ""
+  private var _awayMessage: String = ""
+  private var _away: Boolean = false
+  private var _server: String = ""
+  private var _idleTime: Instant = Instant.EPOCH
+  private var _idleTimeSet: Instant = Instant.EPOCH
+  private var _loginTime: Instant = Instant.EPOCH
+  private var _ircOperator: String = ""
+  private var _lastAwayMessage: Int = 0
+  private var _whoisServiceReply: String = ""
+  private var _suserHost: String = ""
+  private var _encrypted: Boolean = false
+  private var _channels: MutableSet<IrcChannel> = mutableSetOf()
+  private var _userModes: String = ""
+  private var _network: Network = network
+  private var _codecForEncoding: Charset? = null
+  private var _codecForDecoding: Charset? = null
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Network.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Network.kt
new file mode 100644
index 000000000..9cf27b50e
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/Network.kt
@@ -0,0 +1,871 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.StringSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.serializeString
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.INetwork
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.INetwork.*
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import de.kuschku.quasseldroid_ng.util.helpers.getOr
+import java.nio.ByteBuffer
+import java.nio.charset.Charset
+import java.util.*
+
+class Network constructor(
+  networkId: NetworkId,
+  proxy: SignalProxy
+) : SyncableObject(proxy, "Network"), INetwork {
+  override fun init() {
+    renameObject("$_networkId")
+  }
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetCaps(properties["Caps"].valueOr(::emptyMap))
+    initSetCapsEnabled(properties["CapsEnabled"].valueOr(::emptyList))
+    initSetIrcUsersAndChannels(properties["IrcUsersAndChannels"].valueOr(::emptyMap))
+    initSetServerList(properties["ServerList"].valueOr(::emptyList))
+    initSetSupports(properties["Supports"].valueOr(::emptyMap))
+    initSetProperties(properties)
+  }
+
+  override fun toVariantMap(): QVariantMap = mapOf(
+    "Caps" to QVariant_(initCaps(), Type.QVariantMap),
+    "CapsEnabled" to QVariant_(initCapsEnabled(), Type.QVariantList),
+    "IrcUsersAndChannels" to QVariant_(initIrcUsersAndChannels(), Type.QVariantMap),
+    "ServerList" to QVariant_(initServerList(), Type.QVariantList),
+    "Supports" to QVariant_(initSupports(), Type.QVariantMap)
+  ) + initProperties()
+
+  fun isMyNick(nick: String) = myNick().equals(nick, true)
+  fun isMe(ircUser: IrcUser) = myNick().equals(ircUser.nick(), true)
+  fun isChannelName(channelName: String) = when {
+    channelName.isBlank() -> false
+    supports("CHANTYPES") -> support("CHANTYPES").contains(channelName[0])
+    else                  -> "#&!+".contains(channelName[0])
+  }
+
+  /**
+   * Checks if the target counts as a STATUSMSG
+   *
+   * Status messages are prefixed with one or more characters from the server-provided STATUSMSG
+   * if available, otherwise "@" and "+" are assumed.  Generally, status messages sent to a
+   * channel are only visible to those with the same or higher permissions, e.g. voiced.
+   *
+   * @param target Name of destination, e.g. a channel or query
+   * @return True if a STATUSMSG, otherwise false
+   */
+  fun isStatusMsg(target: String) = when {
+    target.isBlank()      -> false
+    supports("STATUSMSG") -> support("STATUSMSG").contains(target[0])
+    else                  -> "@+".contains(target[0])
+  }
+
+  fun isConnected() = _connected
+  fun connectionState() = _connectionState
+  fun prefixToMode(prefix: Char): Char?
+    = prefixModes().elementAtOrNull(prefixes().indexOf(prefix))
+
+  fun prefixesToModes(prefixes: String): String
+    = prefixes.toCharArray().map(this::prefixToMode).filterNotNull().joinToString()
+
+  fun modeToPrefix(mode: Char): Char?
+    = prefixes().elementAtOrNull(prefixModes().indexOf(mode))
+
+  fun modesToPrefixes(modes: String): String
+    = modes.toCharArray().map(this::modeToPrefix).filterNotNull().joinToString()
+
+  fun channelModeType(mode: Char): ChannelModeType {
+    if (_channelModes == null)
+      determineChannelModeTypes()
+    return _channelModes?.entries
+      ?.filter { (_, chars) -> chars.contains(mode) }
+      ?.map(Map.Entry<ChannelModeType, Set<Char>>::key)
+      ?.firstOrNull() ?: ChannelModeType.NOT_A_CHANMODE
+  }
+
+  private fun determineChannelModeTypes() {
+    _channelModes = ChannelModeType.validValues
+      .zip(
+        support("CHANMODES")
+          .split(',', limit = ChannelModeType.validValues.size)
+          .map(String::toCharArray)
+          .map(CharArray::toSet)
+      ).toMap()
+  }
+
+  fun networkId() = _networkId
+  fun networkName() = _networkName
+  fun currentServer() = _currentServer
+  fun myNick() = _myNick
+  fun latency() = _latency
+  fun me() = ircUser(myNick())
+  fun identity() = _identity
+  fun nicks() = _ircUsers.values.map(IrcUser::nick)
+  fun channels(): Set<String> = _ircChannels.keys
+  fun caps(): Set<String> = _caps.keys
+  fun capsEnabled(): Set<String> = _capsEnabled
+  fun serverList() = _serverList
+  fun useRandomServer() = _useRandomServer
+  fun perform() = _perform
+  fun useAutoIdentify() = _useAutoIdentify
+  fun autoIdentifyService() = _autoIdentifyService
+  fun autoIdentifyPassword() = _autoIdentifyPassword
+  fun useSasl() = _useSasl
+  fun saslAccount() = _saslAccount
+  fun saslPassword() = _saslPassword
+  fun useAutoReconnect() = _useAutoReconnect
+  fun autoReconnectInterval() = _autoReconnectInterval
+  fun autoReconnectRetries() = _autoReconnectRetries
+  fun unlimitedReconnectRetries() = _unlimitedReconnectRetries
+  fun rejoinChannels() = _rejoinChannels
+  fun useCustomMessageRate() = _useCustomMessageRate
+  fun messageRateBurstSize() = _messageRateBurstSize
+  fun messageRateDelay() = _messageRateDelay
+  fun unlimitedMessageRate() = _unlimitedMessageRate
+  fun networkInfo() = NetworkInfo(
+    networkName = networkName(),
+    networkId = networkId(),
+    identity = identity(),
+    codecForServer = codecForServer(),
+    codecForEncoding = codecForEncoding(),
+    codecForDecoding = codecForDecoding(),
+    serverList = serverList(),
+    useRandomServer = useRandomServer(),
+    perform = perform(),
+    useAutoIdentify = useAutoIdentify(),
+    autoIdentifyService = autoIdentifyService(),
+    autoIdentifyPassword = autoIdentifyPassword(),
+    useSasl = useSasl(),
+    saslAccount = saslAccount(),
+    saslPassword = saslPassword(),
+    useAutoReconnect = useAutoReconnect(),
+    autoReconnectInterval = autoReconnectInterval(),
+    autoReconnectRetries = autoReconnectRetries(),
+    unlimitedReconnectRetries = unlimitedReconnectRetries(),
+    rejoinChannels = rejoinChannels(),
+    useCustomMessageRate = useCustomMessageRate(),
+    messageRateBurstSize = messageRateBurstSize(),
+    messageRateDelay = messageRateDelay(),
+    unlimitedMessageRate = unlimitedMessageRate()
+  )
+
+  fun setNetworkInfo(info: NetworkInfo) {
+    // we don't set our ID!
+    if (!info.networkName.isEmpty() && info.networkName != networkName())
+      setNetworkName(info.networkName)
+    if (info.identity > 0 && info.identity != identity())
+      setIdentity(info.identity)
+    if (info.codecForServer != codecForServer())
+      setCodecForServer(Charset.forName(info.codecForServer))
+    if (info.codecForEncoding != codecForEncoding())
+      setCodecForEncoding(Charset.forName(info.codecForEncoding))
+    if (info.codecForDecoding != codecForDecoding())
+      setCodecForDecoding(Charset.forName(info.codecForDecoding))
+    // FIXME compare components
+    if (info.serverList.isNotEmpty())
+      setServerList(info.serverList.map { QVariant_(it, QType.Network_Server) })
+    if (info.useRandomServer != useRandomServer())
+      setUseRandomServer(info.useRandomServer)
+    if (info.perform != perform())
+      setPerform(info.perform)
+    if (info.useAutoIdentify != useAutoIdentify())
+      setUseAutoIdentify(info.useAutoIdentify)
+    if (info.autoIdentifyService != autoIdentifyService())
+      setAutoIdentifyService(info.autoIdentifyService)
+    if (info.autoIdentifyPassword != autoIdentifyPassword())
+      setAutoIdentifyPassword(info.autoIdentifyPassword)
+    if (info.useSasl != useSasl())
+      setUseSasl(info.useSasl)
+    if (info.saslAccount != saslAccount())
+      setSaslAccount(info.saslAccount)
+    if (info.saslPassword != saslPassword())
+      setSaslPassword(info.saslPassword)
+    if (info.useAutoReconnect != useAutoReconnect())
+      setUseAutoReconnect(info.useAutoReconnect)
+    if (info.autoReconnectInterval != autoReconnectInterval())
+      setAutoReconnectInterval(info.autoReconnectInterval)
+    if (info.autoReconnectRetries != autoReconnectRetries())
+      setAutoReconnectRetries(info.autoReconnectRetries)
+    if (info.unlimitedReconnectRetries != unlimitedReconnectRetries())
+      setUnlimitedReconnectRetries(info.unlimitedReconnectRetries)
+    if (info.rejoinChannels != rejoinChannels())
+      setRejoinChannels(info.rejoinChannels)
+    // Custom rate limiting
+    if (info.useCustomMessageRate != useCustomMessageRate())
+      setUseCustomMessageRate(info.useCustomMessageRate)
+    if (info.messageRateBurstSize != messageRateBurstSize())
+      setMessageRateBurstSize(info.messageRateBurstSize)
+    if (info.messageRateDelay != messageRateDelay())
+      setMessageRateDelay(info.messageRateDelay)
+    if (info.unlimitedMessageRate != unlimitedMessageRate())
+      setUnlimitedMessageRate(info.unlimitedMessageRate)
+  }
+
+  fun prefixes(): Set<Char> {
+    if (_prefixes == null)
+      determinePrefixes()
+    return _prefixes!!
+  }
+
+  fun prefixModes(): Set<Char> {
+    if (_prefixModes == null)
+      determinePrefixes()
+    return _prefixModes!!
+  }
+
+  private fun determinePrefixes() {
+    // seems like we have to construct them first
+    val prefix = support("PREFIX")
+    if (prefix.startsWith("(") && prefix.contains(")")) {
+      val (prefixes, prefixModes) = prefix.substring(1)
+        .split(')', limit = 2)
+        .map(String::toCharArray)
+        .map(CharArray::toSet)
+      _prefixes = prefixes
+      _prefixModes = prefixModes
+    } else {
+      val defaultPrefixes = setOf('~', '&', '@', '%', '+')
+      val defaultPrefixModes = setOf('q', 'a', 'o', 'h', 'v')
+      if (prefix.isBlank()) {
+        _prefixes = defaultPrefixes
+        _prefixModes = defaultPrefixModes
+        return
+      }
+      // we just assume that in PREFIX are only prefix chars stored
+      val (prefixes, prefixModes) = defaultPrefixes.zip(defaultPrefixModes)
+        .filter { prefix.contains(it.second) }
+        .unzip()
+      _prefixes = prefixes.toSet()
+      _prefixModes = prefixModes.toSet()
+      // check for success
+      if (prefixes.isNotEmpty())
+        return
+      // well... our assumption was obviously wrong...
+      // check if it's only prefix modes
+      val (prefixes2, prefixModes2) = defaultPrefixes.zip(defaultPrefixModes)
+        .filter { prefix.contains(it.first) }
+        .unzip()
+      _prefixes = prefixes2.toSet()
+      _prefixModes = prefixModes2.toSet()
+      // now we've done all we've could...
+    }
+  }
+
+  fun supports(param: String) = _supports.contains(param.toUpperCase(Locale.ENGLISH))
+  fun support(param: String) = _supports.getOr(param, "")
+  /**
+   * Checks if a given capability is advertised by the server.
+   *
+   * These results aren't valid if the network is disconnected or capability negotiation hasn't
+   * happened, and some servers might not correctly advertise capabilities. Don't treat this as a
+   * guarantee.
+   *
+   * @param capability Name of capability
+   * @return True if connected and advertised by the server, otherwise false
+   */
+  fun capAvailable(capability: String)
+    = _caps.contains(capability.toLowerCase(Locale.ENGLISH))
+
+  /**
+   * Checks if a given capability is acknowledged and active.
+   *
+   * @param capability Name of capability
+   * @return True if acknowledged (active), otherwise false
+   */
+  fun capEnabled(capability: String)
+    = _capsEnabled.contains(capability.toLowerCase(Locale.ENGLISH))
+
+  /**
+   * Gets the value of an available capability, e.g. for SASL, "EXTERNAL,PLAIN".
+   *
+   * @param capability Name of capability
+   * @return Value of capability if one was specified, otherwise empty string
+   */
+  fun capValue(capability: String)
+    = _caps.getOr(capability.toLowerCase(Locale.ENGLISH), "")
+
+  /**
+   * Check if the given authentication mechanism is likely to be supported.
+   *
+   * This depends on the server advertising SASL support and either declaring available mechanisms
+   * (SASL 3.2), or just indicating something is supported (SASL 3.1).
+   *
+   * @param saslMechanism  Desired SASL mechanism
+   * @return True if mechanism supported or unknown, otherwise false
+   */
+  fun saslMaybeSupports(saslMechanism: String): Boolean {
+    if (!capAvailable(IrcCap.SASL)) {
+      // If SASL's not advertised at all, it's likely the mechanism isn't supported, as per specs.
+      // Unfortunately, we don't know for sure, but Quassel won't request SASL without it being
+      // advertised, anyways.
+      // This may also occur if the network's disconnected or negotiation hasn't yet happened.
+      return false
+    }
+    // Get the SASL capability value
+    val capValue = capValue(IrcCap.SASL)
+    // SASL mechanisms are only specified in capability values as part of SASL 3.2.  In SASL 3.1,
+    // it's handled differently.  If we don't know via capability value, assume it's supported to
+    // reduce the risk of breaking existing setups.
+    // See: http://ircv3.net/specs/extensions/sasl-3.1.html
+    // And: http://ircv3.net/specs/extensions/sasl-3.2.html
+    return (capValue.isBlank() || capValue.contains(saslMechanism, ignoreCase = true))
+  }
+
+  fun newIrcUser(hostMask: String, initData: QVariantMap = emptyMap()): IrcUser {
+    val nick = nickFromMask(hostMask).toLowerCase(Locale.ENGLISH)
+    val user = ircUser(nick)
+    return if (user == null) {
+      val ircUser = IrcUser(hostMask, this, proxy)
+      ircUser.init()
+      if (initData.isNotEmpty()) {
+        ircUser.fromVariantMap(initData)
+        ircUser.initialized = true
+      }
+      proxy.synchronize(ircUser)
+      _ircUsers[nick] = ircUser
+      val mask = ircUser.hostMask()
+      super.addIrcUser(mask)
+      ircUser
+    } else {
+      user
+    }
+  }
+
+  fun ircUser(nickName: String?) = _ircUsers[nickName]
+  fun ircUsers() = _ircUsers.values.toList()
+  fun ircUserCount(): UInt = _ircUsers.size
+  fun newIrcChannel(channelName: String, initData: QVariantMap = emptyMap()): IrcChannel {
+    val channel = ircChannel(channelName)
+    if (channel == null) {
+      val ircChannel = IrcChannel(channelName, this, proxy)
+      ircChannel.init()
+      if (initData.isNotEmpty()) {
+        ircChannel.fromVariantMap(initData)
+        ircChannel.initialized = true
+      }
+      proxy.synchronize(ircChannel)
+      _ircChannels[channelName.toLowerCase(Locale.ENGLISH)] = ircChannel
+      super.addIrcChannel(channelName)
+      return ircChannel
+    } else {
+      return channel
+    }
+  }
+
+  fun ircChannel(channelName: String) = _ircChannels[channelName]
+  fun ircChannels() = _ircChannels.values.toList()
+  fun ircChanenlCount(): UInt = _ircChannels.size
+  fun codecForServer() = _codecForServer.name()
+  fun codecForEncoding() = _codecForEncoding.name()
+  fun codecForDecoding() = _codecForDecoding.name()
+  fun setCodecForDecoding(codec: Charset) {
+    _codecForDecoding = codec
+    super.setCodecForDecoding(Charsets.ISO_8859_1.encode(codecForDecoding()))
+  }
+
+  fun setCodecForEncoding(codec: Charset) {
+    _codecForEncoding = codec
+    super.setCodecForEncoding(Charsets.ISO_8859_1.encode(codecForEncoding()))
+  }
+
+  fun setCodecForServer(codec: Charset) {
+    _codecForServer = codec
+    super.setCodecForServer(Charsets.ISO_8859_1.encode(codecForServer()))
+  }
+
+  fun autoAwayActive() = _autoAwayActive
+  fun setAutoAwayActive(active: Boolean) {
+    _autoAwayActive = active
+  }
+
+  override fun setNetworkName(networkName: String) {
+    if (_networkName == networkName)
+      return
+    _networkName = networkName
+    super.setNetworkName(networkName)
+  }
+
+  override fun setCurrentServer(currentServer: String) {
+    if (_currentServer == currentServer)
+      return
+    _currentServer = currentServer
+    super.setCurrentServer(currentServer)
+  }
+
+  override fun setConnected(isConnected: Boolean) {
+    if (_connected == isConnected)
+      return
+    _connected = isConnected
+    if (!isConnected) {
+      setMyNick("")
+      setCurrentServer("")
+      removeChansAndUsers()
+    }
+    super.setConnected(isConnected)
+  }
+
+  override fun setConnectionState(state: Int) {
+    val actualConnectionState = ConnectionState.of(state)
+    if (_connectionState == actualConnectionState)
+      return
+    _connectionState = actualConnectionState
+    super.setConnectionState(state)
+  }
+
+  override fun setMyNick(mynick: String) {
+    if (_myNick == mynick)
+      return
+    _myNick = mynick
+    if (_myNick.isNotEmpty() && ircUser(myNick()) == null) {
+      newIrcUser(myNick())
+    }
+    super.setMyNick(mynick)
+  }
+
+  override fun setLatency(latency: Int) {
+    if (_latency == latency)
+      return
+    _latency = latency
+    super.setLatency(latency)
+  }
+
+  override fun setIdentity(identity: IdentityId) {
+    if (_identity == identity)
+      return
+    _identity = identity
+    super.setIdentity(identity)
+  }
+
+  override fun setServerList(serverList: QVariantList) {
+    val actualServerList = serverList.map {
+      it.valueOrThrow<Server>()
+    }
+    if (_serverList == actualServerList)
+      return
+    _serverList = actualServerList
+    super.setServerList(serverList)
+  }
+
+  override fun setUseRandomServer(randomServer: Boolean) {
+    if (_useRandomServer == randomServer)
+      return
+    _useRandomServer = randomServer
+    super.setUseRandomServer(randomServer)
+  }
+
+  override fun setPerform(perform: QStringList) {
+    val actualPerform = perform.map { it ?: "" }
+    if (_perform == actualPerform)
+      return
+    _perform = actualPerform
+    super.setPerform(perform)
+  }
+
+  override fun setUseAutoIdentify(autoIdentify: Boolean) {
+    if (_useAutoIdentify == autoIdentify)
+      return
+    _useAutoIdentify = autoIdentify
+    super.setUseAutoIdentify(autoIdentify)
+  }
+
+  override fun setAutoIdentifyService(service: String) {
+    if (_autoIdentifyService == service)
+      return
+    _autoIdentifyService = service
+    super.setAutoIdentifyService(service)
+  }
+
+  override fun setAutoIdentifyPassword(password: String) {
+    if (_autoIdentifyPassword == password)
+      return
+    _autoIdentifyPassword = password
+    super.setAutoIdentifyPassword(password)
+  }
+
+  override fun setUseSasl(sasl: Boolean) {
+    if (_useSasl == sasl)
+      return
+    _useSasl = sasl
+    super.setUseSasl(sasl)
+  }
+
+  override fun setSaslAccount(account: String) {
+    if (_saslAccount == account)
+      return
+    _saslAccount = account
+    super.setSaslAccount(account)
+  }
+
+  override fun setSaslPassword(password: String) {
+    if (_saslPassword == password)
+      return
+    _saslPassword = password
+    super.setSaslPassword(password)
+  }
+
+  override fun setUseAutoReconnect(autoReconnect: Boolean) {
+    if (_useAutoReconnect == autoReconnect)
+      return
+    _useAutoReconnect = autoReconnect
+    super.setUseAutoReconnect(autoReconnect)
+  }
+
+  override fun setAutoReconnectInterval(interval: UInt) {
+    if (_autoReconnectInterval == interval)
+      return
+    _autoReconnectInterval = interval
+    super.setAutoReconnectInterval(interval)
+  }
+
+  override fun setAutoReconnectRetries(retries: UShort) {
+    if (_autoReconnectRetries == retries)
+      return
+    _autoReconnectRetries = retries
+    super.setAutoReconnectRetries(retries)
+  }
+
+  override fun setUnlimitedReconnectRetries(unlimitedRetries: Boolean) {
+    if (_unlimitedReconnectRetries == unlimitedRetries)
+      return
+    _unlimitedReconnectRetries = unlimitedRetries
+    super.setUnlimitedReconnectRetries(unlimitedRetries)
+  }
+
+  override fun setRejoinChannels(rejoinChannels: Boolean) {
+    if (_rejoinChannels == rejoinChannels)
+      return
+    _rejoinChannels = rejoinChannels
+    super.setRejoinChannels(rejoinChannels)
+  }
+
+  /**
+   * Sets whether or not custom rate limiting is used.
+   *
+   * Setting limits too low may value you disconnected from the server!
+   *
+   * @param useCustomRate If true, use custom rate limits, otherwise use Quassel defaults.
+   */
+
+  override fun setUseCustomMessageRate(useCustomRate: Boolean) {
+    if (_useCustomMessageRate == useCustomRate)
+      return
+    _useCustomMessageRate = useCustomRate
+    super.setUseCustomMessageRate(useCustomRate)
+  }
+
+  override fun setMessageRateBurstSize(burstSize: UInt) {
+    if (_messageRateBurstSize == burstSize)
+      return
+    if (burstSize < 1)
+      throw IllegalArgumentException("Message Burst Size must be a positive number: $burstSize")
+    _messageRateBurstSize = burstSize
+    super.setMessageRateBurstSize(burstSize)
+  }
+
+  override fun setMessageRateDelay(messageDelay: UInt) {
+    if (_messageRateDelay == messageDelay)
+      return
+    if (messageDelay < 1)
+      throw IllegalArgumentException("Message Delay must be a positive number: $messageDelay")
+    _messageRateDelay = messageDelay
+    super.setMessageRateDelay(messageDelay)
+  }
+
+  override fun setUnlimitedMessageRate(unlimitedRate: Boolean) {
+    if (_unlimitedMessageRate == unlimitedRate)
+      return
+    _unlimitedMessageRate = unlimitedRate
+    super.setUnlimitedMessageRate(unlimitedRate)
+  }
+
+  override fun setCodecForDecoding(codecName: ByteBuffer?) {
+    if (codecName != null)
+      setCodecForDecoding(Charsets.ISO_8859_1.decode(codecName).toString())
+  }
+
+  override fun setCodecForEncoding(codecName: ByteBuffer?) {
+    if (codecName != null)
+      setCodecForEncoding(Charsets.ISO_8859_1.decode(codecName).toString())
+  }
+
+  override fun setCodecForServer(codecName: ByteBuffer?) {
+    if (codecName != null)
+      setCodecForServer(Charsets.ISO_8859_1.decode(codecName).toString())
+  }
+
+  fun setCodecForDecoding(codecName: String) {
+    setCodecForDecoding(Charset.forName(codecName))
+  }
+
+  fun setCodecForEncoding(codecName: String) {
+    setCodecForDecoding(Charset.forName(codecName))
+  }
+
+  fun setCodecForServer(codecName: String) {
+    setCodecForDecoding(Charset.forName(codecName))
+  }
+
+  override fun addSupport(param: String, value: String) {
+    _supports[param] = value
+    super.addSupport(param, value)
+  }
+
+  override fun removeSupport(param: String) {
+    if (!_supports.contains(param))
+      return
+    _supports.remove(param)
+    super.removeSupport(param)
+  }
+
+  override fun addCap(capability: String, value: String) {
+    _caps[capability.toLowerCase(Locale.ENGLISH)] = value
+    super.addCap(capability, value)
+  }
+
+  override fun acknowledgeCap(capability: String) {
+    val lowerCase = capability.toLowerCase(Locale.ENGLISH)
+    if (!_capsEnabled.contains(lowerCase))
+      return
+    _capsEnabled.add(lowerCase)
+    super.acknowledgeCap(capability)
+  }
+
+  override fun removeCap(capability: String) {
+    val lowerCase = capability.toLowerCase(Locale.ENGLISH)
+    if (!_caps.contains(lowerCase))
+      return
+    _caps.remove(lowerCase)
+    _capsEnabled.remove(lowerCase)
+    super.removeCap(capability)
+  }
+
+  override fun clearCaps() {
+    if (_caps.isEmpty() && _capsEnabled.isEmpty())
+      return
+    _caps.clear()
+    _capsEnabled.clear()
+    super.clearCaps()
+  }
+
+  override fun addIrcUser(hostmask: String) {
+    newIrcUser(hostmask)
+  }
+
+  override fun addIrcChannel(channel: String) {
+    newIrcChannel(channel)
+  }
+
+  override fun initSupports(): QVariantMap = _supports.entries.map { (key, value) ->
+    key to QVariant_(value, Type.QString)
+  }.toMap()
+
+  override fun initCaps(): QVariantMap = _caps.entries.map { (key, value) ->
+    key to QVariant_(value, Type.QString)
+  }.toMap()
+
+  override fun initCapsEnabled(): QVariantList = _capsEnabled.map {
+    QVariant_(it, Type.QString)
+  }.toList()
+
+  override fun initServerList(): QVariantList = _serverList.map {
+    QVariant_(it, QType.Network_Server)
+  }.toList()
+
+  override fun initIrcUsersAndChannels(): QVariantMap {
+    return mapOf(
+      "Users" to QVariant_(_ircUsers.values.map { it.toVariantMap() }.transpose().map {
+        QVariant_(it, Type.QVariantList)
+      }, Type.QVariantMap),
+      "Channels" to QVariant_(_ircChannels.values.map { it.toVariantMap() }.transpose().map {
+        QVariant_(it, Type.QVariantList)
+      }, Type.QVariantMap)
+    )
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "networkName" to QVariant_(networkName(), Type.QString),
+    "currentServer" to QVariant_(currentServer(), Type.QString),
+    "myNick" to QVariant_(myNick(), Type.QString),
+    "latency" to QVariant_(latency(), Type.Int),
+    "codecForServer" to QVariant_(codecForServer().serializeString(StringSerializer.UTF8), Type.QByteArray),
+    "codecForEncoding" to QVariant_(codecForEncoding().serializeString(StringSerializer.UTF8), Type.QByteArray),
+    "codecForDecoding" to QVariant_(codecForDecoding().serializeString(StringSerializer.UTF8), Type.QByteArray),
+    "identityId" to QVariant_(identity(), QType.IdentityId),
+    "isConnected" to QVariant_(isConnected(), Type.Bool),
+    "connectionState" to QVariant_(connectionState(), Type.Int),
+    "useRandomServer" to QVariant_(useRandomServer(), Type.Bool),
+    "perform" to QVariant_(perform(), Type.QStringList),
+    "useAutoIdentify" to QVariant_(useAutoIdentify(), Type.Bool),
+    "autoIdentifyService" to QVariant_(autoIdentifyService(), Type.QString),
+    "autoIdentifyPassword" to QVariant_(autoIdentifyPassword(), Type.QString),
+    "useSasl" to QVariant_(useSasl(), Type.Bool),
+    "saslAccount" to QVariant_(saslAccount(), Type.QString),
+    "saslPassword" to QVariant_(saslPassword(), Type.QString),
+    "useAutoReconnect" to QVariant_(useAutoReconnect(), Type.Bool),
+    "autoReconnectInterval" to QVariant_(autoReconnectInterval(), Type.UInt),
+    "autoReconnectRetries" to QVariant_(autoReconnectRetries(), Type.UShort),
+    "unlimitedReconnectRetries" to QVariant_(unlimitedReconnectRetries(), Type.Bool),
+    "rejoinChannels" to QVariant_(rejoinChannels(), Type.Bool),
+    "useCustomMessageRate" to QVariant_(useCustomMessageRate(), Type.Bool),
+    "msgRateBurstSize" to QVariant_(messageRateBurstSize(), Type.UInt),
+    "msgRateMessageDelay" to QVariant_(messageRateDelay(), Type.UInt),
+    "unlimitedMessageRate" to QVariant_(unlimitedMessageRate(), Type.Bool)
+  )
+
+  override fun initSetSupports(supports: QVariantMap) {
+    supports.entries.map { (key, value) -> key to value.value("") }.toMap(_supports)
+  }
+
+  override fun initSetCaps(caps: QVariantMap) {
+    caps.entries.map { (key, value) -> key to value.value("") }.toMap(_supports)
+  }
+
+  override fun initSetCapsEnabled(capsEnabled: QVariantList) {
+    capsEnabled.mapNotNull { it.value<String?>() }.toCollection(_capsEnabled)
+  }
+
+  override fun initSetServerList(serverList: QVariantList) {
+    _serverList = serverList.mapNotNull { it.value<QVariantMap?>() }.map(
+      Server.Companion::fromVariantMap).toMutableList()
+  }
+
+  override fun initSetIrcUsersAndChannels(usersAndChannels: QVariantMap) {
+    if (initialized)
+      throw IllegalArgumentException("Received init data for network ${networkId()} after init")
+    usersAndChannels["Users"]
+      ?.valueOr<Map<String, QVariant_>>(::emptyMap)
+      ?.entries?.map { (key, value) -> key to value.valueOr<List<QVariant_>>(::emptyList) }?.toMap()
+      ?.transpose()
+      ?.forEach {
+        newIrcUser(it["nick"].value(""), it)
+      }
+    usersAndChannels["Channels"]
+      ?.valueOr<Map<String, QVariant_>>(::emptyMap)
+      ?.entries?.map { (key, value) -> key to value.valueOr<List<QVariant_>>(::emptyList) }?.toMap()
+      ?.transpose()
+      ?.forEach {
+        newIrcChannel(it["name"].value(""), it)
+      }
+  }
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setNetworkName(properties["networkName"].value(networkName()))
+    setCurrentServer(properties["currentServer"].value(currentServer()))
+    setMyNick(properties["myNick"].value(myNick()))
+    setLatency(properties["latency"].value(latency()))
+    setCodecForServer(properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8)))
+    setCodecForEncoding(properties["codecForEncoding"].value(codecForEncoding().serializeString(StringSerializer.UTF8)))
+    setCodecForDecoding(properties["codecForDecoding"].value(codecForDecoding().serializeString(StringSerializer.UTF8)))
+    setIdentity(properties["identityId"].value(identity()))
+    setConnected(properties["isConnected"].value(isConnected()))
+    setConnectionState(properties["connectionState"].value(connectionState().value))
+    setUseRandomServer(properties["useRandomServer"].value(useRandomServer()))
+    setPerform(properties["perform"].value(perform()))
+    setUseAutoIdentify(properties["useAutoIdentify"].value(useAutoIdentify()))
+    setAutoIdentifyService(properties["autoIdentifyService"].value(autoIdentifyService()))
+    setAutoIdentifyPassword(properties["autoIdentifyPassword"].value(autoIdentifyPassword()))
+    setUseSasl(properties["useSasl"].value(useSasl()))
+    setSaslAccount(properties["saslAccount"].value(saslAccount()))
+    setSaslPassword(properties["saslPassword"].value(saslPassword()))
+    setUseAutoReconnect(properties["useAutoReconnect"].value(useAutoReconnect()))
+    setAutoReconnectInterval(properties["autoReconnectInterval"].value(autoReconnectInterval()))
+    setAutoReconnectRetries(properties["autoReconnectRetries"].value(autoReconnectRetries()))
+    setUnlimitedReconnectRetries(
+      properties["unlimitedReconnectRetries"].value(unlimitedReconnectRetries()))
+    setRejoinChannels(properties["rejoinChannels"].value(rejoinChannels()))
+    setUseCustomMessageRate(properties["useCustomMessageRate"].value(useCustomMessageRate()))
+    setMessageRateBurstSize(properties["msgRateBurstSize"].value(messageRateBurstSize()))
+    setMessageRateDelay(properties["msgRateMessageDelay"].value(messageRateDelay()))
+    setUnlimitedMessageRate(properties["unlimitedMessageRate"].value(unlimitedMessageRate()))
+  }
+
+  fun updateNickFromMask(mask: String): IrcUser {
+    val nick = nickFromMask(mask).toLowerCase(Locale.ENGLISH)
+    val user = _ircUsers[nick]
+    return if (user != null) {
+      user.updateHostmask(mask)
+      user
+    } else {
+      newIrcUser(mask)
+    }
+  }
+
+  override fun ircUserNickChanged(newnick: String) {
+    throw RuntimeException("Look at this: $newnick")
+  }
+
+  override fun emitConnectionError(error: String) {
+  }
+
+  fun removeChansAndUsers() {
+    _ircUsers.clear()
+    _ircChannels.clear()
+  }
+
+  fun removeIrcUser(user: IrcUser) {
+    _ircUsers.remove(user.nick())
+  }
+
+  fun removeIrcChannel(channel: IrcChannel) {
+    _ircChannels.remove(channel.name())
+  }
+
+  private var _networkId: NetworkId = networkId
+  private var _identity: IdentityId = -1
+  private var _myNick: String = ""
+  private var _latency: Int = 0
+  private var _networkName: String = "<not initialized>"
+  private var _currentServer: String = ""
+  private var _connected: Boolean = false
+  private var _connectionState: ConnectionState = ConnectionState.Disconnected
+  private var _prefixes: Set<Char>? = null
+  private var _prefixModes: Set<Char>? = null
+  private var _channelModes: Map<ChannelModeType, Set<Char>>? = null
+  // stores all known nicks for the server
+  private var _ircUsers: MutableMap<String, IrcUser> = mutableMapOf()
+  // stores all known channels
+  private var _ircChannels: MutableMap<String, IrcChannel> = mutableMapOf()
+  // stores results from RPL_ISUPPORT
+  private var _supports: MutableMap<String, String> = mutableMapOf()
+  /**
+   * Capabilities supported by the IRC server
+   * By synchronizing the supported capabilities, the client could suggest certain behaviors, e.g.
+   * in the Network settings dialog, recommending SASL instead of using NickServ, or warning if
+   * SASL EXTERNAL isn't available.
+   */
+  private var _caps: MutableMap<String, String> = mutableMapOf()
+  /**
+   * Enabled capabilities that received 'CAP ACK'
+   * _capsEnabled uses the same values from the <name>=<value> pairs stored in _caps
+   */
+  private var _capsEnabled: MutableSet<String> = mutableSetOf()
+  private var _serverList: List<Server> = mutableListOf()
+  private var _useRandomServer: Boolean = false
+  private var _perform: List<String> = mutableListOf()
+  private var _useAutoIdentify: Boolean = false
+  private var _autoIdentifyService: String = ""
+  private var _autoIdentifyPassword: String = ""
+  private var _useSasl: Boolean = false
+  private var _saslAccount: String = ""
+  private var _saslPassword: String = ""
+  private var _useAutoReconnect: Boolean = false
+  private var _autoReconnectInterval: UInt = 60
+  private var _autoReconnectRetries: UShort = 10
+  private var _unlimitedReconnectRetries = false
+  private var _rejoinChannels = false
+  // Custom rate limiting
+  /** If true, use custom rate limits, otherwise use defaults */
+  private var _useCustomMessageRate: Boolean = false
+  /** Maximum number of messages to send without any delays */
+  private var _messageRateBurstSize: UInt = 5
+  /** Delay in ms. for messages when max. burst messages sent */
+  private var _messageRateDelay: UInt = 2200
+  /** If true, disable rate limiting, otherwise apply limits */
+  private var _unlimitedMessageRate: Boolean = false
+  private var _codecForServer: Charset = Charsets.UTF_8
+  private var _codecForEncoding: Charset = Charsets.UTF_8
+  private var _codecForDecoding: Charset = Charsets.UTF_8
+  /** when this is active handle305 and handle306 don't trigger any output */
+  private var _autoAwayActive: Boolean = false
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/NetworkConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/NetworkConfig.kt
new file mode 100644
index 000000000..bf719e5ec
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/NetworkConfig.kt
@@ -0,0 +1,102 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.protocol.value
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.INetworkConfig
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+class NetworkConfig constructor(
+  proxy: SignalProxy
+) : SyncableObject(proxy, "NetworkConfig"), INetworkConfig {
+  override fun init() {
+    renameObject("GlobalNetworkConfig")
+  }
+
+  override fun toVariantMap() = initProperties()
+
+  override fun fromVariantMap(properties: QVariantMap) {
+    initSetProperties(properties)
+  }
+
+  override fun initProperties(): QVariantMap = mapOf(
+    "pingTimeoutEnabled" to QVariant_(pingTimeoutEnabled(), Type.Bool),
+    "pingInterval" to QVariant_(pingInterval(), Type.Int),
+    "maxPingCount" to QVariant_(maxPingCount(), Type.Int),
+    "autoWhoEnabled" to QVariant_(autoWhoEnabled(), Type.Bool),
+    "autoWhoInterval" to QVariant_(autoWhoInterval(), Type.Int),
+    "autoWhoNickLimit" to QVariant_(autoWhoNickLimit(), Type.Int),
+    "autoWhoDelay" to QVariant_(autoWhoDelay(), Type.Int),
+    "standardCtcp" to QVariant_(standardCtcp(), Type.Bool)
+  )
+
+  override fun initSetProperties(properties: QVariantMap) {
+    setPingTimeoutEnabled(properties["pingTimeoutEnabled"].value(pingTimeoutEnabled()))
+    setPingInterval(properties["pingInterval"].value(pingInterval()))
+    setMaxPingCount(properties["maxPingCount"].value(maxPingCount()))
+    setAutoWhoEnabled(properties["autoWhoEnabled"].value(autoWhoEnabled()))
+    setAutoWhoInterval(properties["autoWhoInterval"].value(autoWhoInterval()))
+    setAutoWhoNickLimit(properties["autoWhoNickLimit"].value(autoWhoNickLimit()))
+    setAutoWhoDelay(properties["autoWhoDelay"].value(autoWhoDelay()))
+    setStandardCtcp(properties["standardCtcp"].value(standardCtcp()))
+  }
+
+  fun pingTimeoutEnabled() = _pingTimeoutEnabled
+  fun pingInterval() = _pingInterval
+  fun maxPingCount() = _maxPingCount
+  fun autoWhoEnabled() = _autoWhoEnabled
+  fun autoWhoInterval() = _autoWhoInterval
+  fun autoWhoNickLimit() = _autoWhoNickLimit
+  fun autoWhoDelay() = _autoWhoDelay
+  fun standardCtcp() = _standardCtcp
+
+  override fun setPingTimeoutEnabled(enabled: Boolean) {
+    _pingTimeoutEnabled = enabled
+    super.setPingTimeoutEnabled(enabled)
+  }
+
+  override fun setPingInterval(interval: Int) {
+    _pingInterval = interval
+    super.setPingInterval(interval)
+  }
+
+  override fun setMaxPingCount(count: Int) {
+    _maxPingCount = count
+    super.setMaxPingCount(count)
+  }
+
+  override fun setAutoWhoEnabled(enabled: Boolean) {
+    _autoWhoEnabled = enabled
+    super.setAutoWhoEnabled(enabled)
+  }
+
+  override fun setAutoWhoInterval(interval: Int) {
+    _autoWhoInterval = interval
+    super.setAutoWhoInterval(interval)
+  }
+
+  override fun setAutoWhoNickLimit(limit: Int) {
+    _autoWhoNickLimit = limit
+    super.setAutoWhoNickLimit(limit)
+  }
+
+  override fun setAutoWhoDelay(delay: Int) {
+    _autoWhoDelay = delay
+    super.setAutoWhoDelay(delay)
+  }
+
+  override fun setStandardCtcp(standardCtcp: Boolean) {
+    _standardCtcp = standardCtcp
+    super.setStandardCtcp(standardCtcp)
+  }
+
+  private var _pingTimeoutEnabled: Boolean = true
+  private var _pingInterval: Int = 30
+  private var _maxPingCount: Int = 6
+  private var _autoWhoEnabled: Boolean = true
+  private var _autoWhoInterval: Int = 90
+  private var _autoWhoNickLimit: Int = 200
+  private var _autoWhoDelay: Int = 5
+  private var _standardCtcp: Boolean = false
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/RpcHandler.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/RpcHandler.kt
new file mode 100644
index 000000000..c1a63717b
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/RpcHandler.kt
@@ -0,0 +1,68 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import android.net.NetworkInfo
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.StringSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.deserializeString
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.IRpcHandler
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import java.nio.ByteBuffer
+
+class RpcHandler(override val proxy: SignalProxy) : IRpcHandler {
+  override fun displayStatusMsg(net: String, msg: String) {
+  }
+
+  override fun bufferInfoUpdated(bufferInfo: BufferInfo) {
+  }
+
+  override fun identityCreated(identity: QVariantMap) {
+  }
+
+  override fun identityRemoved(identityId: IdentityId) {
+  }
+
+  override fun networkCreated(networkId: NetworkId) {
+  }
+
+  override fun networkRemoved(networkId: NetworkId) {
+  }
+
+  override fun passwordChanged(ignored: Long, success: Boolean) {
+  }
+
+  override fun disconnectFromCore() {
+  }
+
+  override fun objectRenamed(classname: ByteBuffer, newname: String, oldname: String) {
+    proxy.renameObject(classname.deserializeString(StringSerializer.UTF8) ?: "", newname, oldname)
+  }
+
+  override fun displayMsg(message: QuasselDatabase.RawMessage) {
+    println(message)
+  }
+
+  override fun requestCreateIdentity(identity: QVariantMap, additional: QVariantMap) {
+  }
+
+  override fun requestRemoveIdentity(identityId: IdentityId) {
+  }
+
+  override fun requestCreateNetwork(networkInfo: NetworkInfo, channels: List<String>) {
+  }
+
+  override fun requestRemoveNetwork(networkId: NetworkId) {
+  }
+
+  override fun requestPasswordChange(peerPtr: Long, user: String, old: String, new: String) {
+  }
+
+  override fun requestKickClient(id: Int) {
+    RPC("2requestKickClient(Int)", ARG(id, Type.Int))
+  }
+
+  override fun sendInput(bufferInfo: BufferInfo, message: String) {
+    RPC("2sendInput(BufferInfo,QString)", ARG(bufferInfo, QType.BufferInfo), ARG(message, Type.QString))
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/SyncableObject.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/SyncableObject.kt
new file mode 100644
index 000000000..5f31fa821
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/SyncableObject.kt
@@ -0,0 +1,39 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables
+
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ISyncableObject
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+
+abstract class SyncableObject(
+  protected val proxy: SignalProxy,
+  final override val className: String
+) : ISyncableObject {
+  final override var objectName: String = ""
+    private set
+  override var identifier: String = "$className:"
+  override var initialized: Boolean = false
+
+  override fun SYNC(function: String, vararg arg: QVariant_) {
+    if (initialized)
+      proxy.callSync(className, objectName, function, arg.toList())
+  }
+
+  override fun REQUEST(function: String, vararg arg: QVariant_) {
+    if (initialized)
+      proxy.callSync(className, objectName, function, arg.toList())
+  }
+
+  protected fun renameObject(newName: String) {
+    val oldName = objectName
+    if (!initialized) {
+      objectName = newName
+      identifier = "$className:$objectName"
+    } else if (oldName != newName) {
+      objectName = newName
+      identifier = "$className:$objectName"
+      proxy.renameObject(this, newName, oldName)
+    }
+  }
+
+  override fun toString() = identifier
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IAliasManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IAliasManager.kt
new file mode 100644
index 000000000..dd716ec95
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IAliasManager.kt
@@ -0,0 +1,34 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+
+@Syncable(name = "AliasManager")
+interface IAliasManager : ISyncableObject {
+  fun initAliases(): QVariantMap
+  fun initSetAliases(aliases: QVariantMap)
+  @Slot
+  fun addAlias(name: String, expansion: String) {
+    SYNC(SLOT, ARG(name, Type.QString), ARG(expansion, Type.QString))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+
+  data class Alias(
+    val name: String,
+    val expansion: String
+  )
+
+  data class Command(
+    val buffer: BufferInfo,
+    val message: String
+  )
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBacklogManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBacklogManager.kt
new file mode 100644
index 000000000..5f5b80276
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBacklogManager.kt
@@ -0,0 +1,36 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "BacklogManager")
+interface IBacklogManager : ISyncableObject {
+  @Slot
+  fun requestBacklog(bufferId: BufferId, first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
+                     additional: Int = 0) {
+    REQUEST(SLOT, ARG(bufferId, QType.BufferId), ARG(first, QType.MsgId),
+            ARG(last, QType.MsgId), ARG(limit, Type.Int), ARG(additional, Type.Int))
+  }
+
+  @Slot
+  fun requestBacklogAll(first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
+                        additional: Int = 0) {
+    REQUEST(SLOT, ARG(first, QType.MsgId), ARG(last, QType.MsgId),
+            ARG(limit, Type.Int), ARG(additional, Type.Int))
+  }
+
+  @Slot
+  fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int, additional: Int,
+                     messages: QVariantList)
+
+  @Slot
+  fun receiveBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int,
+                        messages: QVariantList)
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferSyncer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferSyncer.kt
new file mode 100644
index 000000000..6eb035281
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferSyncer.kt
@@ -0,0 +1,85 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "BufferSyncer")
+interface IBufferSyncer : ISyncableObject {
+  fun initActivities(): QVariantList
+  fun initLastSeenMsg(): QVariantList
+  fun initMarkerLines(): QVariantList
+  fun initSetActivities(data: QVariantList)
+  fun initSetLastSeenMsg(data: QVariantList)
+  fun initSetMarkerLines(data: QVariantList)
+
+  @Slot
+  fun markBufferAsRead(buffer: BufferId) {
+    SYNC(SLOT, ARG(buffer, QType.BufferId))
+  }
+
+  @Slot
+  fun mergeBuffersPermanently(buffer1: BufferId, buffer2: BufferId)
+
+  @Slot
+  fun removeBuffer(buffer: BufferId)
+
+  @Slot
+  fun renameBuffer(buffer: BufferId, newName: String)
+
+  @Slot
+  fun requestMarkBufferAsRead(buffer: BufferId) {
+    REQUEST(SLOT, ARG(buffer, QType.BufferId))
+  }
+
+  @Slot
+  fun requestMergeBuffersPermanently(buffer1: BufferId, buffer2: BufferId) {
+    REQUEST(SLOT, ARG(buffer1, QType.BufferId), ARG(buffer2, QType.BufferId))
+  }
+
+  @Slot
+  fun requestPurgeBufferIds() {
+    REQUEST(SLOT)
+  }
+
+  @Slot
+  fun requestRemoveBuffer(buffer: BufferId) {
+    REQUEST(SLOT, ARG(buffer, QType.BufferId))
+  }
+
+  @Slot
+  fun requestRenameBuffer(buffer: BufferId, newName: String) {
+    REQUEST(SLOT, ARG(buffer, QType.BufferId), ARG(newName, Type.QString))
+  }
+
+  @Slot
+  fun requestSetLastSeenMsg(buffer: BufferId, msgId: MsgId) {
+    REQUEST(SLOT, ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId))
+  }
+
+  @Slot
+  fun requestSetMarkerLine(buffer: BufferId, msgId: MsgId) {
+    REQUEST(SLOT, ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId))
+  }
+
+  @Slot
+  fun setBufferActivity(buffer: BufferId, activity: Int) {
+    SYNC(SLOT, ARG(buffer, QType.BufferId), ARG(activity, Type.Int))
+  }
+
+  @Slot
+  fun setLastSeenMsg(buffer: BufferId, msgId: MsgId) {
+    SYNC(SLOT, ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId))
+  }
+
+  @Slot
+  fun setMarkerLine(buffer: BufferId, msgId: MsgId) {
+    SYNC(SLOT, ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewConfig.kt
new file mode 100644
index 000000000..aad8d651c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewConfig.kt
@@ -0,0 +1,111 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "BufferViewConfig")
+interface IBufferViewConfig : ISyncableObject {
+  fun initBufferList(): QVariantList
+  fun initRemovedBuffers(): QVariantList
+  fun initTemporarilyRemovedBuffers(): QVariantList
+  fun initSetBufferList(buffers: QVariantList)
+  fun initSetRemovedBuffers(buffers: QVariantList)
+  fun initSetTemporarilyRemovedBuffers(buffers: QVariantList)
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun addBuffer(bufferId: BufferId, pos: Int)
+
+  @Slot
+  fun moveBuffer(bufferId: BufferId, pos: Int)
+
+  @Slot
+  fun removeBuffer(bufferId: BufferId)
+
+  @Slot
+  fun removeBufferPermanently(bufferId: BufferId)
+
+  @Slot
+  fun requestAddBuffer(bufferId: BufferId, pos: Int) {
+    REQUEST(SLOT, ARG(bufferId, QType.BufferId), ARG(pos, Type.Int))
+  }
+
+  @Slot
+  fun requestMoveBuffer(bufferId: BufferId, pos: Int) {
+    REQUEST(SLOT, ARG(bufferId, QType.BufferId), ARG(pos, Type.Int))
+  }
+
+  @Slot
+  fun requestRemoveBuffer(bufferId: BufferId) {
+    REQUEST(SLOT, ARG(bufferId, QType.BufferId))
+  }
+
+  @Slot
+  fun requestRemoveBufferPermanently(bufferId: BufferId) {
+    REQUEST(SLOT, ARG(bufferId, QType.BufferId))
+  }
+
+  @Slot
+  fun requestSetBufferViewName(bufferViewName: String) {
+    REQUEST(SLOT, ARG(bufferViewName, Type.QString))
+  }
+
+  @Slot
+  fun setAddNewBuffersAutomatically(addNewBuffersAutomatically: Boolean) {
+    SYNC(SLOT, ARG(addNewBuffersAutomatically, Type.Bool))
+  }
+
+  @Slot
+  fun setAllowedBufferTypes(bufferTypes: Int) {
+    SYNC(SLOT, ARG(bufferTypes, Type.Int))
+  }
+
+  @Slot
+  fun setBufferViewName(bufferViewName: String) {
+    SYNC(SLOT, ARG(bufferViewName, Type.QString))
+  }
+
+  @Slot
+  fun setDisableDecoration(disableDecoration: Boolean) {
+    SYNC(SLOT, ARG(disableDecoration, Type.Bool))
+  }
+
+  @Slot
+  fun setHideInactiveBuffers(hideInactiveBuffers: Boolean) {
+    SYNC(SLOT, ARG(hideInactiveBuffers, Type.Bool))
+  }
+
+  @Slot
+  fun setHideInactiveNetworks(hideInactiveNetworks: Boolean) {
+    SYNC(SLOT, ARG(hideInactiveNetworks, Type.Bool))
+  }
+
+  @Slot
+  fun setMinimumActivity(activity: Int) {
+    SYNC(SLOT, ARG(activity, Type.Int))
+  }
+
+  @Slot
+  fun setNetworkId(networkId: NetworkId) {
+    SYNC(SLOT, ARG(networkId, QType.NetworkId))
+  }
+
+  @Slot
+  fun setShowSearch(showSearch: Boolean) {
+    SYNC(SLOT, ARG(showSearch, Type.Bool))
+  }
+
+  @Slot
+  fun setSortAlphabetically(sortAlphabetically: Boolean) {
+    SYNC(SLOT, ARG(sortAlphabetically, Type.Bool))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewManager.kt
new file mode 100644
index 000000000..d3070e86b
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IBufferViewManager.kt
@@ -0,0 +1,50 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.BufferViewConfig
+
+@Syncable(name = "BufferViewManager")
+interface IBufferViewManager : ISyncableObject {
+  fun initBufferViewIds(): QVariantList
+  fun initSetBufferViewIds(bufferViewIds: QVariantList)
+
+  fun addBufferViewConfig(config: BufferViewConfig)
+
+  @Slot
+  fun addBufferViewConfig(bufferViewConfigId: Int)
+
+  @Slot
+  fun deleteBufferViewConfig(bufferViewConfigId: Int)
+
+  @Slot
+  fun newBufferViewConfig(bufferViewConfigId: Int) {
+    addBufferViewConfig(bufferViewConfigId)
+  }
+
+  @Slot
+  fun requestCreateBufferView(properties: QVariantMap) {
+    REQUEST(SLOT, ARG(properties, Type.QVariantMap))
+  }
+
+  @Slot
+  fun requestCreateBufferViews(properties: QVariantList) {
+    REQUEST(SLOT, ARG(properties, Type.QVariantList))
+  }
+
+  @Slot
+  fun requestDeleteBufferView(bufferViewId: Int) {
+    REQUEST(SLOT, ARG(bufferViewId, Type.Int))
+  }
+
+  @Slot
+  fun requestDeleteBufferViews(bufferViews: QVariantList) {
+    REQUEST(SLOT, ARG(bufferViews, Type.QVariantList))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICertManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICertManager.kt
new file mode 100644
index 000000000..aeb559ec4
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICertManager.kt
@@ -0,0 +1,31 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+import java.nio.ByteBuffer
+
+@Syncable(name = "CertManager")
+interface ICertManager : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun setSslCert(encoded: ByteBuffer?) {
+    SYNC(SLOT, ARG(encoded, Type.QByteArray))
+  }
+
+  @Slot
+  fun setSslKey(encoded: ByteBuffer?) {
+    SYNC(SLOT, ARG(encoded, Type.QByteArray))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICoreInfo.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICoreInfo.kt
new file mode 100644
index 000000000..ed4b36d42
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ICoreInfo.kt
@@ -0,0 +1,25 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "CoreInfo")
+interface ICoreInfo : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun setCoreData(data: QVariantMap) {
+    SYNC(SLOT, ARG(data, Type.QVariantMap))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IDccConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IDccConfig.kt
new file mode 100644
index 000000000..d2b9ffda8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IDccConfig.kt
@@ -0,0 +1,80 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.UByte
+import de.kuschku.quasseldroid_ng.protocol.UShort
+import java.net.InetAddress
+
+@Syncable(name = "DccConfig")
+interface IDccConfig : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun setDccEnabled(enabled: Boolean)
+
+  @Slot
+  fun setOutgoingIp(outgoingIp: InetAddress)
+
+  @Slot
+  fun setIpDetectionMode(ipDetectionMode: IpDetectionMode)
+
+  @Slot
+  fun setPortSelectionMode(portSelectionMode: PortSelectionMode)
+
+  @Slot
+  fun setMinPort(port: UShort)
+
+  @Slot
+  fun setMaxPort(port: UShort)
+
+  @Slot
+  fun setChunkSize(chunkSize: Int)
+
+  @Slot
+  fun setSendTimeout(timeout: Int)
+
+  @Slot
+  fun setUsePassiveDcc(use: Boolean)
+
+  @Slot
+  fun setUseFastSend(use: Boolean)
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+
+  /**
+   * Mode for detecting the outgoing IP
+   */
+  enum class IpDetectionMode(val value: UByte) {
+    /** Automatic detection (network socket or USERHOST) */
+    Automatic(0x00),
+    /** Manually specified IP */
+    Manual(0x01);
+
+    companion object {
+      private val byId = IpDetectionMode.values().associateBy(IpDetectionMode::value)
+      fun of(value: UByte) = byId[value] ?: Automatic
+    }
+  }
+
+  /**
+   * Mode for selecting the port range for DCC
+   */
+  enum class PortSelectionMode(val value: UByte) {
+    /** Automatic port selection */
+    Automatic(0x00),
+    /** Manually specified port range */
+    Manual(0x01);
+
+    companion object {
+      private val byId = PortSelectionMode.values().associateBy(PortSelectionMode::value)
+      fun of(value: UByte) = byId[value] ?: Automatic
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIdentity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIdentity.kt
new file mode 100644
index 000000000..53f908d72
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIdentity.kt
@@ -0,0 +1,118 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "Identity")
+interface IIdentity : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun copyFrom(other: IIdentity) {
+    SYNC(SLOT, ARG(other, QType.Identity))
+  }
+
+  @Slot
+  fun setAutoAwayEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setAutoAwayReason(reason: String) {
+    SYNC(SLOT, ARG(reason, Type.QString))
+  }
+
+  @Slot
+  fun setAutoAwayReasonEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setAutoAwayTime(time: Int) {
+    SYNC(SLOT, ARG(time, Type.Int))
+  }
+
+  @Slot
+  fun setAwayNick(awayNick: String) {
+    SYNC(SLOT, ARG(awayNick, Type.QString))
+  }
+
+  @Slot
+  fun setAwayNickEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setAwayReason(awayReason: String) {
+    SYNC(SLOT, ARG(awayReason, Type.QString))
+  }
+
+  @Slot
+  fun setAwayReasonEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setDetachAwayEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setDetachAwayReason(reason: String) {
+    SYNC(SLOT, ARG(reason, Type.QString))
+  }
+
+  @Slot
+  fun setDetachAwayReasonEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setId(id: IdentityId) {
+    SYNC(SLOT, ARG(id, QType.IdentityId))
+  }
+
+  @Slot
+  fun setIdent(ident: String) {
+    SYNC(SLOT, ARG(ident, Type.QString))
+  }
+
+  @Slot
+  fun setIdentityName(name: String) {
+    SYNC(SLOT, ARG(name, Type.QString))
+  }
+
+  @Slot
+  fun setKickReason(reason: String) {
+    SYNC(SLOT, ARG(reason, Type.QString))
+  }
+
+  @Slot
+  fun setNicks(nicks: QStringList) {
+    SYNC(SLOT, ARG(nicks, Type.QStringList))
+  }
+
+  @Slot
+  fun setPartReason(reason: String) {
+    SYNC(SLOT, ARG(reason, Type.QString))
+  }
+
+  @Slot
+  fun setQuitReason(reason: String) {
+    SYNC(SLOT, ARG(reason, Type.QString))
+  }
+
+  @Slot
+  fun setRealName(realName: String) {
+    SYNC(SLOT, ARG(realName, Type.QString))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIgnoreListManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIgnoreListManager.kt
new file mode 100644
index 000000000..ce3debcf2
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIgnoreListManager.kt
@@ -0,0 +1,46 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "IgnoreListManager")
+interface IIgnoreListManager : ISyncableObject {
+  fun initIgnoreList(): QVariantMap
+  fun initSetIgnoreList(ignoreList: QVariantMap)
+  @Slot
+  fun addIgnoreListItem(type: Int, ignoreRule: String, isRegEx: Boolean, strictness: Int,
+                        scope: Int, scopeRule: String, isActive: Boolean)
+
+  @Slot
+  fun removeIgnoreListItem(ignoreRule: String)
+
+  @Slot
+  fun requestAddIgnoreListItem(type: Int, ignoreRule: String, isRegEx: Boolean, strictness: Int,
+                               scope: Int, scopeRule: String, isActive: Boolean) {
+    REQUEST(SLOT, ARG(type, Type.Int), ARG(ignoreRule, Type.QString), ARG(isRegEx, Type.Bool),
+            ARG(strictness, Type.Int), ARG(scope, Type.Int), ARG(scopeRule, Type.QString),
+            ARG(isActive, Type.Bool))
+  }
+
+  @Slot
+  fun requestRemoveIgnoreListItem(ignoreRule: String) {
+    REQUEST(SLOT, ARG(ignoreRule, Type.QString))
+  }
+
+  @Slot
+  fun requestToggleIgnoreRule(ignoreRule: String) {
+    REQUEST(SLOT, ARG(ignoreRule, Type.QString))
+  }
+
+  @Slot
+  fun toggleIgnoreRule(ignoreRule: String)
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcChannel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcChannel.kt
new file mode 100644
index 000000000..be399ae13
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcChannel.kt
@@ -0,0 +1,90 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.IrcUser
+
+@Syncable(name = "IrcChannel")
+interface IIrcChannel : ISyncableObject {
+  fun initChanModes(): QVariantMap
+  fun initUserModes(): QVariantMap
+  fun initSetChanModes(chanModes: QVariantMap)
+  fun initSetUserModes(usermodes: QVariantMap)
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun addChannelMode(mode: Char, value: String) {
+    SYNC(SLOT, ARG(mode, Type.QChar), ARG(value, Type.QString))
+  }
+
+  fun addUserMode(ircuser: IrcUser?, mode: String) {
+  }
+
+  @Slot
+  fun addUserMode(nick: String, mode: String) {
+    SYNC(SLOT, ARG(nick, Type.QString), ARG(mode, Type.QString))
+  }
+
+  @Slot
+  fun joinIrcUser(ircuser: IrcUser) {
+    SYNC(SLOT, ARG(ircuser.toVariantMap(), QType.IrcUser))
+  }
+
+  @Slot
+  fun joinIrcUsers(nicks: QStringList, modes: QStringList) {
+    SYNC(SLOT, ARG(nicks, Type.QStringList), ARG(modes, Type.QStringList))
+  }
+
+  fun part(ircuser: IrcUser?) {
+  }
+
+  @Slot
+  fun part(nick: String) {
+    SYNC(SLOT, ARG(nick, Type.QString))
+  }
+
+  @Slot
+  fun removeChannelMode(mode: Char, value: String) {
+    SYNC(SLOT, ARG(mode, Type.QChar), ARG(value, Type.QString))
+  }
+
+  fun removeUserMode(ircuser: IrcUser?, mode: String) {
+  }
+
+  @Slot
+  fun removeUserMode(nick: String, mode: String) {
+    SYNC(SLOT, ARG(nick, Type.QString), ARG(mode, Type.QString))
+  }
+
+  @Slot
+  fun setEncrypted(encrypted: Boolean) {
+    SYNC(SLOT, ARG(encrypted, Type.Bool))
+  }
+
+  @Slot
+  fun setPassword(password: String) {
+    SYNC(SLOT, ARG(password, Type.QString))
+  }
+
+  @Slot
+  fun setTopic(topic: String) {
+    SYNC(SLOT, ARG(topic, Type.QString))
+  }
+
+  fun setUserModes(ircuser: IrcUser?, modes: String) {
+    SYNC(SLOT, ARG(ircuser, QType.IrcUser), ARG(modes, Type.QString))
+  }
+
+  @Slot
+  fun setUserModes(nick: String, modes: String) {
+    SYNC(SLOT, ARG(nick, Type.QString), ARG(modes, Type.QString))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcListHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcListHelper.kt
new file mode 100644
index 000000000..19e96224a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcListHelper.kt
@@ -0,0 +1,33 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "IrcListHelper")
+interface IIrcListHelper : ISyncableObject {
+  @Slot
+  fun requestChannelList(netId: NetworkId, channelFilters: QStringList): QVariantList {
+    REQUEST(SLOT, ARG(netId, QType.NetworkId), ARG(channelFilters, Type.QStringList))
+    return emptyList()
+  }
+
+  @Slot
+  fun receiveChannelList(netId: NetworkId, channelFilters: QStringList, data: QVariantList)
+
+  @Slot
+  fun reportError(error: String) {
+    SYNC(SLOT, ARG(error, Type.QString))
+  }
+
+  @Slot
+  fun reportFinishedList(netId: NetworkId) {
+    SYNC(SLOT, ARG(netId, QType.NetworkId))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcUser.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcUser.kt
new file mode 100644
index 000000000..894a7c2e3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IIrcUser.kt
@@ -0,0 +1,138 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.syncables.IrcChannel
+import org.threeten.bp.Instant
+
+@Syncable(name = "IrcUser")
+interface IIrcUser : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun addUserModes(modes: String) {
+    SYNC(SLOT, ARG(modes, Type.QString))
+  }
+
+  fun joinChannel(channel: IrcChannel, skip_channel_join: Boolean = false) {
+  }
+
+  @Slot
+  fun joinChannel(channelname: String) {
+    SYNC(SLOT, ARG(channelname, Type.QString))
+  }
+
+  fun partChannel(channel: IrcChannel) {
+  }
+
+  @Slot
+  fun partChannel(channelname: String) {
+    SYNC(SLOT, ARG(channelname, Type.QString))
+  }
+
+  @Slot
+  fun quit() {
+    SYNC(SLOT)
+  }
+
+  @Slot
+  fun removeUserModes(modes: String) {
+    SYNC(SLOT, ARG(modes, Type.QString))
+  }
+
+  @Slot
+  fun setAccount(account: String) {
+    SYNC(SLOT, ARG(account, Type.QString))
+  }
+
+  @Slot
+  fun setAway(away: Boolean) {
+    SYNC(SLOT, ARG(away, Type.Bool))
+  }
+
+  @Slot
+  fun setAwayMessage(awayMessage: String) {
+    SYNC(SLOT, ARG(awayMessage, Type.QString))
+  }
+
+  @Slot
+  fun setEncrypted(encrypted: Boolean) {
+    SYNC(SLOT, ARG(encrypted, Type.Bool))
+  }
+
+  @Slot
+  fun setHost(host: String) {
+    SYNC(SLOT, ARG(host, Type.QString))
+  }
+
+  @Slot
+  fun setIdleTime(idleTime: Instant) {
+    SYNC(SLOT, ARG(idleTime, Type.QDateTime))
+  }
+
+  @Slot
+  fun setIrcOperator(ircOperator: String) {
+    SYNC(SLOT, ARG(ircOperator, Type.QString))
+  }
+
+  @Slot
+  fun setLastAwayMessage(lastAwayMessage: Int) {
+    SYNC(SLOT, ARG(lastAwayMessage, Type.Int))
+  }
+
+  @Slot
+  fun setLoginTime(loginTime: Instant) {
+    SYNC(SLOT, ARG(loginTime, Type.QDateTime))
+  }
+
+  @Slot
+  fun setNick(nick: String) {
+    SYNC(SLOT, ARG(nick, Type.QString))
+  }
+
+  @Slot
+  fun setRealName(realName: String) {
+    SYNC(SLOT, ARG(realName, Type.QString))
+  }
+
+  @Slot
+  fun setServer(server: String) {
+    SYNC(SLOT, ARG(server, Type.QString))
+  }
+
+  @Slot
+  fun setSuserHost(suserHost: String) {
+    SYNC(SLOT, ARG(suserHost, Type.QString))
+  }
+
+  @Slot
+  fun setUser(user: String) {
+    SYNC(SLOT, ARG(user, Type.QString))
+  }
+
+  @Slot
+  fun setUserModes(modes: String) {
+    SYNC(SLOT, ARG(modes, Type.QString))
+  }
+
+  @Slot
+  fun setWhoisServiceReply(whoisServiceReply: String) {
+    SYNC(SLOT, ARG(whoisServiceReply, Type.QString))
+  }
+
+  @Slot
+  fun updateHostmask(mask: String) {
+    SYNC(SLOT, ARG(mask, Type.QString))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetwork.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetwork.kt
new file mode 100644
index 000000000..35901ff72
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetwork.kt
@@ -0,0 +1,485 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.util.Flag
+import de.kuschku.quasseldroid_ng.util.Flags
+import java.nio.ByteBuffer
+
+@Syncable(name = "Network")
+interface INetwork : ISyncableObject {
+  fun initCapsEnabled(): QVariantList
+  fun initServerList(): QVariantList
+  fun initCaps(): QVariantMap
+  fun initIrcUsersAndChannels(): QVariantMap
+  fun initSupports(): QVariantMap
+  fun initSetCaps(caps: QVariantMap)
+  fun initSetCapsEnabled(capsEnabled: QVariantList)
+  fun initSetIrcUsersAndChannels(usersAndChannels: QVariantMap)
+  fun initSetServerList(serverList: QVariantList)
+  fun initSetSupports(supports: QVariantMap)
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun acknowledgeCap(capability: String) {
+    SYNC(SLOT, ARG(capability, Type.QString))
+  }
+
+  @Slot
+  fun addCap(capability: String, value: String = "") {
+    SYNC(SLOT, ARG(capability, Type.QString), ARG(value, Type.QString))
+  }
+
+  @Slot
+  fun addIrcChannel(channel: String) {
+    SYNC(SLOT, ARG(channel, Type.QString))
+  }
+
+  @Slot
+  fun addIrcUser(hostmask: String) {
+    SYNC(SLOT, ARG(hostmask, Type.QString))
+  }
+
+  @Slot
+  fun addSupport(param: String, value: String = String()) {
+    SYNC(SLOT, ARG(param, Type.QString), ARG(value, Type.QString))
+  }
+
+  @Slot
+  fun clearCaps() {
+    SYNC(SLOT)
+  }
+
+  @Slot
+  fun emitConnectionError(error: String) {
+    SYNC(SLOT, ARG(error, Type.QString))
+  }
+
+  @Slot
+  fun ircUserNickChanged(newnick: String)
+
+  @Slot
+  fun removeCap(capability: String) {
+    SYNC(SLOT, ARG(capability, Type.QString))
+  }
+
+  @Slot
+  fun removeSupport(param: String) {
+    SYNC(SLOT, ARG(param, Type.QString))
+  }
+
+  @Slot
+  fun requestConnect() {
+    REQUEST(SLOT)
+  }
+
+  @Slot
+  fun requestDisconnect() {
+    REQUEST(SLOT)
+  }
+
+  @Slot
+  fun requestSetNetworkInfo(info: NetworkInfo) {
+    REQUEST(SLOT, ARG(info, QType.NetworkInfo))
+  }
+
+  @Slot
+  fun setAutoIdentifyPassword(password: String) {
+    SYNC(SLOT, ARG(password, Type.QString))
+  }
+
+  @Slot
+  fun setAutoIdentifyService(service: String) {
+    SYNC(SLOT, ARG(service, Type.QString))
+  }
+
+  @Slot
+  fun setAutoReconnectInterval(interval: UInt) {
+    SYNC(SLOT, ARG(interval, Type.UInt))
+  }
+
+  @Slot
+  fun setAutoReconnectRetries(retries: UShort) {
+    SYNC(SLOT, ARG(retries, Type.UShort))
+  }
+
+  @Slot
+  fun setCodecForDecoding(codecName: ByteBuffer?) {
+    SYNC(SLOT, ARG(codecName, Type.QByteArray))
+  }
+
+  @Slot
+  fun setCodecForEncoding(codecName: ByteBuffer?) {
+    SYNC(SLOT, ARG(codecName, Type.QByteArray))
+  }
+
+  @Slot
+  fun setCodecForServer(codecName: ByteBuffer?) {
+    SYNC(SLOT, ARG(codecName, Type.QByteArray))
+  }
+
+  @Slot
+  fun setConnected(isConnected: Boolean) {
+    SYNC(SLOT, ARG(isConnected, Type.Bool))
+  }
+
+  @Slot
+  fun setConnectionState(state: Int) {
+    SYNC(SLOT, ARG(state, Type.Int))
+  }
+
+  @Slot
+  fun setCurrentServer(currentServer: String) {
+    SYNC(SLOT, ARG(currentServer, Type.QString))
+  }
+
+  @Slot
+  fun setIdentity(identity: IdentityId) {
+    SYNC(SLOT, ARG(identity, QType.IdentityId))
+  }
+
+  @Slot
+  fun setLatency(latency: Int) {
+    SYNC(SLOT, ARG(latency, Type.Int))
+  }
+
+  @Slot
+  fun setMessageRateBurstSize(burstSize: UInt) {
+    SYNC(SLOT, ARG(burstSize, Type.UInt))
+  }
+
+  @Slot
+  fun setMessageRateDelay(messageDelay: UInt) {
+    SYNC(SLOT, ARG(messageDelay, Type.UInt))
+  }
+
+  @Slot
+  fun setMyNick(mynick: String) {
+    SYNC(SLOT, ARG(mynick, Type.QString))
+  }
+
+  @Slot
+  fun setNetworkName(networkName: String) {
+    SYNC(SLOT, ARG(networkName, Type.QString))
+  }
+
+  @Slot
+  fun setPerform(perform: QStringList) {
+    SYNC(SLOT, ARG(perform, Type.QStringList))
+  }
+
+  @Slot
+  fun setRejoinChannels(rejoinChannels: Boolean) {
+    SYNC(SLOT, ARG(rejoinChannels, Type.Bool))
+  }
+
+  @Slot
+  fun setSaslAccount(account: String) {
+    SYNC(SLOT, ARG(account, Type.QString))
+  }
+
+  @Slot
+  fun setSaslPassword(password: String) {
+    SYNC(SLOT, ARG(password, Type.QString))
+  }
+
+  @Slot
+  fun setServerList(serverList: QVariantList) {
+    SYNC(SLOT, ARG(serverList, Type.QVariantList))
+  }
+
+  @Slot
+  fun setUnlimitedMessageRate(unlimitedRate: Boolean) {
+    SYNC(SLOT, ARG(unlimitedRate, Type.Bool))
+  }
+
+  @Slot
+  fun setUnlimitedReconnectRetries(unlimitedRetries: Boolean) {
+    SYNC(SLOT, ARG(unlimitedRetries, Type.Bool))
+  }
+
+  @Slot
+  fun setUseAutoIdentify(autoIdentify: Boolean) {
+    SYNC(SLOT, ARG(autoIdentify, Type.Bool))
+  }
+
+  @Slot
+  fun setUseAutoReconnect(autoReconnect: Boolean) {
+    SYNC(SLOT, ARG(autoReconnect, Type.Bool))
+  }
+
+  @Slot
+  fun setUseCustomMessageRate(useCustomRate: Boolean) {
+    SYNC(SLOT, ARG(useCustomRate, Type.Bool))
+  }
+
+  @Slot
+  fun setUseRandomServer(randomServer: Boolean) {
+    SYNC(SLOT, ARG(randomServer, Type.Bool))
+  }
+
+  @Slot
+  fun setUseSasl(sasl: Boolean) {
+    SYNC(SLOT, ARG(sasl, Type.Bool))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+
+  enum class ConnectionState(val value: Int) {
+    Disconnected(0),
+    Connecting(1),
+    Initializing(2),
+    Initialized(3),
+    Reconnecting(4),
+    Disconnecting(5);
+
+    companion object {
+      private val byId = enumValues<ConnectionState>().associateBy(
+        ConnectionState::value)
+
+      fun of(value: Int) = byId[value] ?: Disconnected
+    }
+  }
+
+  /**
+   * {@see http://www.irc.org/tech_docs/005.html}
+   * {@see http://www.irc.org/tech_docs/draft-brocklesby-irc-isupport-03.txt}
+   */
+  enum class ChannelModeType(override val bit: Int) : Flag<ChannelModeType> {
+    NOT_A_CHANMODE(0x00),
+    A_CHANMODE(0x01),
+    B_CHANMODE(0x02),
+    C_CHANMODE(0x04),
+    D_CHANMODE(0x08);
+
+    companion object : Flags.Factory<ChannelModeType> {
+      override val NONE = ChannelModeType.of()
+      val validValues = values().filter { it.bit != 0 }.toTypedArray()
+      override fun of(bit: Int) = Flags.of<ChannelModeType>(bit)
+      override fun of(vararg flags: ChannelModeType) = Flags.of(*flags)
+    }
+  }
+
+  /**
+   * Default port assignments according to what many IRC networks have settled on.
+   * Technically not a standard, but it's fairly widespread.
+   * {@see https://freenode.net/news/port-6697-irc-via-tlsssl}
+   */
+  enum class PortDefaults(val port: UInt) {
+    /** Default port for unencrypted connections */
+    PORT_PLAINTEXT(6667),
+    /** Default port for encrypted connections */
+    PORT_SSL(6697)
+  }
+
+  data class Server(
+    val host: String = "",
+    val port: UInt = PortDefaults.PORT_PLAINTEXT.port,
+    val password: String = "",
+    val useSsl: Boolean = false,
+    val sslVerify: Boolean = false,
+    val sslVersion: Int = 0,
+    val useProxy: Boolean = false,
+    val proxyType: Int = ProxyType.Socks5Proxy.value,
+    val proxyHost: String = "localhost",
+    val proxyPort: UInt = 8080,
+    val proxyUser: String = "",
+    val proxyPass: String = ""
+  ) {
+    fun toVariantMap(): QVariantMap = mapOf(
+      "Host" to QVariant_(host, Type.QString),
+      "Port" to QVariant_(port, Type.UInt),
+      "Password" to QVariant_(password, Type.QString),
+      "UseSSL" to QVariant_(useSsl, Type.Bool),
+      "sslVerify" to QVariant_(sslVerify, Type.Bool),
+      "sslVersion" to QVariant_(sslVersion, Type.Int),
+      "UseProxy" to QVariant_(useProxy, Type.Bool),
+      "ProxyType" to QVariant_(proxyType, Type.Bool),
+      "ProxyHost" to QVariant_(proxyHost, Type.QString),
+      "ProxyPort" to QVariant_(proxyPort, Type.UInt),
+      "ProxyUser" to QVariant_(proxyUser, Type.QString),
+      "ProxyPass" to QVariant_(proxyPass, Type.QString)
+    )
+
+    companion object {
+      fun fromVariantMap(map: QVariantMap) = Server(
+        host = map["Host"].value(""),
+        port = map["Port"].value(PortDefaults.PORT_PLAINTEXT.port),
+        password = map["Password"].value(""),
+        useSsl = map["UseSSL"].value(false),
+        sslVerify = map["sslVerify"].value(false),
+        sslVersion = map["sslVersion"].value(0),
+        useProxy = map["UseProxy"].value(false),
+        proxyType = map["ProxyType"].value(ProxyType.Socks5Proxy.value),
+        proxyHost = map["ProxyHost"].value("localhost"),
+        proxyPort = map["ProxyPort"].value(8080),
+        proxyUser = map["ProxyUser"].value(""),
+        proxyPass = map["ProxyPass"].value("")
+      )
+    }
+  }
+
+  enum class ProxyType(val value: Int) {
+    DefaultProxy(0),
+    Socks5Proxy(1),
+    NoProxy(2),
+    HttpProxy(3),
+    HttpCachingProxy(4),
+    FtpCachingProxy(5);
+
+    companion object {
+      private val byId = enumValues<ProxyType>().associateBy(
+        ProxyType::value)
+
+      fun of(value: Int) = byId[value] ?: DefaultProxy
+    }
+  }
+
+  data class NetworkInfo(
+    var networkId: NetworkId = -1,
+    var networkName: String = "",
+    var identity: IdentityId = -1,
+    // unused
+    var useCustomEncodings: Boolean = false,
+    var codecForServer: String = "UTF_8",
+    var codecForEncoding: String = "UTF_8",
+    var codecForDecoding: String = "UTF_8",
+    var serverList: List<INetwork.Server> = emptyList(),
+    var useRandomServer: Boolean = false,
+    var perform: List<String> = emptyList(),
+    var useAutoIdentify: Boolean = false,
+    var autoIdentifyService: String = "",
+    var autoIdentifyPassword: String = "",
+    var useSasl: Boolean = false,
+    var saslAccount: String = "",
+    var saslPassword: String = "",
+    var useAutoReconnect: Boolean = true,
+    var autoReconnectInterval: Int = 0,
+    var autoReconnectRetries: Short = 0,
+    var unlimitedReconnectRetries: Boolean = true,
+    var rejoinChannels: Boolean = true,
+    var useCustomMessageRate: Boolean = false,
+    var messageRateBurstSize: Int = 0,
+    var messageRateDelay: Int = 0,
+    var unlimitedMessageRate: Boolean = false
+  )
+
+  /**
+   * IRCv3 capability names and values
+   */
+  object IrcCap {
+    // NOTE: If you add or modify the constants below, update the knownCaps list.
+    /**
+     * Account change notification.
+     *
+     * http://ircv3.net/specs/extensions/account-notify-3.1.html
+     */
+    const val ACCOUNT_NOTIFY = "account-notify"
+    /**
+     * Magic number for WHOX, used to ignore user-requested WHOX replies from servers
+     *
+     * If a user initiates a WHOX, there's no easy way to tell what fields were requested.  It's
+     * simpler to not attempt to parse data from user-requested WHOX replies.
+     */
+    const val ACCOUNT_NOTIFY_WHOX_NUM = 369
+    /**
+     * Away change notification.
+     *
+     * http://ircv3.net/specs/extensions/away-notify-3.1.html
+     */
+    const val AWAY_NOTIFY = "away-notify"
+    /**
+     * Capability added/removed notification.
+     *
+     * This is implicitly enabled via CAP LS 302, and is here for servers that only partially
+     * support IRCv3.2.
+     *
+     * http://ircv3.net/specs/extensions/cap-notify-3.2.html
+     */
+    const val CAP_NOTIFY = "cap-notify"
+    /**
+     * Hostname/user changed notification.
+     *
+     * http://ircv3.net/specs/extensions/chghost-3.2.html
+     */
+    const val CHGHOST = "chghost"
+    /**
+     * Extended join information.
+     *
+     * http://ircv3.net/specs/extensions/extended-join-3.1.html
+     */
+    const val EXTENDED_JOIN = "extended-join"
+    /**
+     * Multiple mode prefixes in MODE and WHO replies.
+     *
+     * http://ircv3.net/specs/extensions/multi-prefix-3.1.html
+     */
+    const val MULTI_PREFIX = "multi-prefix"
+    /**
+     * SASL authentication.
+     *
+     * http://ircv3.net/specs/extensions/sasl-3.2.html
+     */
+    const val SASL = "sasl"
+    /**
+     * Userhost in names replies.
+     *
+     * http://ircv3.net/specs/extensions/userhost-in-names-3.2.html
+     */
+    const val USERHOST_IN_NAMES = "userhost-in-names"
+
+    /**
+     * Vendor-specific capabilities
+     */
+    object Vendor {
+      /**
+       * Self message support, as recognized by ZNC.
+       *
+       * Some servers (e.g. Bitlbee) assume self-message support; ZNC requires a capability
+       * instead.  As self-message is already implemented, there's little reason to not do this.
+       *
+       * More information in the IRCv3 commit that removed the 'self-message' capability.
+       *
+       * https://github.com/ircv3/ircv3-specifications/commit/1bfba47843c2526707c902034b3395af934713c8
+       */
+      const val ZNC_SELF_MESSAGE = "znc.in/self-message"
+    }
+
+    /**
+     * List of capabilities currently implemented and requested during capability negotiation.
+     */
+    val knownCaps = listOf(
+      ACCOUNT_NOTIFY,
+      AWAY_NOTIFY,
+      CAP_NOTIFY,
+      CHGHOST,
+      EXTENDED_JOIN,
+      MULTI_PREFIX,
+      SASL,
+      USERHOST_IN_NAMES,
+      Vendor::ZNC_SELF_MESSAGE
+    )
+    // NOTE: If you modify the knownCaps list, update the constants above as needed.
+    /**
+     * SASL authentication mechanisms
+     *
+     * http://ircv3.net/specs/extensions/sasl-3.1.html
+     */
+    object SaslMech {
+      /**
+       * PLAIN authentication, e.g. hashed password
+       */
+      const val PLAIN = "PLAIN"
+      /**
+       * EXTERNAL authentication, e.g. SSL certificate and keys
+       */
+      const val EXTERNAL = "EXTERNAL"
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetworkConfig.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetworkConfig.kt
new file mode 100644
index 000000000..a831ef7c1
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/INetworkConfig.kt
@@ -0,0 +1,100 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.ARG
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.SLOT
+import de.kuschku.quasseldroid_ng.protocol.Type
+
+@Syncable(name = "NetworkConfig")
+interface INetworkConfig : ISyncableObject {
+
+  fun initProperties(): QVariantMap
+  fun initSetProperties(properties: QVariantMap)
+
+  @Slot
+  fun requestSetAutoWhoDelay(i: Int) {
+    REQUEST(SLOT, ARG(i, Type.Int))
+  }
+
+  @Slot
+  fun requestSetAutoWhoEnabled(b: Boolean) {
+    REQUEST(SLOT, ARG(b, Type.Bool))
+  }
+
+  @Slot
+  fun requestSetAutoWhoInterval(i: Int) {
+    REQUEST(SLOT, ARG(i, Type.Int))
+  }
+
+  @Slot
+  fun requestSetAutoWhoNickLimit(i: Int) {
+    REQUEST(SLOT, ARG(i, Type.Int))
+  }
+
+  @Slot
+  fun requestSetMaxPingCount(i: Int) {
+    REQUEST(SLOT, ARG(i, Type.Int))
+  }
+
+  @Slot
+  fun requestSetPingInterval(i: Int) {
+    REQUEST(SLOT, ARG(i, Type.Int))
+  }
+
+  @Slot
+  fun requestSetPingTimeoutEnabled(b: Boolean) {
+    REQUEST(SLOT, ARG(b, Type.Bool))
+  }
+
+  @Slot
+  fun requestSetStandardCtcp(b: Boolean) {
+    REQUEST(SLOT, ARG(b, Type.Bool))
+  }
+
+  @Slot
+  fun setAutoWhoDelay(delay: Int) {
+    SYNC(SLOT, ARG(delay, Type.Int))
+  }
+
+  @Slot
+  fun setAutoWhoEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setAutoWhoInterval(interval: Int) {
+    SYNC(SLOT, ARG(interval, Type.Int))
+  }
+
+  @Slot
+  fun setAutoWhoNickLimit(limit: Int) {
+    SYNC(SLOT, ARG(limit, Type.Int))
+  }
+
+  @Slot
+  fun setMaxPingCount(count: Int) {
+    SYNC(SLOT, ARG(count, Type.Int))
+  }
+
+  @Slot
+  fun setPingInterval(interval: Int) {
+    SYNC(SLOT, ARG(interval, Type.Int))
+  }
+
+  @Slot
+  fun setPingTimeoutEnabled(enabled: Boolean) {
+    SYNC(SLOT, ARG(enabled, Type.Bool))
+  }
+
+  @Slot
+  fun setStandardCtcp(standardCtcp: Boolean) {
+    SYNC(SLOT, ARG(standardCtcp, Type.Bool))
+  }
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IRpcHandler.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IRpcHandler.kt
new file mode 100644
index 000000000..3b748bbce
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/IRpcHandler.kt
@@ -0,0 +1,57 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import android.net.NetworkInfo
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.IdentityId
+import de.kuschku.quasseldroid_ng.protocol.NetworkId
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.quassel.BufferInfo
+import de.kuschku.quasseldroid_ng.session.SignalProxy
+import java.nio.ByteBuffer
+
+@Syncable(name = "RpcHandler")
+interface IRpcHandler {
+  val proxy: SignalProxy
+  fun RPC(function: String, vararg arg: QVariant_) = proxy.callRpc(function, arg.toList())
+
+  @Slot("__objectRenamed__")
+  fun objectRenamed(classname: ByteBuffer, newname: String, oldname: String)
+
+  @Slot("2displayMsg(Message)")
+  fun displayMsg(message: QuasselDatabase.RawMessage)
+
+  @Slot("2displayStatusMsg(QString,QString)")
+  fun displayStatusMsg(net: String, msg: String)
+
+  @Slot("2bufferInfoUpdated(BufferInfo)")
+  fun bufferInfoUpdated(bufferInfo: BufferInfo)
+
+  @Slot("2identityCreated(Identity)")
+  fun identityCreated(identity: QVariantMap)
+
+  @Slot("2identityRemoved(IdentityId)")
+  fun identityRemoved(identityId: IdentityId)
+
+  @Slot("2networkCreated(NetworkId)")
+  fun networkCreated(networkId: NetworkId)
+
+  @Slot("2networkRemoved(NetworkId)")
+  fun networkRemoved(networkId: NetworkId)
+
+  @Slot("2passwordChanged(PeerPtr,bool)")
+  fun passwordChanged(ignored: Long, success: Boolean)
+
+  @Slot("2disconnectFromCore()")
+  fun disconnectFromCore()
+
+  fun requestCreateIdentity(identity: QVariantMap, additional: QVariantMap)
+  fun requestRemoveIdentity(identityId: IdentityId)
+  fun requestCreateNetwork(networkInfo: NetworkInfo, channels: List<String>)
+  fun requestRemoveNetwork(networkId: NetworkId)
+  fun requestPasswordChange(peerPtr: Long, user: String, old: String, new: String)
+  fun requestKickClient(id: Int)
+  fun sendInput(bufferInfo: BufferInfo, message: String)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ISyncableObject.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ISyncableObject.kt
new file mode 100644
index 000000000..4a31961c8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ISyncableObject.kt
@@ -0,0 +1,25 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.quasseldroid_ng.protocol.*
+
+interface ISyncableObject {
+  val objectName: String
+  var identifier: String
+  val className: String
+  var initialized: Boolean
+  fun SYNC(function: String, vararg arg: QVariant_)
+  fun REQUEST(function: String, vararg arg: QVariant_)
+  fun requestUpdate(properties: QVariantMap = toVariantMap()) {
+    REQUEST(SLOT, ARG(properties, Type.QVariantMap))
+  }
+
+  fun update(properties: QVariantMap) {
+    fromVariantMap(properties)
+    SYNC(SLOT, ARG(properties, Type.QVariantMap))
+  }
+
+  fun init() {}
+
+  fun fromVariantMap(properties: QVariantMap) = Unit
+  fun toVariantMap(): QVariantMap = emptyMap()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransfer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransfer.kt
new file mode 100644
index 000000000..17377d42e
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransfer.kt
@@ -0,0 +1,54 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import java.nio.ByteBuffer
+
+@Syncable(name = "Transfer")
+interface ITransfer : ISyncableObject {
+  @Slot
+  fun accept(savePath: String)
+
+  @Slot
+  fun reject()
+
+  @Slot
+  fun requestAccepted(peer: Long)
+
+  @Slot
+  fun requestRejected(peer: Long)
+
+  @Slot
+  fun setStatus(status: Status)
+
+  @Slot
+  fun setError(errorString: String)
+
+  @Slot
+  fun dataReceived(peer: Long, data: ByteBuffer)
+
+  @Slot
+  fun cleanUp()
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+
+  enum class Status {
+    New,
+    Pending,
+    Connecting,
+    Transferring,
+    Paused,
+    Completed,
+    Failed,
+    Rejected
+  }
+
+  enum class Direction {
+    Send,
+    Receive
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransferManager.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransferManager.kt
new file mode 100644
index 000000000..7ea2862c7
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/ITransferManager.kt
@@ -0,0 +1,20 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces
+
+import de.kuschku.libquassel.annotations.Slot
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.protocol.QVariantMap
+import java.util.*
+
+@Syncable(name = "TransferManager")
+interface ITransferManager : ISyncableObject {
+  @Slot
+  fun setTransferIds(transferIds: List<UUID>)
+
+  @Slot
+  fun onCoreTransferAdded(transferId: UUID)
+
+  @Slot
+  override fun update(properties: QVariantMap) {
+    super.update(properties)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invoker.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invoker.kt
new file mode 100644
index 000000000..0af930f18
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invoker.kt
@@ -0,0 +1,11 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.invokers
+
+import de.kuschku.quasseldroid_ng.UnknownMethodException
+import de.kuschku.quasseldroid_ng.WrongObjectTypeException
+import de.kuschku.quasseldroid_ng.protocol.QVariantList
+
+interface Invoker<out T> {
+  val className: String
+  @Throws(WrongObjectTypeException::class, UnknownMethodException::class)
+  fun invoke(on: Any?, method: String, params: QVariantList)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invokers.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invokers.kt
new file mode 100644
index 000000000..dec0c0a61
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/quassel/syncables/interfaces/invokers/Invokers.kt
@@ -0,0 +1,68 @@
+package de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.invokers
+
+import de.kuschku.libquassel.annotations.Syncable
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.*
+import de.kuschku.quasseldroid_ng.util.helpers.Logger
+import de.kuschku.quasseldroid_ng.util.helpers.debug
+import de.kuschku.quasseldroid_ng.util.helpers.warn
+
+object Invokers {
+  private val registry = mutableMapOf<String, Invoker<*>>()
+  fun get(name: String) = registry[name]
+
+  val RPC: Invoker<IRpcHandler>?
+
+  val size
+    get() = registry.size
+
+  init {
+    register(invoker<IAliasManager>())
+    register(invoker<IBacklogManager>())
+    register(invoker<IBufferSyncer>())
+    register(invoker<IBufferViewConfig>())
+    register(invoker<IBufferViewManager>())
+    register(invoker<ICertManager>())
+    register(invoker<ICoreInfo>())
+    register(invoker<IDccConfig>())
+    register(invoker<IIdentity>())
+    register(invoker<IIgnoreListManager>())
+    register(invoker<IIrcChannel>())
+    register(invoker<IIrcListHelper>())
+    register(invoker<IIrcUser>())
+    register(invoker<INetwork>())
+    register(invoker<INetworkConfig>())
+    register(invoker<ITransfer>())
+    register(invoker<ITransferManager>())
+
+    RPC = invoker()
+
+    Logger.debug("Invokers::init", "$size invokers registered")
+  }
+
+  private inline fun <reified T> invoker(): Invoker<T>? = getInvoker(T::class.java)
+
+  private fun <T> getInvoker(type: Class<T>): Invoker<T>? {
+    val syncable: Syncable? = type.getAnnotation(Syncable::class.java)
+    if (syncable == null) {
+      Logger.warn("Invokers::register", "Invoker not annotated: ${type.canonicalName}")
+      return null
+    }
+
+    val packageName = "${type.`package`.name}.invokers"
+    val className = "${syncable.name}Invoker"
+    val klass = Class.forName("$packageName.$className")
+    val invoker = klass.getDeclaredField("INSTANCE").get(null)
+    if (invoker !is Invoker<*>) {
+      Logger.warn("Invokers::register",
+                  "Invoker not of proper type: ${type.canonicalName} != ${invoker.javaClass.canonicalName}")
+      return null
+    }
+
+    return invoker as Invoker<T>?
+  }
+
+  private fun <T> register(invoker: Invoker<T>?) {
+    if (invoker != null)
+      registry.put(invoker.className, invoker)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java b/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
deleted file mode 100644
index e3c1d3eaa..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/ClientBackgroundThread.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.service;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-
-import org.acra.ACRA;
-import org.greenrobot.eventbus.Subscribe;
-
-import java.io.IOException;
-import java.net.ConnectException;
-import java.net.SocketException;
-
-import javax.net.ssl.SSLException;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.QuasselClient;
-import de.kuschku.libquassel.client.ClientData;
-import de.kuschku.libquassel.client.FeatureFlags;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.events.LoginRequireEvent;
-import de.kuschku.libquassel.localtypes.backlogstorage.HybridBacklogStorage;
-import de.kuschku.libquassel.protocols.RemotePeer;
-import de.kuschku.quasseldroid_ng.ui.settings.Settings;
-import de.kuschku.util.CompatibilityUtils;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.accounts.AccountManager;
-import de.kuschku.util.buffermetadata.SQLiteBufferMetaDataManager;
-import de.kuschku.util.certificates.SQLiteCertificateManager;
-
-public class ClientBackgroundThread implements Runnable {
-    @NonNull
-    private static final ClientData CLIENT_DATA = new ClientData(
-            new FeatureFlags(true, true),
-            new byte[]{RemotePeer.DATASTREAM},
-            "QuasselDroid-ng 0.1 | libquassel 0.3.0",
-            RemotePeer.PROTOCOL_VERSION_LEGACY
-    );
-
-    @NonNull
-    private final QuasselClient client;
-
-    private final Settings settings;
-    private final AccountManager manager;
-
-    public ClientBackgroundThread(@NonNull BusProvider provider, @NonNull Account account, @NonNull Context context) {
-        this.client = new QuasselClient(
-                provider,
-                CLIENT_DATA,
-                new SQLiteCertificateManager(context),
-                new HybridBacklogStorage(),
-                new SQLiteBufferMetaDataManager(context),
-                account.id.toString()
-        );
-        this.client.connect(account.toAddress());
-        this.client.provider.event.register(this);
-
-        settings = new Settings(context);
-        manager = new AccountManager(context);
-    }
-
-    @NonNull
-    public QuasselClient client() {
-        return client;
-    }
-
-    @Override
-    public void run() {
-        try {
-            client.connection.open(CompatibilityUtils.deviceSupportsKeepAlive());
-        } catch (IOException e) {
-            client.provider.sendEvent(new GeneralErrorEvent(e));
-            client.client.setConnectionStatus(ConnectionChangeEvent.Status.DISCONNECTED);
-        }
-    }
-
-    public void close() {
-        client.disconnect();
-    }
-
-    @Subscribe(sticky = true)
-    public void onEvent(LoginRequireEvent event) {
-        if (!event.failedLast) {
-            Account account = manager.account(settings.preferenceLastAccount.get());
-            client().client.login(account.user, account.pass);
-        }
-    }
-
-    @Subscribe(sticky = true)
-    public void onEvent(GeneralErrorEvent event) {
-        if (!(event.exception instanceof ConnectException) && !(event.exception instanceof SSLException) && !(event.exception instanceof SocketException))
-            ACRA.getErrorReporter().handleSilentException(event.exception);
-
-        event.exception.printStackTrace();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java
deleted file mode 100644
index e86420ffe..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.service;
-
-import android.app.Service;
-import android.content.Intent;
-import android.os.Binder;
-import android.os.IBinder;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.backports.Consumer;
-
-public class QuasselService extends Service {
-    @NonNull
-    private final IBinder binder = new LocalBinder();
-    private final Set<Consumer<ClientBackgroundThread>> consumers = new HashSet<>();
-    @Nullable
-    private ClientBackgroundThread bgThread;
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        return binder;
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        return START_STICKY;
-    }
-
-    public class LocalBinder extends Binder {
-        public void startBackgroundThread(@NonNull BusProvider provider, @NonNull Account account) {
-            bgThread = new ClientBackgroundThread(provider, account, QuasselService.this);
-            new Thread(bgThread).start();
-            notify(bgThread);
-        }
-
-        @Nullable
-        public ClientBackgroundThread getBackgroundThread() {
-            return bgThread;
-        }
-
-        public void stopBackgroundThread() {
-            if (bgThread != null) bgThread.close();
-            bgThread = null;
-        }
-
-        public void addCallback(Consumer<ClientBackgroundThread> consumer) {
-            consumers.add(consumer);
-        }
-
-        public void removeCallback(Consumer<ClientBackgroundThread> consumer) {
-            consumers.remove(consumer);
-        }
-
-        private void notify(ClientBackgroundThread thread) {
-            for (Consumer<ClientBackgroundThread> consumer : consumers) {
-                consumer.apply(thread);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
new file mode 100644
index 000000000..8f976fb89
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/service/QuasselService.kt
@@ -0,0 +1,80 @@
+package de.kuschku.quasseldroid_ng.service
+
+import android.arch.lifecycle.LifecycleService
+import android.arch.lifecycle.MutableLiveData
+import android.arch.lifecycle.Transformations
+import android.content.Intent
+import android.os.Binder
+import de.kuschku.quasseldroid_ng.BuildConfig
+import de.kuschku.quasseldroid_ng.R
+import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.session.*
+import org.threeten.bp.Instant
+import java.security.cert.X509Certificate
+import javax.net.ssl.X509TrustManager
+
+class QuasselService : LifecycleService() {
+  private lateinit var session: Session
+
+  private val backend = object : Backend {
+    override fun session() = session
+
+    override fun connect(address: SocketAddress, user: String, pass: String) {
+      disconnect()
+      session.coreConnection = CoreConnection(session, address)
+      session.coreConnection?.start()
+      session.userData = user to pass
+      connection.postValue(session.coreConnection)
+    }
+
+    override fun disconnect() {
+      session.coreConnection?.close()
+      session.coreConnection = null
+      connection.postValue(null)
+      ABSENT.postValue(ConnectionState.DISCONNECTED)
+    }
+
+    private val connection = MutableLiveData<CoreConnection>()
+
+    val ABSENT = MutableLiveData<ConnectionState>()
+    override val status = Transformations.switchMap(connection) { input: CoreConnection? ->
+      input?.liveState ?: ABSENT
+    }
+  }
+
+  private lateinit var database: QuasselDatabase
+
+  override fun onCreate() {
+    super.onCreate()
+    database = QuasselDatabase.Creator.init(application)
+    session = Session(
+      clientData = ClientData(
+        identifier = "${resources.getString(R.string.app_name)} ${BuildConfig.VERSION_NAME}",
+        buildDate = Instant.ofEpochSecond(BuildConfig.GIT_COMMIT_DATE),
+        clientFeatures = Quassel_Features.of(*Quassel_Feature.values()),
+        protocolFeatures = Protocol_Features.of(
+          Protocol_Feature.Compression,
+          Protocol_Feature.TLS
+        ),
+        supportedProtocols = byteArrayOf(0x02)
+      ),
+      trustManager = object : X509TrustManager {
+        override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) {
+        }
+
+        override fun checkServerTrusted(p0: Array<out X509Certificate>?, p1: String?) {
+        }
+
+        override fun getAcceptedIssuers(): Array<X509Certificate> = emptyArray()
+      }
+    )
+  }
+
+  override fun onBind(intent: Intent?): QuasselBinder {
+    super.onBind(intent)
+    return QuasselBinder(backend)
+  }
+
+  class QuasselBinder(val backend: Backend) : Binder()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/AuthHandler.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/AuthHandler.kt
new file mode 100644
index 000000000..ea244129b
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/AuthHandler.kt
@@ -0,0 +1,29 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.protocol.HandshakeMessage
+
+interface AuthHandler {
+  fun handle(function: HandshakeMessage.ClientInit) {}
+  fun handle(function: HandshakeMessage.ClientInitReject) {}
+  fun handle(function: HandshakeMessage.ClientInitAck) {}
+  fun handle(function: HandshakeMessage.CoreSetupData) {}
+  fun handle(function: HandshakeMessage.CoreSetupReject) {}
+  fun handle(function: HandshakeMessage.CoreSetupAck) {}
+  fun handle(function: HandshakeMessage.ClientLogin) {}
+  fun handle(function: HandshakeMessage.ClientLoginReject) {}
+  fun handle(function: HandshakeMessage.ClientLoginAck) {}
+  fun handle(function: HandshakeMessage.SessionInit) {}
+
+  fun handle(function: HandshakeMessage) = when (function) {
+    is HandshakeMessage.ClientInit        -> handle(function)
+    is HandshakeMessage.ClientInitReject  -> handle(function)
+    is HandshakeMessage.ClientInitAck     -> handle(function)
+    is HandshakeMessage.CoreSetupData     -> handle(function)
+    is HandshakeMessage.CoreSetupReject   -> handle(function)
+    is HandshakeMessage.CoreSetupAck      -> handle(function)
+    is HandshakeMessage.ClientLogin       -> handle(function)
+    is HandshakeMessage.ClientLoginReject -> handle(function)
+    is HandshakeMessage.ClientLoginAck    -> handle(function)
+    is HandshakeMessage.SessionInit       -> handle(function)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/Backend.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/Backend.kt
new file mode 100644
index 000000000..b63b7458c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/Backend.kt
@@ -0,0 +1,10 @@
+package de.kuschku.quasseldroid_ng.session
+
+import android.arch.lifecycle.LiveData
+
+interface Backend {
+  fun connect(address: SocketAddress, user: String, pass: String)
+  fun disconnect()
+  fun session(): Session
+  val status: LiveData<ConnectionState>
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/ConnectionState.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ConnectionState.kt
new file mode 100644
index 000000000..4da076241
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ConnectionState.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid_ng.session
+
+enum class ConnectionState {
+  DISCONNECTED,
+  CONNECTING,
+  HANDSHAKE,
+  INIT,
+  CONNECTED,
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/CoreConnection.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/CoreConnection.kt
new file mode 100644
index 000000000..934530bf3
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/CoreConnection.kt
@@ -0,0 +1,224 @@
+package de.kuschku.quasseldroid_ng.session
+
+import android.arch.lifecycle.MutableLiveData
+import android.os.Handler
+import android.os.HandlerThread
+import android.os.Process
+import de.kuschku.quasseldroid_ng.protocol.HandshakeMessage
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Feature
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.protocol.SignalProxyMessage
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.HandshakeVariantMapSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.IntSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.ProtocolSerializer
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.VariantListSerializer
+import de.kuschku.quasseldroid_ng.quassel.ProtocolFeature
+import de.kuschku.quasseldroid_ng.util.CompatibilityUtils
+import de.kuschku.quasseldroid_ng.util.hasFlag
+import de.kuschku.quasseldroid_ng.util.helpers.*
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import de.kuschku.quasseldroid_ng.util.nio.WrappedChannel
+import org.threeten.bp.ZoneOffset
+import org.threeten.bp.format.DateTimeFormatter
+import java.lang.Thread.UncaughtExceptionHandler
+import java.net.Socket
+import java.net.SocketException
+import java.nio.ByteBuffer
+
+class CoreConnection(
+  private val session: Session,
+  private val address: SocketAddress
+) : Thread() {
+  private val parseThread = HandlerThread("parse", Process.THREAD_PRIORITY_BACKGROUND)
+  private val writeThread = HandlerThread("write", Process.THREAD_PRIORITY_BACKGROUND)
+  private val backendThread = HandlerThread("backend", Process.THREAD_PRIORITY_BACKGROUND)
+  private lateinit var parseHandler: Handler
+  private lateinit var writeHandler: Handler
+  private lateinit var backendHandler: Handler
+
+  private val exceptionHandler = UncaughtExceptionHandler { thread, throwable ->
+    Logger.error(thread.name, "", throwable)
+  }
+
+  private val sizeBuffer = ByteBuffer.allocateDirect(4)
+  private val chainedBuffer = ChainedByteBuffer(direct = true)
+  val liveState = MutableLiveData<ConnectionState>()
+
+  init {
+    liveState.value = ConnectionState.DISCONNECTED
+  }
+
+  var state = ConnectionState.DISCONNECTED
+    set(value) {
+      field = value
+      Logger.debug("CoreConnection", "Connection state changed to $state")
+      liveState.postValue(value)
+    }
+
+  private var channel: WrappedChannel? = null
+
+  private fun connect() {
+    state = ConnectionState.CONNECTING
+    val socket = Socket()
+    if (CompatibilityUtils.deviceSupportsKeepAlive())
+      socket.keepAlive = true
+    socket.connect(address.data(), 10_000)
+    channel = WrappedChannel.ofSocket(socket)
+    parseThread.uncaughtExceptionHandler = exceptionHandler
+    writeThread.uncaughtExceptionHandler = exceptionHandler
+    backendThread.uncaughtExceptionHandler = exceptionHandler
+    parseThread.start()
+    writeThread.start()
+    backendThread.start()
+    parseHandler = Handler(parseThread.looper)
+    writeHandler = Handler(writeThread.looper)
+    backendHandler = Handler(backendThread.looper)
+  }
+
+  private fun sendHandshake() {
+    state = ConnectionState.HANDSHAKE
+    IntSerializer.serialize(chainedBuffer,
+                            0x42b33f00 or session.clientData.protocolFeatures.toInt(),
+                            session.coreFeatures)
+    for (supportedProtocol in session.clientData.supportedProtocols) {
+      IntSerializer.serialize(chainedBuffer, supportedProtocol.toInt(), session.coreFeatures)
+    }
+    IntSerializer.serialize(chainedBuffer, 1 shl 31, session.coreFeatures)
+    channel?.write(chainedBuffer)
+    channel?.flush()
+  }
+
+  private fun readHandshake() {
+    sizeBuffer.clear()
+    channel?.read(sizeBuffer)
+    sizeBuffer.flip()
+    val protocol = ProtocolSerializer.deserialize(sizeBuffer, session.coreFeatures)
+
+    println(protocol)
+
+    // Wrap socket in SSL context if ssl is enabled
+    if (protocol.flags.hasFlag(ProtocolFeature.TLS)) {
+      channel = channel?.withSSL(session.trustManager, address)
+    }
+
+    // Wrap socket in deflater if compression is enabled
+    if (protocol.flags.hasFlag(ProtocolFeature.Compression)) {
+      channel = channel?.withCompression()
+    }
+
+    // Initialize remote peer
+    when (protocol.version.toInt()) {
+      0x02 -> {
+        // Send client clientData to core
+        dispatch(HandshakeMessage.ClientInit(
+          clientVersion = session.clientData.identifier,
+          buildDate = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss")
+            .format(session.clientData.buildDate.atOffset(ZoneOffset.UTC)),
+          clientFeatures = Quassel_Features.of(*Quassel_Feature.values())
+        ))
+      }
+      else -> {
+        throw IllegalArgumentException("Invalid Protocol Version: $protocol")
+      }
+    }
+  }
+
+  fun close() {
+    interrupt()
+    parseThread.quit()
+    writeThread.quit()
+    backendThread.quit()
+    val thread = Thread {
+      try {
+        channel?.close()
+      } catch (e: Throwable) {
+        Logger.warn("ConnectionClosing", "", e)
+      }
+    }
+    thread.start()
+    thread.join()
+  }
+
+  fun dispatch(message: HandshakeMessage) {
+    parseHandler.post {
+      try {
+        val data = HandshakeMessage.serialize(message)
+        writeHandler.post(
+          MessageRunnable(data, HandshakeVariantMapSerializer, chainedBuffer, channel,
+                          session.coreFeatures)
+        )
+      } catch (e: Throwable) {
+        Logger.warn("HandshakeSerializing", "", e)
+      }
+    }
+  }
+
+  fun dispatch(message: SignalProxyMessage) {
+    parseHandler.post {
+      try {
+        val data = SignalProxyMessage.serialize(message)
+        writeHandler.post(
+          MessageRunnable(data, VariantListSerializer, chainedBuffer, channel, session.coreFeatures)
+        )
+      } catch (e: Throwable) {
+        Logger.warn("MessageSerializing", "", e)
+      }
+    }
+  }
+
+  override fun run() {
+    try {
+      connect()
+      sendHandshake()
+      readHandshake()
+      while (!isInterrupted) {
+        sizeBuffer.clear()
+        channel?.read(sizeBuffer)
+        sizeBuffer.flip()
+
+        val size = IntSerializer.deserialize(sizeBuffer, session.coreFeatures)
+        if (size > 64 * 1024 * 1024)
+          throw SocketException("Too large frame received: $size")
+        val dataBuffer = ByteBuffer.allocateDirect(size)
+        while (dataBuffer.position() < dataBuffer.limit() && channel?.read(dataBuffer) ?: -1 > 0) {
+        }
+        dataBuffer.flip()
+        parseHandler.post {
+          when (state) {
+            ConnectionState.HANDSHAKE -> {
+              try {
+                val msg = HandshakeMessage.deserialize(
+                  HandshakeVariantMapSerializer.deserialize(dataBuffer, session.coreFeatures)
+                )
+                try {
+                  session.handle(msg)
+                } catch (e: Throwable) {
+                  Logger.warn("HandshakeHandling", "", e)
+                }
+              } catch (e: Throwable) {
+                Logger.warn("HandshakeParsing", "", e)
+              }
+            }
+            else                      ->
+              try {
+                val msg = SignalProxyMessage.deserialize(
+                  VariantListSerializer.deserialize(dataBuffer, session.coreFeatures)
+                )
+                backendHandler.post {
+                  try {
+                    session.handle(msg)
+                  } catch (e: Throwable) {
+                    Logger.warn("MessageHandling", "", e)
+                  }
+                }
+              } catch (e: Throwable) {
+                Logger.warn("MessageParsing", "", e)
+              }
+          }
+        }
+      }
+    } catch (e: Throwable) {
+      Logger.warn("CoreConnection", "", e)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/MessageRunnable.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/MessageRunnable.kt
new file mode 100644
index 000000000..f2449d847
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/MessageRunnable.kt
@@ -0,0 +1,32 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.Serializer
+import de.kuschku.quasseldroid_ng.util.helpers.Logger
+import de.kuschku.quasseldroid_ng.util.helpers.warn
+import de.kuschku.quasseldroid_ng.util.helpers.write
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import de.kuschku.quasseldroid_ng.util.nio.WrappedChannel
+import java.nio.ByteBuffer
+
+class MessageRunnable<T>(
+  private val data: T,
+  private val serializer: Serializer<T>,
+  private val chainedBuffer: ChainedByteBuffer,
+  private val channel: WrappedChannel?,
+  private val features: Quassel_Features
+) : () -> Unit {
+  override fun invoke() {
+    try {
+      serializer.serialize(chainedBuffer, data, features)
+      val sizeBuffer = ByteBuffer.allocateDirect(4)
+      sizeBuffer.putInt(chainedBuffer.size)
+      sizeBuffer.flip()
+      channel?.write(sizeBuffer)
+      channel?.write(chainedBuffer)
+      channel?.flush()
+    } catch (e: Throwable) {
+      Logger.warn("MessageDispatching", "", e)
+    }
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/ObjectStorage.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ObjectStorage.kt
new file mode 100644
index 000000000..23b88d55c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ObjectStorage.kt
@@ -0,0 +1,33 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.ObjectNotFoundException
+import de.kuschku.quasseldroid_ng.protocol.QType
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.SignalProxyMessage
+import de.kuschku.quasseldroid_ng.protocol.Type
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ISyncableObject
+
+class ObjectStorage(private val proxy: SignalProxy) {
+  private val objectTree: MutableMap<String, ISyncableObject> = HashMap()
+
+  fun add(obj: ISyncableObject) = objectTree.put(obj.identifier, obj)
+
+  fun remove(obj: ISyncableObject) = objectTree.remove(obj.identifier)
+
+  fun rename(className: String, new: String, old: String) {
+    val obj = get(className, old) ?: throw ObjectNotFoundException(className, old)
+    rename(obj, new, old)
+  }
+
+  fun rename(obj: ISyncableObject, new: String, old: String) {
+    objectTree.put("${obj.className}:$new", obj)
+    objectTree.remove("${obj.className}:$old")
+    proxy.dispatch(SignalProxyMessage.RpcCall("__objectRenamed__", listOf(
+      QVariant_(obj.className, Type.QString), QVariant_(new, Type.QString),
+      QVariant_(old, Type.QString))
+    ))
+  }
+
+  fun get(className: QType, objectName: String) = get(className.typeName, objectName)
+  fun get(className: String, objectName: String) = objectTree["$className:$objectName"]
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/ProtocolHandler.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ProtocolHandler.kt
new file mode 100644
index 000000000..2f85c8f21
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/ProtocolHandler.kt
@@ -0,0 +1,150 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.ObjectNotFoundException
+import de.kuschku.quasseldroid_ng.protocol.HandshakeMessage
+import de.kuschku.quasseldroid_ng.protocol.QVariant_
+import de.kuschku.quasseldroid_ng.protocol.SignalProxyMessage
+import de.kuschku.quasseldroid_ng.quassel.syncables.RpcHandler
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ISyncableObject
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.invokers.Invokers
+import de.kuschku.quasseldroid_ng.util.helpers.Logger
+import de.kuschku.quasseldroid_ng.util.helpers.debug
+import de.kuschku.quasseldroid_ng.util.helpers.warn
+import org.threeten.bp.Instant
+
+abstract class ProtocolHandler : SignalProxy, AuthHandler {
+  private val objectStorage: ObjectStorage = ObjectStorage(this)
+  protected val rpcHandler: RpcHandler = RpcHandler(this)
+
+  private val toInit = mutableMapOf<ISyncableObject, MutableList<SignalProxyMessage.SyncMessage>>()
+  private val syncQueue = mutableListOf<SignalProxyMessage.SyncMessage>()
+
+  protected var isInitializing = false
+
+  private var currentCallClass = ""
+  private var currentCallSlot = ""
+  private var currentCallInstance = ""
+
+  abstract fun onInitDone()
+
+  override fun handle(f: SignalProxyMessage) {
+    try {
+      super<SignalProxy>.handle(f)
+    } catch (e: Throwable) {
+      Logger.warn("ProtocolHandler", "", e)
+    }
+  }
+
+  override fun handle(function: HandshakeMessage) {
+    try {
+      super<AuthHandler>.handle(function)
+    } catch (e: Throwable) {
+      Logger.warn("ProtocolHandler", "", e)
+    }
+  }
+
+  override fun handle(f: SignalProxyMessage.InitData) {
+    Logger.debug("<", f.toString())
+    val obj: ISyncableObject = objectStorage.get(f.className, f.objectName)
+      ?: throw ObjectNotFoundException(f.className, f.objectName)
+
+    obj.fromVariantMap(f.initData)
+    obj.initialized = true
+    synchronize(obj)
+    checkForInitDone()
+    toInit.remove(obj)?.forEach(this::handle)
+  }
+
+  private fun checkForInitDone() {
+    if (isInitializing && toInit.isEmpty()) {
+      isInitializing = false
+      syncQueue.forEach(this::handle)
+      onInitDone()
+    }
+  }
+
+  override fun handle(f: SignalProxyMessage.SyncMessage) {
+    val obj = objectStorage.get(f.className, f.objectName)
+    if (obj == null) {
+      if (isInitializing) {
+        syncQueue.add(f)
+        return
+      } else {
+        Logger.debug("<", f.toString())
+        throw ObjectNotFoundException(f.className, f.objectName)
+      }
+    }
+
+    val initQueue = toInit[obj]
+    if (initQueue != null) {
+      initQueue.add(f)
+      return
+    }
+
+    Logger.debug("<", f.toString())
+
+    val invoker = Invokers.get(f.className) ?: throw IllegalArgumentException(
+      "Invalid classname: ${f.className}")
+    currentCallClass = f.className
+    currentCallInstance = f.objectName
+    currentCallSlot = f.slotName
+    invoker.invoke(obj, f.slotName, f.params)
+    currentCallClass = ""
+    currentCallInstance = ""
+    currentCallSlot = ""
+  }
+
+  override fun handle(f: SignalProxyMessage.RpcCall) {
+    Logger.debug("<", f.toString())
+
+    currentCallSlot = f.slotName
+    Invokers.RPC?.invoke(rpcHandler, f.slotName, f.params)
+    currentCallSlot = ""
+  }
+
+  override fun handle(f: SignalProxyMessage.HeartBeat) {
+    dispatch(SignalProxyMessage.HeartBeatReply(f.timestamp))
+    dispatch(SignalProxyMessage.HeartBeat(Instant.now()))
+  }
+
+  override fun callSync(type: String, instance: String, slot: String, params: List<QVariant_>) {
+    // Don’t transmit calls back that we just got from the network
+    if (type != currentCallClass || slot != currentCallSlot || instance != currentCallInstance) {
+      dispatch(SignalProxyMessage.SyncMessage(type, instance, slot, params))
+    }
+  }
+
+  override fun callRpc(slot: String, params: List<QVariant_>) {
+    // Don’t transmit calls back that we just got from the network
+    if (slot != currentCallSlot) {
+      dispatch(SignalProxyMessage.RpcCall(slot, params))
+    }
+  }
+
+  override fun renameObject(syncableObject: ISyncableObject, newName: String, oldName: String) {
+    objectStorage.rename(syncableObject, newName, oldName)
+  }
+
+  override fun renameObject(className: String, newName: String, oldName: String) {
+    objectStorage.rename(className, newName, oldName)
+  }
+
+  override fun synchronize(syncableObject: ISyncableObject, baseInit: Boolean) {
+    if (!syncableObject.initialized)
+      syncableObject.init()
+
+    objectStorage.add(syncableObject)
+
+    if (!syncableObject.initialized) {
+      if (baseInit) {
+        toInit.put(syncableObject, mutableListOf())
+      }
+      dispatch(SignalProxyMessage.InitRequest(syncableObject.className, syncableObject.objectName))
+    }
+  }
+
+  override fun stopSynchronize(syncableObject: ISyncableObject) {
+    objectStorage.remove(syncableObject)
+    toInit.remove(syncableObject)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/Session.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/Session.kt
new file mode 100644
index 000000000..f2d694334
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/Session.kt
@@ -0,0 +1,109 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.QuasselFeature
+import de.kuschku.quasseldroid_ng.quassel.syncables.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.invokers.Invokers
+import de.kuschku.quasseldroid_ng.util.hasFlag
+import de.kuschku.quasseldroid_ng.util.helpers.Logger
+import de.kuschku.quasseldroid_ng.util.helpers.debug
+import org.threeten.bp.Instant
+import javax.net.ssl.X509TrustManager
+
+class Session(
+  val clientData: ClientData,
+  val trustManager: X509TrustManager,
+  var coreConnection: CoreConnection? = null
+) : ProtocolHandler() {
+  var coreFeatures: Quassel_Features = Quassel_Feature.NONE
+
+  var userData: Pair<String, String>? = null
+
+  private val aliasManager = AliasManager(this)
+  private val backlogManager = BacklogManager(this)
+  private val bufferSyncer = BufferSyncer(this)
+  private val bufferViewManager = BufferViewManager(this)
+  private val certManagers = mutableMapOf<IdentityId, CertManager>()
+  private val coreInfo = CoreInfo(this)
+  private val dccConfig = DccConfig(this)
+  private val identities = mutableMapOf<IdentityId, Identity>()
+  private val ignoreListManager = IgnoreListManager(this)
+  private val ircListHelper = IrcListHelper(this)
+  private val networks = mutableMapOf<NetworkId, Network>()
+  private val networkConfig = NetworkConfig(this)
+
+  init {
+    Logger.debug("Session", "Session created")
+
+    // This should preload them
+    Invokers
+  }
+
+  override fun handle(function: HandshakeMessage.ClientInitAck) {
+    coreFeatures = function.coreFeatures ?: Quassel_Feature.NONE
+    dispatch(HandshakeMessage.ClientLogin(
+      user = userData?.first,
+      password = userData?.second
+    ))
+  }
+
+  override fun handle(function: HandshakeMessage.ClientLoginReject) {
+
+  }
+
+  override fun handle(function: HandshakeMessage.SessionInit) {
+    coreConnection?.state = ConnectionState.INIT
+
+    function.networkIds?.forEach {
+      val network = Network(it.value(-1), this)
+      networks.put(network.networkId(), network)
+    }
+
+    function.identities?.forEach {
+      val identity = Identity(this)
+      identity.fromVariantMap(it.valueOr(::emptyMap))
+      identity.initialized = true
+      identities.put(identity.id(), identity)
+
+      val certManager = CertManager(identity.id(), this)
+      certManagers.put(identity.id(), certManager)
+    }
+
+    isInitializing = true
+    networks.values.forEach { syncableObject -> this.synchronize(syncableObject, true) }
+    certManagers.values.forEach { syncableObject -> this.synchronize(syncableObject, true) }
+    synchronize(aliasManager, true)
+    synchronize(bufferSyncer, true)
+    synchronize(bufferViewManager, true)
+    synchronize(coreInfo, true)
+    if (coreFeatures.hasFlag(QuasselFeature.DccFileTransfer))
+      synchronize(dccConfig, true)
+    synchronize(ignoreListManager, true)
+    synchronize(ircListHelper, true)
+    synchronize(networkConfig, true)
+  }
+
+  override fun onInitDone() {
+    coreConnection?.state = ConnectionState.CONNECTED
+    Logger.debug("Session", "Initialization finished")
+  }
+
+  override fun handle(f: SignalProxyMessage.HeartBeatReply) {
+    val now = Instant.now()
+    val latency = now.toEpochMilli() - f.timestamp.toEpochMilli()
+    Logger.debug("Session", "Latency of $latency ms")
+  }
+
+  override fun dispatch(message: SignalProxyMessage) {
+    Logger.debug(">", message.toString())
+    coreConnection?.dispatch(message)
+  }
+
+  override fun dispatch(message: HandshakeMessage) {
+    Logger.debug(">", message.toString())
+    coreConnection?.dispatch(message)
+  }
+
+  override fun network(id: NetworkId): Network? = networks[id]
+  override fun identity(id: IdentityId): Identity? = identities[id]
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/SignalProxy.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/SignalProxy.kt
new file mode 100644
index 000000000..6639593fb
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/SignalProxy.kt
@@ -0,0 +1,39 @@
+package de.kuschku.quasseldroid_ng.session
+
+import de.kuschku.quasseldroid_ng.protocol.*
+import de.kuschku.quasseldroid_ng.quassel.syncables.Identity
+import de.kuschku.quasseldroid_ng.quassel.syncables.Network
+import de.kuschku.quasseldroid_ng.quassel.syncables.interfaces.ISyncableObject
+
+interface SignalProxy {
+  fun handle(f: SignalProxyMessage.SyncMessage) {}
+  fun handle(f: SignalProxyMessage.RpcCall) {}
+  fun handle(f: SignalProxyMessage.InitRequest) {}
+  fun handle(f: SignalProxyMessage.InitData) {}
+  fun handle(f: SignalProxyMessage.HeartBeat) {}
+  fun handle(f: SignalProxyMessage.HeartBeatReply) {}
+
+  fun handle(f: SignalProxyMessage) = when (f) {
+    is SignalProxyMessage.SyncMessage    -> handle(f)
+    is SignalProxyMessage.RpcCall        -> handle(f)
+    is SignalProxyMessage.InitRequest    -> handle(f)
+    is SignalProxyMessage.InitData       -> handle(f)
+    is SignalProxyMessage.HeartBeat      -> handle(f)
+    is SignalProxyMessage.HeartBeatReply -> handle(f)
+  }
+
+  fun dispatch(message: SignalProxyMessage)
+  fun dispatch(message: HandshakeMessage)
+
+  fun callSync(type: String, instance: String, slot: String, params: List<QVariant_>)
+  fun callRpc(slot: String, params: List<QVariant_>)
+
+  fun network(id: NetworkId): Network?
+  fun identity(id: IdentityId): Identity?
+
+  fun renameObject(syncableObject: ISyncableObject, newName: String, oldName: String)
+  fun renameObject(className: String, newName: String, oldName: String)
+  fun synchronize(syncableObject: ISyncableObject, baseInit: Boolean)
+  fun synchronize(syncableObject: ISyncableObject) = synchronize(syncableObject, false)
+  fun stopSynchronize(syncableObject: ISyncableObject)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/session/SocketAddress.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/session/SocketAddress.kt
new file mode 100644
index 000000000..ee0edcc19
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/session/SocketAddress.kt
@@ -0,0 +1,7 @@
+package de.kuschku.quasseldroid_ng.session
+
+import java.net.InetSocketAddress
+
+data class SocketAddress(val host: String, val port: Short) {
+  fun data() = InetSocketAddress(host, port.toInt())
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
deleted file mode 100644
index 7f91d24d5..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/LoginActivity.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDelegate;
-
-import de.kuschku.libquassel.localtypes.orm.ConnectedDatabase;
-import de.kuschku.quasseldroid_ng.ui.chat.MainActivity;
-import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper;
-import de.kuschku.quasseldroid_ng.ui.setup.AccountSelectActivity;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-public class LoginActivity extends AppCompatActivity {
-    public static final int REQUEST_CODE_SELECT = 8;
-
-    static {
-        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
-    }
-
-    private final AppContext context = new AppContext();
-
-    private boolean firstStart = true;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        ServiceHelper.initContext(context, this);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        if (!checkReady()) {
-            finish();
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == REQUEST_CODE_SELECT) {
-            if (resultCode == RESULT_OK) {
-                // If we select a different core than we used last time, clear the database
-                if (!context.settings().preferenceLastAccount.get().equals(data.getBundleExtra("extra").getString("account")))
-                    deleteDatabase(ConnectedDatabase.NAME);
-
-                context.settings().preferenceLastAccount.set(data.getBundleExtra("extra").getString("account"));
-                checkReady();
-                firstStart = true;
-            } else {
-                finish();
-            }
-        }
-    }
-
-    private boolean checkReady() {
-        if (context.settings().preferenceLastAccount.get().isEmpty()) {
-            Intent intent = new Intent(this, AccountSelectActivity.class);
-            startActivityForResult(intent, REQUEST_CODE_SELECT);
-            firstStart = true;
-            return true;
-        } else if (firstStart) {
-            startActivity(new Intent(this, MainActivity.class));
-            firstStart = false;
-            return true;
-        } else {
-            return false;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/MainActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/MainActivity.kt
new file mode 100644
index 000000000..be288c70f
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/MainActivity.kt
@@ -0,0 +1,125 @@
+package de.kuschku.quasseldroid_ng.ui
+
+import android.arch.lifecycle.LiveData
+import android.arch.lifecycle.Observer
+import android.os.Bundle
+import android.support.design.widget.Snackbar
+import android.util.Log
+import android.view.Menu
+import android.view.MenuItem
+import android.widget.Button
+import android.widget.EditText
+import android.widget.TextView
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.quasseldroid_ng.R
+import de.kuschku.quasseldroid_ng.session.Backend
+import de.kuschku.quasseldroid_ng.session.ConnectionState
+import de.kuschku.quasseldroid_ng.session.Session
+import de.kuschku.quasseldroid_ng.session.SocketAddress
+import de.kuschku.quasseldroid_ng.util.helpers.Logger
+import de.kuschku.quasseldroid_ng.util.helpers.stickyMapNotNull
+import de.kuschku.quasseldroid_ng.util.helpers.stickySwitchMapNotNull
+import org.threeten.bp.ZoneOffset
+import org.threeten.bp.ZonedDateTime
+import org.threeten.bp.format.DateTimeFormatter
+
+class MainActivity : ServiceBoundActivity() {
+  @BindView(R.id.host)
+  lateinit var host: EditText
+
+  @BindView(R.id.port)
+  lateinit var port: EditText
+
+  @BindView(R.id.user)
+  lateinit var user: EditText
+
+  @BindView(R.id.pass)
+  lateinit var pass: EditText
+
+  @BindView(R.id.connect)
+  lateinit var connect: Button
+
+  @BindView(R.id.disconnect)
+  lateinit var disconnect: Button
+
+  @BindView(R.id.clear)
+  lateinit var clear: Button
+
+  @BindView(R.id.errorList)
+  lateinit var errorList: TextView
+
+  private val status: LiveData<ConnectionState>
+    = stickySwitchMapNotNull(backend, Backend::status, ConnectionState.DISCONNECTED)
+  private val session: LiveData<Session?>
+    = stickyMapNotNull(backend, Backend::session, null)
+
+  private var snackbar: Snackbar? = null
+
+  private val handler = { tag: String, message: String?, throwable: Throwable? ->
+    runOnUiThread {
+      errorList.append(DateTimeFormatter.ISO_TIME.format(ZonedDateTime.now(ZoneOffset.UTC)))
+      errorList.append(" ")
+      errorList.append(tag)
+      errorList.append(": ")
+      errorList.append(message)
+      errorList.append("\n")
+      if (throwable != null) {
+        errorList.append(Log.getStackTraceString(throwable))
+        errorList.append("\n")
+      }
+    }
+  }
+
+  override fun onCreate(savedInstanceState: Bundle?) {
+    setTheme(R.style.AppTheme)
+    super.onCreate(savedInstanceState)
+    setContentView(R.layout.activity_main)
+    ButterKnife.bind(this)
+
+    connect.setOnClickListener {
+      backend.value?.connect(
+        SocketAddress(host.text.toString(), port.text.toString().toShort()),
+        user.text.toString(),
+        pass.text.toString()
+      )
+    }
+
+    disconnect.setOnClickListener {
+      backend.value?.disconnect()
+    }
+
+    clear.setOnClickListener {
+      errorList.text = ""
+    }
+
+    status.observe(this, Observer {
+      val disconnected = it == ConnectionState.DISCONNECTED
+      disconnect.isEnabled = !disconnected
+      connect.isEnabled = disconnected
+
+      snackbar?.dismiss()
+      snackbar = Snackbar.make(errorList, it!!.name, Snackbar.LENGTH_SHORT)
+      snackbar?.show()
+    })
+  }
+
+  override fun onCreateOptionsMenu(menu: Menu?): Boolean {
+    menuInflater.inflate(R.menu.main, menu)
+    return super.onCreateOptionsMenu(menu)
+  }
+
+  override fun onOptionsItemSelected(item: MenuItem?) = when (item?.itemId) {
+    else -> super.onOptionsItemSelected(item)
+  }
+
+  override fun onStart() {
+    super.onStart()
+    Logger.handler = handler
+  }
+
+  override fun onStop() {
+    Logger.handler = null
+    super.onStop()
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt
new file mode 100644
index 000000000..0a78026f8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ServiceBoundActivity.kt
@@ -0,0 +1,43 @@
+package de.kuschku.quasseldroid_ng.ui
+
+import android.arch.lifecycle.MutableLiveData
+import android.content.ComponentName
+import android.content.Intent
+import android.content.ServiceConnection
+import android.os.IBinder
+import android.support.v7.app.AppCompatActivity
+import de.kuschku.quasseldroid_ng.service.QuasselService
+import de.kuschku.quasseldroid_ng.session.Backend
+
+abstract class ServiceBoundActivity : AppCompatActivity() {
+  protected val backend = MutableLiveData<Backend?>()
+
+  private val connection = object : ServiceConnection {
+    override fun onServiceDisconnected(component: ComponentName?) {
+      when (component) {
+        ComponentName(application, QuasselService::class.java) -> {
+          backend.value = null
+        }
+      }
+    }
+
+    override fun onServiceConnected(component: ComponentName?, binder: IBinder?) {
+      when (component) {
+        ComponentName(application, QuasselService::class.java) ->
+          if (binder is QuasselService.QuasselBinder) {
+            backend.value = binder.backend
+          }
+      }
+    }
+  }
+
+  override fun onStart() {
+    bindService(Intent(this, QuasselService::class.java), connection, 0)
+    super.onStart()
+  }
+
+  override fun onStop() {
+    super.onStop()
+    unbindService(connection)
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ViewIntBinder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ViewIntBinder.java
deleted file mode 100644
index afb336b43..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/ViewIntBinder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui;
-
-import android.view.View;
-import android.widget.TextView;
-
-import com.google.common.base.Function;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class ViewIntBinder {
-    private final ObservableElement<Integer> field;
-    private final Set<GeneralCallback<Integer>> callbacks = new HashSet<>();
-
-    public ViewIntBinder(ObservableElement<Integer> field) {
-        this.field = field;
-    }
-
-    public void bindBackgroundColor(View v, Function<Integer, Integer> mapper) {
-        v.setBackgroundColor(mapper.apply(field.get()));
-        GeneralCallback<Integer> callback = object -> v.setBackgroundColor(mapper.apply(object));
-        callbacks.add(callback);
-        field.addCallback(callback);
-    }
-
-    public void bindTextColor(TextView v, Function<Integer, Integer> mapper) {
-        v.setTextColor(mapper.apply(field.get()));
-        GeneralCallback<Integer> callback = object -> v.setTextColor(mapper.apply(object));
-        callbacks.add(callback);
-        field.addCallback(callback);
-    }
-
-    public void unbind() {
-        field.removeCallbacks();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigSpinnerAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigSpinnerAdapter.java
deleted file mode 100644
index 85fe0971c..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigSpinnerAdapter.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat;
-
-import android.content.res.Resources;
-import android.database.DataSetObserver;
-import android.support.annotation.Nullable;
-import android.support.v7.view.ContextThemeWrapper;
-import android.support.v7.widget.ThemedSpinnerAdapter;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-
-public class BufferViewConfigSpinnerAdapter implements ThemedSpinnerAdapter, GeneralCallback<QBufferViewManager> {
-    private final QBufferViewManager bufferViewManager;
-    private final Set<DataSetObserver> observers = new HashSet<>();
-    @Nullable
-    private Resources.Theme theme;
-
-    public BufferViewConfigSpinnerAdapter(QBufferViewManager bufferViewManager) {
-        this.bufferViewManager = bufferViewManager;
-        this.bufferViewManager.addObserver(this);
-    }
-
-    @Nullable
-    @Override
-    public Resources.Theme getDropDownViewTheme() {
-        return theme;
-    }
-
-    @Override
-    public void setDropDownViewTheme(@Nullable Resources.Theme theme) {
-        this.theme = theme;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(new ContextThemeWrapper(parent.getContext(), theme));
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QBufferViewConfig config = (QBufferViewConfig) getItem(position);
-        view.setText(config == null ? "" : config.bufferViewName());
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-        observers.add(observer);
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-        observers.remove(observer);
-    }
-
-    @Override
-    public int getCount() {
-        return bufferViewManager.bufferViewConfigs().size();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        if (position >= 0 && position < bufferViewManager.bufferViewConfigs().size())
-            return bufferViewManager.bufferViewConfigs().get(position);
-        else
-            return null;
-    }
-
-    @Override
-    public long getItemId(int position) {
-        QBufferViewConfig bufferViewConfig = (QBufferViewConfig) getItem(position);
-        if (bufferViewConfig != null)
-            return bufferViewConfig.bufferViewId();
-        else
-            return -1;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QBufferViewConfig viewConfig = (QBufferViewConfig) getItem(position);
-        view.setText(viewConfig == null ? "" : viewConfig.bufferViewName());
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return getCount() == 0;
-    }
-
-    @Override
-    public void notifyChanged(QBufferViewManager o) {
-        for (DataSetObserver observer : observers) {
-            observer.onChanged();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java
deleted file mode 100644
index 186efa71b..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChannelDetailActivity.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat;
-
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.AppCompatButton;
-import android.support.v7.widget.Toolbar;
-import android.text.method.LinkMovementMethod;
-import android.util.Log;
-import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-import de.kuschku.util.irc.chanmodes.IrcModeProvider;
-import de.kuschku.util.irc.format.IrcFormatHelper;
-import de.kuschku.util.servicebound.BoundActivity;
-
-public class ChannelDetailActivity extends BoundActivity {
-    @Bind(R.id.topic)
-    TextView topic;
-
-    @Bind(R.id.modes)
-    LinearLayout modes;
-
-    @Bind(R.id.edit_topic)
-    AppCompatButton edit_topic;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    private int buffer;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        buffer = getIntent().getIntExtra("buffer", -1);
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_channel_detail);
-        ButterKnife.bind(this);
-    }
-
-    @Override
-    protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
-        super.onConnectToThread(thread);
-
-        Client client = context.client();
-        if (client == null) return;
-
-        ChannelBuffer buffer = (ChannelBuffer) client.bufferManager().buffer(this.buffer);
-        if (buffer == null) return;
-
-        QIrcChannel channel = buffer.getChannel();
-        if (channel == null) return;
-
-        if (channel.topic() == null) {
-            topic.setText(R.string.labelNoTopic);
-            topic.setTextColor(context.themeUtil().res.colorForegroundSecondary);
-            topic.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
-        } else {
-            topic.setText(new IrcFormatHelper(context).formatIrcMessage(context.client(), channel.topic(), buffer.getInfo(), v -> finish()));
-            topic.setMovementMethod(LinkMovementMethod.getInstance());
-            topic.setTextColor(context.themeUtil().res.colorForeground);
-            topic.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
-        }
-
-        toolbar.setTitle(channel.name());
-        setSupportActionBar(toolbar);
-
-        modes.removeAllViews();
-        IrcModeProvider provider = channel.network().modeProvider();
-
-        String myModes = channel.userModes(channel.network().me());
-        boolean isOp = false;
-        for (String c : channel.network().prefixModes()) {
-            if (!c.equalsIgnoreCase("v") && myModes.contains(c)) {
-                isOp = true;
-                break;
-            }
-        }
-
-        boolean topicEditable = true;
-        for (char c : channel.modeList()) {
-            ChanMode mode = provider.modeFromChar(c);
-            QNetwork.ChannelModeType type = channel.network().channelModeType(c);
-            if (mode != null) {
-                if (type == QNetwork.ChannelModeType.A_CHANMODE) {
-                    // TODO: Implement a proper display for these
-                } else if (type == QNetwork.ChannelModeType.B_CHANMODE || type == QNetwork.ChannelModeType.C_CHANMODE || type == QNetwork.ChannelModeType.D_CHANMODE) {
-                    View v = getLayoutInflater().inflate(R.layout.widget_channel_mode, modes, false);
-                    TextView name = (TextView) v.findViewById(R.id.name);
-                    TextView description = (TextView) v.findViewById(R.id.description);
-                    TextView value = (TextView) v.findViewById(R.id.value);
-
-                    String modeName = context.themeUtil().chanModes.chanModeToName(mode);
-                    name.setText(String.format("%s (+%s)", modeName, c));
-
-                    String modeDescription = context.themeUtil().chanModes.chanModeToDescription(mode);
-                    description.setText(modeDescription);
-
-                    String modeValue = channel.modeValue(c);
-
-                    if (modeValue != null && !modeValue.isEmpty()) {
-                        value.setText(modeValue);
-                        value.setVisibility(View.VISIBLE);
-                    }
-
-                    modes.addView(v);
-
-                    if (mode == ChanMode.RESTRICT_TOPIC) topicEditable = isOp;
-                }
-            } else {
-                Log.d("libquassel", "Couldn’t find mode " + c + " for IRCd" + provider.getClass().getSimpleName());
-            }
-        }
-
-        edit_topic.setVisibility(topicEditable ? View.VISIBLE : View.GONE);
-
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
deleted file mode 100644
index 5089d088c..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java
+++ /dev/null
@@ -1,657 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat;
-
-import android.app.SearchManager;
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.AppCompatEditText;
-import android.support.v7.widget.AppCompatSpinner;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SearchView;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.Toast;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-import com.jakewharton.rxbinding.support.v7.widget.RxSearchView;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.BufferChangeEvent;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.CoreSetupRequiredEvent;
-import de.kuschku.libquassel.events.GeneralErrorEvent;
-import de.kuschku.libquassel.events.LoginRequireEvent;
-import de.kuschku.libquassel.events.UnknownCertificateEvent;
-import de.kuschku.libquassel.functions.types.HandshakeFunction;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer;
-import de.kuschku.libquassel.localtypes.buffers.QueryBuffer;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.objects.types.CoreSetupData;
-import de.kuschku.libquassel.objects.types.SetupData;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
-import de.kuschku.quasseldroid_ng.ui.chat.dialogs.CoreInfoDialogBuilder;
-import de.kuschku.quasseldroid_ng.ui.chat.drawer.ActionModeHandler;
-import de.kuschku.quasseldroid_ng.ui.chat.drawer.BufferViewConfigAdapter;
-import de.kuschku.quasseldroid_ng.ui.chat.fragment.ChatFragment;
-import de.kuschku.quasseldroid_ng.ui.chat.fragment.LoadingFragment;
-import de.kuschku.quasseldroid_ng.ui.chat.nicklist.NickListAdapter;
-import de.kuschku.quasseldroid_ng.ui.chat.util.Status;
-import de.kuschku.quasseldroid_ng.ui.coresettings.aliases.AliasListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.chatlist.ChatListListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.identity.IdentityListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.IgnoreListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.NetworkListActivity;
-import de.kuschku.quasseldroid_ng.ui.settings.SettingsActivity;
-import de.kuschku.quasseldroid_ng.ui.setup.CoreSetupActivity;
-import de.kuschku.util.CompatibilityUtils;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.accounts.AccountManager;
-import de.kuschku.util.annotationbind.AutoBinder;
-import de.kuschku.util.certificates.CertificateUtils;
-import de.kuschku.util.certificates.SQLiteCertificateManager;
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-import de.kuschku.util.ui.MenuTint;
-import rx.android.schedulers.AndroidSchedulers;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class MainActivity extends BoundActivity {
-    public static final int REQUEST_CODE_CORESETUP = 1;
-    /**
-     * This object encapsulates the current status of the activity – opened bufferview, for example
-     */
-    private final Status status = new Status();
-
-    /**
-     * Host layout for content fragment, for example showing a loader or the chat
-     */
-    @Bind(R.id.chatList)
-    RecyclerView chatList;
-
-    @Bind(R.id.nickList)
-    RecyclerView nickList;
-
-    @Bind(R.id.chatListSpinner)
-    AppCompatSpinner chatListSpinner;
-
-    @Bind(R.id.chatListToolbar)
-    Toolbar chatListToolbar;
-
-    @Nullable
-    @Bind(R.id.drawer_layout)
-    DrawerLayout drawerLayout;
-
-    /**
-     * Main ActionBar
-     */
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    private AccountManager manager;
-
-    private ToolbarWrapper toolbarWrapper;
-
-    private BufferViewConfigAdapter chatListAdapter;
-    private Fragment currentFragment;
-
-    private Bundle coreSetupResult;
-    private boolean coreSetupCancelled;
-    private CoreInfoDialogBuilder coreInfoDialogBuilder;
-    private NickListAdapter nickListAdapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-        ButterKnife.bind(this);
-        toolbarWrapper = new ToolbarWrapper(toolbar);
-        toolbarWrapper.setOnClickListener(v -> {
-            if (context.client() != null) {
-                int id = context.client().backlogManager().open();
-                Buffer buffer = context.client().bufferManager().buffer(id);
-                if (buffer instanceof ChannelBuffer) {
-                    Intent intent = new Intent(this, ChannelDetailActivity.class);
-                    intent.putExtra("buffer", id);
-                    startActivity(intent);
-                }
-            }
-        });
-        setSupportActionBar(toolbar);
-        chatListAdapter = BufferViewConfigAdapter.of(context);
-        chatListAdapter.setBufferClickListener(buffer -> {
-            if (context.client() != null) {
-                context.client().backlogManager().open(buffer.getInfo().id);
-                if (drawerLayout != null)
-                    drawerLayout.closeDrawer(GravityCompat.START);
-            }
-        });
-        chatListAdapter.setActionModeHandler(new ActionModeHandler(this, R.id.cab_stub));
-        chatListAdapter.setRecyclerView(chatList);
-        chatList.setItemAnimator(new DefaultItemAnimator());
-        chatList.setLayoutManager(new LinearLayoutManager(this));
-        chatList.setAdapter(chatListAdapter);
-
-        coreInfoDialogBuilder = new CoreInfoDialogBuilder(this);
-
-        chatListToolbar.inflateMenu(R.menu.chatlist);
-        MenuTint.colorIcons(chatListToolbar.getMenu(), AutoBinder.obtainColor(R.attr.colorFill, chatListToolbar.getContext().getTheme()));
-        chatListToolbar.setOnMenuItemClickListener(item -> {
-            switch (item.getItemId()) {
-                case R.id.action_show_all: {
-                    item.setChecked(chatListAdapter.toggleShowAll());
-                }
-                break;
-                case R.id.action_manage_chat_lists: {
-                    startActivity(new Intent(this, ChatListListActivity.class));
-                }
-            }
-            return false;
-        });
-
-        DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
-        if (drawerLayout != null) {
-            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.material_drawer_open, R.string.material_drawer_close);
-            toggle.syncState();
-            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
-        }
-
-        replaceFragment(new LoadingFragment());
-
-        if (savedInstanceState != null)
-            status.onRestoreInstanceState(savedInstanceState);
-
-        manager = new AccountManager(this);
-
-        nickListAdapter = new NickListAdapter(context);
-        nickList.setAdapter(nickListAdapter);
-        nickList.setLayoutManager(new LinearLayoutManager(this));
-        nickList.setItemAnimator(new DefaultItemAnimator());
-        nickList.addItemDecoration(new DividerItemDecoration(this));
-
-        setStatusBar();
-    }
-
-    private void setStatusBar() {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            Window window = getWindow();
-            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
-            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
-            window.setStatusBarColor(getResources().getColor(android.R.color.transparent));
-
-            nickList.setPadding(0, CompatibilityUtils.getStatusBarHeight(this), 0, 0);
-
-            View viewById = findViewById(R.id.statusBarBackground);
-            ViewGroup.LayoutParams layoutParams = viewById.getLayoutParams();
-            layoutParams.height = CompatibilityUtils.getStatusBarHeight(this);
-            viewById.setLayoutParams(layoutParams);
-        }
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        if (context.client() != null) {
-            context.client().backlogManager().setOpen(-1);
-            context.client().backlogStorage().markBufferUnused(context.client().backlogManager().open());
-        }
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-        if (context.client() != null)
-            context.client().backlogManager().open(status.bufferId);
-    }
-
-    private void replaceFragment(Fragment fragment) {
-        try {
-            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
-            this.currentFragment = fragment;
-            transaction.replace(R.id.content_host, fragment);
-            transaction.commit();
-        } catch (IllegalStateException ignored) {
-        }
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        assertNotNull(outState);
-
-        super.onSaveInstanceState(outState);
-        status.onSaveInstanceState(outState);
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Bundle savedInstanceState) {
-        assertNotNull(savedInstanceState);
-
-        super.onRestoreInstanceState(savedInstanceState);
-        status.onRestoreInstanceState(savedInstanceState);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.chat, menu);
-        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
-        SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
-        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
-        RxSearchView.queryTextChanges(searchView)
-                .debounce(400, TimeUnit.MILLISECONDS)
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(charSequence -> {
-                    if (context.client() != null && context.client().connectionStatus() == ConnectionChangeEvent.Status.CONNECTED)
-                        context.client().backlogStorage().getFilter(context.client().backlogManager().open()).setQuery(charSequence);
-                });
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    protected void onDestroy() {
-        chatListAdapter.selectConfig(-1);
-        toolbarWrapper.setOnClickListener(null);
-        chatListAdapter.setBufferClickListener(null);
-        chatListSpinner.setOnItemSelectedListener(null);
-        chatListToolbar.setOnMenuItemClickListener(null);
-        super.onDestroy();
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_hide_events:
-                displayFilterDialog();
-                return true;
-            case R.id.action_reauth:
-                reauth();
-                return true;
-            case R.id.action_settings:
-                startActivity(new Intent(this, SettingsActivity.class));
-                return true;
-            case R.id.action_identities:
-                startActivity(new Intent(this, IdentityListActivity.class));
-                return true;
-            case R.id.action_networks:
-                startActivity(new Intent(this, NetworkListActivity.class));
-                return true;
-            case R.id.action_ignorelist:
-                startActivity(new Intent(this, IgnoreListActivity.class));
-                return true;
-            case R.id.action_aliaslist:
-                startActivity(new Intent(this, AliasListActivity.class));
-                return true;
-            case R.id.action_coreinfo:
-                if (context.client() != null && context.client().coreInfo() != null)
-                    coreInfoDialogBuilder.build(manager.account(context.settings().preferenceLastAccount.get()), context.client().coreInfo(), context.client().certificateChain()).show();
-                return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void reauth() {
-        context.settings().preferenceLastAccount.set("");
-        stopConnection();
-        finish();
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(ConnectionChangeEvent event) {
-        onConnectionChange(event.status);
-    }
-
-    public void onConnectionChange(ConnectionChangeEvent.Status status) {
-        if (status == ConnectionChangeEvent.Status.CONNECTED) {
-            replaceFragment(new ChatFragment());
-            connected();
-        } else if (status == ConnectionChangeEvent.Status.DISCONNECTED) {
-            Toast.makeText(getApplication(), context.themeUtil().translations.statusDisconnected, Toast.LENGTH_LONG).show();
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(GeneralErrorEvent event) {
-        Toast.makeText(getApplication(), event.exception.getClass().getSimpleName() + ": " + event.debugInfo, Toast.LENGTH_LONG).show();
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(BufferChangeEvent event) {
-        Client client = context.client();
-        if (client != null) {
-            QBacklogManager backlogManager = client.backlogManager();
-            int id = backlogManager.open();
-            status.bufferId = id;
-            updateBuffer(id);
-            chatListAdapter.setOpen(id);
-        }
-    }
-
-    private void updateBuffer(int id) {
-        nickListAdapter.setChannel(null);
-        updateTitleAndSubtitle(id);
-    }
-
-    private void updateTitleAndSubtitle(int id) {
-        Client client = context.client();
-        if (client != null) {
-            Buffer buffer = client.bufferManager().buffer(id);
-            if (buffer != null) {
-                toolbarWrapper.setTitle(buffer.getName());
-                if (buffer instanceof QueryBuffer) {
-                    QIrcUser user = ((QueryBuffer) buffer).getUser();
-                    if (user == null) {
-                        toolbarWrapper.setSubtitle(null);
-                    } else {
-                        toolbarWrapper.setSubtitle(user.realName());
-                    }
-                } else if (buffer instanceof ChannelBuffer) {
-                    QIrcChannel channel = ((ChannelBuffer) buffer).getChannel();
-                    nickListAdapter.setChannel(channel);
-                    if (channel == null) {
-                        toolbarWrapper.setSubtitle(null);
-                    } else {
-                        toolbarWrapper.setSubtitle(context.deserializer().formatString(channel.topic()));
-                    }
-                } else {
-                    toolbarWrapper.setSubtitle(null);
-                }
-            }
-        }
-    }
-
-    /*
-    private void updateBufferViewConfigs() {
-        assertNotNull(context.client().bufferViewManager());
-        List<QBufferViewConfig> bufferViews = context.client().bufferViewManager().bufferViewConfigs();
-        accountHeader.clear();
-        for (QBufferViewConfig viewConfig : bufferViews) {
-            if (viewConfig != null) {
-                if (status.bufferViewConfigId == -1) {
-                    status.bufferViewConfigId = viewConfig.bufferViewId();
-                }
-                accountHeader.addProfiles(
-                        new ProfileDrawerItem()
-                                .withName(viewConfig.bufferViewName())
-                                .withIdentifier(viewConfig.bufferViewId())
-                );
-            }
-        }
-        accountHeader.setActiveProfile(status.bufferViewConfigId, true);
-    }
-    */
-
-    @Override
-    public void onBackPressed() {
-        if ((currentFragment instanceof ChatFragment && ((ChatFragment) currentFragment).onBackPressed())) {
-            return;
-        }
-        super.onBackPressed();
-    }
-
-    protected void reconnect() {
-        binder.stopBackgroundThread();
-        connectToServer(manager.account(context.settings().preferenceLastAccount.get()));
-    }
-
-    @Override
-    protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
-        super.onConnectToThread(thread);
-        if (thread == null) {
-            Account account = manager.account(context.settings().preferenceLastAccount.get());
-            if (account != null) {
-                connectToServer(account);
-            } else {
-                setResult(RESULT_CANCELED);
-                finish();
-            }
-        }
-        else {
-            if (context.client() != null && context.client().connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) {
-                connected();
-            }
-        }
-    }
-
-    private void connected() {
-        if (drawerLayout != null)
-            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
-
-        context.client().bufferManager().bufferIds().addCallback(new ElementCallback<Integer>() {
-            @Override
-            public void notifyItemInserted(Integer element) {
-
-            }
-
-            @Override
-            public void notifyItemRemoved(Integer element) {
-
-            }
-
-            @Override
-            public void notifyItemChanged(Integer element) {
-                if (element == context.client().backlogManager().open())
-                    updateTitleAndSubtitle(element);
-            }
-        });
-        context.client().backlogManager().open(status.bufferId);
-        if (context.client().bufferViewManager() != null) {
-            chatListSpinner.setAdapter(new BufferViewConfigSpinnerAdapter(context.client().bufferViewManager()));
-            chatListSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
-                @Override
-                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                    chatListAdapter.selectConfig((int) id);
-                    status.bufferViewConfigId = (int) id;
-                }
-
-                @Override
-                public void onNothingSelected(AdapterView<?> parent) {
-                    chatListAdapter.selectConfig(-1);
-                }
-            });
-        }
-        updateBuffer(context.client().backlogManager().open());
-        chatListSpinner.setSelection(chatListAdapter.indexOf(status.bufferViewConfigId));
-    }
-
-    // FIXME: Fix this ugly hack
-    public void displayFilterDialog() {
-        if (context.client() != null) {
-            List<Integer> filterSettings = Arrays.asList(
-                    Message.Type.Join.value,
-                    Message.Type.Part.value,
-                    Message.Type.Quit.value,
-                    Message.Type.Nick.value,
-                    Message.Type.Mode.value,
-                    Message.Type.Topic.value
-            );
-            int[] filterSettingsInts = new int[filterSettings.size()];
-            for (int i = 0; i < filterSettingsInts.length; i++) {
-                filterSettingsInts[i] = filterSettings.get(i);
-            }
-
-            int bufferId = context.client().backlogManager().open();
-            int oldFilters = context.client().bufferSyncer().getFilters(bufferId);
-            List<Integer> oldFiltersList = new ArrayList<>();
-            for (int type : filterSettings) {
-                if ((type & oldFilters) != 0)
-                    oldFiltersList.add(filterSettings.indexOf(type));
-            }
-            Integer[] selectedIndices = oldFiltersList.toArray(new Integer[oldFiltersList.size()]);
-            new MaterialDialog.Builder(this)
-                    .items(
-                            "Joins",
-                            "Parts",
-                            "Quits",
-                            "Nick Changes",
-                            "Mode Changes",
-                            "Topic Changes"
-                    )
-                    .itemsIds(filterSettingsInts)
-                    .itemsCallbackMultiChoice(
-                            selectedIndices,
-                            (dialog, which, text) -> false
-                    )
-                    .positiveText("Select")
-                    .negativeText("Cancel")
-                    .onPositive((dialog, which) -> {
-                        int filters = 0x00000000;
-                        if (dialog.getSelectedIndices() != null)
-                            for (int i : dialog.getSelectedIndices()) {
-                                int settingsid = filterSettings.get(i);
-                                filters |= settingsid;
-                                if (settingsid == Message.Type.Quit.value)
-                                    filters |= Message.Type.NetsplitQuit.value;
-                                else if (settingsid == Message.Type.Join.value)
-                                    filters |= Message.Type.NetsplitJoin.value;
-                            }
-                        context.client().bufferSyncer().setFilters(bufferId, filters);
-                    })
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColor(context.themeUtil().res.colorBackgroundCard)
-                    .contentColor(context.themeUtil().res.colorForeground)
-                    .build()
-                    .show();
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case REQUEST_CODE_CORESETUP: {
-                if (resultCode == RESULT_OK) {
-                    coreSetupResult = data.getExtras();
-                } else {
-                    coreSetupCancelled = true;
-                }
-            }
-            break;
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(@NonNull UnknownCertificateEvent event) {
-        new MaterialDialog.Builder(this)
-                .content(context.themeUtil().translations.warningCertificate + "\n" + CertificateUtils.certificateToFingerprint(event.certificate, ""))
-                .title("Unknown Certificate")
-                .onPositive((dialog, which) -> {
-                    new SQLiteCertificateManager(this).addCertificate(event.certificate, event.address);
-                    reconnect();
-                })
-                .negativeColor(context.themeUtil().res.colorForeground)
-                .positiveText("Yes")
-                .negativeText("No")
-                .backgroundColor(context.themeUtil().res.colorBackgroundCard)
-                .contentColor(context.themeUtil().res.colorForeground)
-                .build()
-                .show();
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(CoreSetupRequiredEvent event) {
-        if (coreSetupCancelled) {
-            finish();
-        } else if (coreSetupResult != null) {
-            context.provider().event.removeStickyEvent(CoreSetupRequiredEvent.class);
-
-            Account account = manager.account(context.settings().preferenceLastAccount.get());
-            Bundle config = coreSetupResult.getBundle("config");
-            Map<String, QVariant> configData = new HashMap<>();
-            for (String key : config.keySet()) {
-                configData.put(key, new QVariant<>(config.get(key)));
-            }
-            context.provider().dispatch(new HandshakeFunction(new CoreSetupData(new SetupData(
-                    account.user,
-                    account.pass,
-                    coreSetupResult.getString("selectedBackend"),
-                    configData
-            ))));
-        } else {
-            Intent intent = new Intent(getApplicationContext(), CoreSetupActivity.class);
-            intent.putExtra("storageBackends", context.client().core().getStorageBackendsAsBundle());
-            startActivityForResult(intent, REQUEST_CODE_CORESETUP);
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(LoginRequireEvent event) {
-        if (event.failedLast) {
-            new MaterialDialog.Builder(this)
-                    .title(R.string.titleLogin)
-                    .customView(R.layout.dialog_login, false)
-                    .onPositive((dialog1, which) -> {
-                        View parent = dialog1.getCustomView();
-                        assertNotNull(parent);
-                        AppCompatEditText usernameField = (AppCompatEditText) parent.findViewById(R.id.username);
-                        AppCompatEditText passwordField = (AppCompatEditText) parent.findViewById(R.id.password);
-                        String username = usernameField.getText().toString();
-                        String password = passwordField.getText().toString();
-
-                        Account account = manager.account(context.settings().preferenceLastAccount.get());
-                        manager.update(account.withLoginData(username, password));
-                    })
-                    .cancelListener(dialog1 -> finish())
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .positiveText(R.string.actionLogin)
-                    .negativeText(R.string.actionCancel)
-                    .backgroundColor(context.themeUtil().res.colorBackgroundCard)
-                    .contentColor(context.themeUtil().res.colorForeground)
-                    .build().show();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarWrapper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarWrapper.java
deleted file mode 100644
index 1ad1f2fdf..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarWrapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat;
-
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v7.widget.Toolbar;
-import android.view.View;
-import android.widget.TextView;
-
-import de.kuschku.quasseldroid_ng.R;
-
-public class ToolbarWrapper {
-    private final TextView title;
-    private final TextView subtitle;
-    private final View actionArea;
-
-    public ToolbarWrapper(Toolbar toolbar) {
-        this.title = (TextView) toolbar.findViewById(R.id.toolbar_title);
-        this.subtitle = (TextView) toolbar.findViewById(R.id.toolbar_subtitle);
-        this.actionArea = toolbar.findViewById(R.id.toolbar_action_area);
-    }
-
-    public void setTitle(@StringRes int id) {
-        title.setText(id);
-    }
-
-    public void setTitle(@Nullable CharSequence text) {
-        title.setText(text);
-    }
-
-    public void setSubtitle(@StringRes int id) {
-        subtitle.setText(id);
-    }
-
-    public void setSubtitle(@Nullable CharSequence text) {
-        subtitle.setText(text);
-        subtitle.setVisibility(text == null ? View.GONE : View.VISIBLE);
-    }
-
-    public void setOnClickListener(View.OnClickListener listener) {
-        actionArea.setOnClickListener(listener);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
deleted file mode 100644
index 028db19ee..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/ChatMessageRenderer.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.chatview;
-
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.IrcUserUtils;
-import de.kuschku.util.irc.format.IrcFormatHelper;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@UiThread
-public class ChatMessageRenderer {
-
-    @NonNull
-    private final AppContext context;
-    private IrcFormatHelper helper;
-
-    public ChatMessageRenderer(@NonNull AppContext context) {
-        this.context = context;
-        setTheme(context);
-    }
-
-    public void setTheme(@NonNull AppContext context) {
-        this.helper = new IrcFormatHelper(context);
-    }
-
-    @NonNull
-    private CharSequence formatNick(@NonNull String hostmask, boolean full) {
-        CharSequence formattedNick = helper.formatUserNick(IrcUserUtils.getNick(hostmask));
-        if (full) {
-            return context.themeUtil().translations.formatUsername(formattedNick, IrcUserUtils.getMask(hostmask));
-        } else {
-            return formattedNick;
-        }
-    }
-
-    @NonNull
-    private CharSequence formatNick(@NonNull String hostmask) {
-        return formatNick(hostmask, context.settings().preferenceHostmask.or(false));
-    }
-
-    @NonNull
-    private CharSequence getBufferName(@NonNull Message message) {
-        assertNotNull(context.client());
-        Buffer buffer = context.client().bufferManager().buffer(message.bufferInfo.id);
-        assertNotNull(buffer);
-        String name = buffer.getName();
-        assertNotNull(name);
-        return name;
-    }
-
-    private void onBindPlain(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(
-                context.themeUtil().translations.formatPlain(
-                        formatNick(message.sender, false),
-                        helper.formatIrcMessage(context.client(), message)
-                )
-        );
-    }
-
-    private void onBindNotice(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(context.themeUtil().translations.formatAction(
-                formatNick(message.sender, false),
-                helper.formatIrcMessage(context.client(), message)
-        ));
-    }
-
-    private void onBindAction(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(
-                context.themeUtil().translations.formatAction(
-                        formatNick(message.sender, false),
-                        helper.formatIrcMessage(context.client(), message)
-                )
-        );
-    }
-
-    private void onBindNick(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        // FIXME: Ugly hack to get around the issue that quasselcore doesn’t set the Self flag
-        boolean self = message.flags.Self || message.sender.equals(message.content);
-        if (self)
-            holder.content.setText(context.themeUtil().translations.formatNick(
-                    formatNick(message.sender, false)
-            ));
-        else
-            holder.content.setText(context.themeUtil().translations.formatNick(
-                    formatNick(message.sender, false),
-                    helper.formatUserNick(message.content)
-            ));
-    }
-
-    // TODO: Replace this with better display of mode changes
-    private void onBindMode(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(context.themeUtil().translations.formatMode(
-                message.content,
-                formatNick(message.sender, false)
-        ));
-    }
-
-    private void onBindJoin(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(context.themeUtil().translations.formatJoin(
-                formatNick(message.sender),
-                getBufferName(message)
-        ));
-    }
-
-    private void onBindPart(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(context.themeUtil().translations.formatPart(
-                formatNick(message.sender),
-                getBufferName(message),
-                message.content
-        ));
-    }
-
-    private void onBindQuit(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        if (message.content == null || message.content.isEmpty())
-            holder.content.setText(context.themeUtil().translations.formatQuit(
-                    formatNick(message.sender)
-            ));
-        else
-            holder.content.setText(context.themeUtil().translations.formatQuit(
-                    formatNick(message.sender),
-                    message.content
-            ));
-    }
-
-    private void onBindKick(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        if (message.content.contains(" "))
-            holder.content.setText(context.themeUtil().translations.formatKick(
-                    formatNick(message.sender),
-                    message.content.substring(0, message.content.indexOf(" ")),
-                    getBufferName(message),
-                    message.content.substring(message.content.indexOf(" ") + 1)
-            ));
-        else
-            holder.content.setText(context.themeUtil().translations.formatKick(
-                    formatNick(message.sender),
-                    message.content,
-                    getBufferName(message)
-            ));
-    }
-
-    private void onBindKill(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        if (message.content.contains(" "))
-            holder.content.setText(context.themeUtil().translations.formatKill(
-                    formatNick(message.sender),
-                    message.content.substring(0, message.content.indexOf(" ")),
-                    message.content.substring(message.content.indexOf(" ") + 1)
-            ));
-        else
-            holder.content.setText(context.themeUtil().translations.formatKill(
-                    formatNick(message.sender),
-                    message.content
-            ));
-    }
-
-    private void onBindServer(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.content);
-    }
-
-    private void onBindInfo(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.content);
-    }
-
-    private void onBindError(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.content);
-    }
-
-    private void onBindDayChange(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(context.themeUtil().translations.formatDayChange(
-                context.themeUtil().formatter.getLongDateFormatter().print(message.time)
-        ));
-    }
-
-    private void onBindTopic(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.content);
-    }
-
-    private void onBindNetsplitJoin(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.toString());
-    }
-
-    private void onBindNetsplitQuit(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.toString());
-    }
-
-    private void onBindInvite(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        holder.content.setText(message.toString());
-    }
-
-    public void onBind(@NonNull MessageViewHolder holder, @NonNull Message message) {
-        switch (message.type) {
-            case Plain:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindPlain(holder, message);
-                break;
-            case Notice:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindNotice(holder, message);
-                break;
-            case Action:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindAction(holder, message);
-                break;
-            case Nick:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindNick(holder, message);
-                break;
-            case Mode:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindMode(holder, message);
-                break;
-            case Join:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindJoin(holder, message);
-                break;
-            case Part:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindPart(holder, message);
-                break;
-            case Quit:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindQuit(holder, message);
-                break;
-            case Kick:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindKick(holder, message);
-                break;
-            case Kill:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindKill(holder, message);
-                break;
-            case Server:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindServer(holder, message);
-                break;
-            case Info:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindInfo(holder, message);
-                break;
-            case Error:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindError(holder, message);
-                break;
-            case DayChange:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindDayChange(holder, message);
-                break;
-            case Topic:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindTopic(holder, message);
-                break;
-            case NetsplitJoin:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindNetsplitJoin(holder, message);
-                break;
-            case NetsplitQuit:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindNetsplitQuit(holder, message);
-                break;
-            case Invite:
-                holder.time.setText(context.themeUtil().formatter.getTimeFormatter().print(message.time));
-                onBindInvite(holder, message);
-                break;
-            case Markerline:
-                holder.itemView.setBackgroundResource(R.color.md_red_700);
-                break;
-        }
-    }
-
-    public
-    @LayoutRes
-    int getLayoutRes(Message.Type type) {
-        switch (type) {
-            default:
-            case Plain:
-                return R.layout.widget_chatmessage_plain;
-            case Action:
-                return R.layout.widget_chatmessage_action;
-            case Nick:
-            case Notice:
-            case Mode:
-            case Join:
-            case Part:
-            case Quit:
-            case Kick:
-            case Kill:
-            case Server:
-            case Info:
-            case DayChange:
-            case Topic:
-            case NetsplitJoin:
-            case NetsplitQuit:
-            case Invite:
-                return R.layout.widget_chatmessage_server;
-            case Markerline:
-                return R.layout.widget_chatmessage_markerline;
-            case Error:
-                return R.layout.widget_chatmessage_error;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageAdapter.java
deleted file mode 100644
index f058cc4f3..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageAdapter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.chatview;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.observables.AutoScroller;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-import de.kuschku.util.observables.lists.IObservableList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@UiThread
-public class MessageAdapter extends RecyclerView.Adapter<MessageViewHolder> {
-    @NonNull
-    private final ChatMessageRenderer renderer;
-    @NonNull
-    private final LayoutInflater inflater;
-    @NonNull
-    private final UICallback callback;
-    @NonNull
-    private final AppContext context;
-    @Nullable
-    private IObservableList<UICallback, Message> messageList = null;
-
-    public MessageAdapter(@NonNull Context ctx, @NonNull AppContext context, @Nullable AutoScroller scroller) {
-        this.context = context;
-        this.inflater = LayoutInflater.from(ctx);
-        this.renderer = new ChatMessageRenderer(context);
-        this.callback = new AdapterUICallbackWrapper(this, scroller);
-    }
-
-    public void setMessageList(@Nullable AndroidObservableSortedList<Message> messageList) {
-        if (this.messageList != null)
-            this.messageList.removeCallback(callback);
-        this.messageList = messageList;
-        if (this.messageList != null)
-            this.messageList.addCallback(callback);
-        notifyDataSetChanged();
-    }
-
-    @NonNull
-    @Override
-    public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        boolean highlightFlag = viewType % 2 == 1;
-        Message.Type actualType = Message.Type.fromId(viewType >> 1);
-        return new MessageViewHolder(context, inflater.inflate(renderer.getLayoutRes(actualType), parent, false), highlightFlag);
-    }
-
-    @Override
-    public void onBindViewHolder(@NonNull MessageViewHolder holder, int position) {
-        Message msg = getItem(position);
-        assertNotNull(msg);
-
-        renderer.onBind(holder, msg);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        Message message = getItem(position);
-        Message.Type type = message.type;
-        int highlightFlag = message.flags.Highlight ? 1 : 0;
-        return type.value << 1 | highlightFlag;
-    }
-
-    @Override
-    public int getItemCount() {
-        return messageList != null ? messageList.size() : 0;
-    }
-
-    public Message getItem(int position) {
-        return messageList != null ? messageList.get(position) : null;
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return getItem(position).id;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageViewHolder.java
deleted file mode 100644
index 869b8858e..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/chatview/MessageViewHolder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.chatview;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-import android.support.v7.widget.RecyclerView;
-import android.text.method.LinkMovementMethod;
-import android.view.View;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-@UiThread
-public class MessageViewHolder extends RecyclerView.ViewHolder {
-    @SuppressWarnings("NullableProblems")
-    @NonNull
-    @Bind(R.id.time)
-    TextView time;
-
-    @SuppressWarnings("NullableProblems")
-    @NonNull
-    @Bind(R.id.content)
-    TextView content;
-
-    public MessageViewHolder(@NonNull AppContext context, @NonNull View itemView, boolean highlightFlag) {
-        super(itemView);
-        ButterKnife.bind(this, itemView);
-        content.setMovementMethod(LinkMovementMethod.getInstance());
-
-        if (highlightFlag) {
-            itemView.setBackgroundColor(context.themeUtil().res.colorBackgroundHighlight);
-            content.setTextColor(context.themeUtil().res.colorForegroundHighlight);
-            time.setTextColor(context.themeUtil().res.colorForegroundHighlight);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/dialogs/CoreInfoDialogBuilder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/dialogs/CoreInfoDialogBuilder.java
deleted file mode 100644
index 90d06a355..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/dialogs/CoreInfoDialogBuilder.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.dialogs;
-
-import android.content.Context;
-import android.text.Html;
-import android.text.format.DateUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.TextView;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import org.cryptacular.x509.dn.NameReader;
-import org.cryptacular.x509.dn.StandardAttributeType;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.X509Certificate;
-import java.util.Locale;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.CoreInfo;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.certificates.CertificateUtils;
-
-public class CoreInfoDialogBuilder {
-    private Context context;
-
-    public CoreInfoDialogBuilder(Context context) {
-        this.context = context;
-    }
-
-    public MaterialDialog build(Account account, CoreInfo coreInfo, X509Certificate[] certificateChain) {
-        View view = LayoutInflater.from(context).inflate(R.layout.dialog_coreinfo, null);
-        CoreInfoViewHolder holder = new CoreInfoViewHolder(view);
-        holder.bind(account, coreInfo, certificateChain);
-
-        return new MaterialDialog.Builder(context)
-                .customView(view, true)
-                .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                .positiveColorAttr(R.attr.colorAccent)
-                .positiveText(R.string.actionClose)
-                .build();
-    }
-
-    private String issuerCN(X509Certificate certificate) {
-        return new NameReader(certificate).readIssuer().getValue(StandardAttributeType.CommonName);
-    }
-
-    class CoreInfoViewHolder {
-        @Bind(R.id.address)
-        TextView address;
-
-        @Bind(R.id.verified)
-        TextView verified;
-
-        @Bind(R.id.fingerprint)
-        TextView fingerprint;
-
-        @Bind(R.id.coreVersion)
-        TextView coreVersion;
-
-        @Bind(R.id.coreBuildDate)
-        TextView coreBuildDate;
-
-        @Bind(R.id.uptime)
-        TextView uptime;
-
-        @Bind(R.id.connected)
-        TextView connected;
-
-        public CoreInfoViewHolder(View view) {
-            ButterKnife.bind(this, view);
-        }
-
-        public void bind(Account account, CoreInfo coreInfo, X509Certificate[] certificateChain) {
-            address.setText(String.format(Locale.US, "%s:%d", account.host, account.port));
-            if (certificateChain != null) {
-                verified.setText(context.getString(R.string.labelCoreVerifier, issuerCN(certificateChain[0])));
-                try {
-                    fingerprint.setText(CertificateUtils.certificateToFingerprint(certificateChain[0]));
-                } catch (NoSuchAlgorithmException | CertificateEncodingException e) {
-                    fingerprint.setVisibility(View.GONE);
-                }
-            }
-            coreVersion.setText(Html.fromHtml(coreInfo.quasselVersion()));
-            coreBuildDate.setText(coreInfo.quasselBuildDate());
-            uptime.setText(context.getString(R.string.labelCoreUptimeValue, DateUtils.getRelativeTimeSpanString(context, coreInfo.startTime().getMillis())));
-            connected.setText(context.getString(R.string.labelCoreConnectedCientsValue, coreInfo.sessionConnectedClients()));
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java
deleted file mode 100644
index a6db50475..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/ActionModeHandler.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import android.support.annotation.IdRes;
-import android.support.v7.app.AppCompatActivity;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.afollestad.materialcab.MaterialCab;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.quasseldroid_ng.R;
-
-public class ActionModeHandler implements MaterialCab.Callback {
-    private final AppCompatActivity activity;
-    private final MaterialCab cab;
-    private final Set<Buffer> selectedChildren = new HashSet<>();
-    private final Set<NetworkItem> selectedParents = new HashSet<>();
-    private Menu actionModeMenu;
-
-    public ActionModeHandler(AppCompatActivity activity, @IdRes int stub) {
-        this.activity = activity;
-        cab = new MaterialCab(activity, stub);
-    }
-
-    public boolean isActive() {
-        return cab.isActive();
-    }
-
-
-    public void start() {
-        //cab.start(this);
-    }
-
-    public void toggle(Buffer buffer) {
-        /*
-        if (selectedChildren.contains(buffer))
-            selectedChildren.remove(buffer);
-        else
-            selectedChildren.add(buffer);
-
-        updateSelectionType();
-        */
-    }
-
-    public void toggle(NetworkItem item) {
-        /*
-        if (selectedParents.contains(item))
-            selectedParents.remove(item);
-        else
-            selectedParents.add(item);
-
-        updateSelectionType();
-        */
-    }
-
-    public boolean isChecked(Buffer buffer) {
-        return selectedChildren.contains(buffer);
-    }
-
-    public boolean isChecked(NetworkItem network) {
-        return selectedParents.contains(network);
-    }
-
-    private void updateSelectionType() {
-        if (actionModeMenu != null) {
-            actionModeMenu.setGroupVisible(R.id.context_group_buffer, !selectedChildren.isEmpty() && selectedParents.isEmpty());
-            actionModeMenu.setGroupVisible(R.id.context_group_network, !selectedParents.isEmpty() && selectedChildren.isEmpty());
-        }
-    }
-
-    @Override
-    public boolean onCabCreated(MaterialCab cab, Menu menu) {
-        menu.clear();
-        activity.getMenuInflater().inflate(R.menu.context_buffer_network, menu);
-        actionModeMenu = menu;
-        updateSelectionType();
-        return true;
-    }
-
-    @Override
-    public boolean onCabItemClicked(MenuItem item) {
-        return false;
-    }
-
-    @Override
-    public boolean onCabFinished(MaterialCab cab) {
-        actionModeMenu = null;
-        selectedChildren.clear();
-        selectedParents.clear();
-        return true;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
deleted file mode 100644
index 873e36801..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewConfigAdapter.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import android.os.Parcelable;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import com.bignerdranch.expandablerecyclerview.Adapter.ExpandableRecyclerAdapter;
-import com.bignerdranch.expandablerecyclerview.Model.ParentListItem;
-
-import java.lang.ref.WeakReference;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.lists.ObservableElement;
-import de.kuschku.util.observables.lists.ObservableSortedList;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class BufferViewConfigAdapter extends ExpandableRecyclerAdapter<NetworkViewHolder, BufferViewHolder> implements OnBufferClickListener, OnBufferLongClickListener {
-    private final AppContext context;
-    private final ObservableSortedList<NetworkItem> items;
-    private final Map<QNetwork, NetworkItem> itemMap = new WeakHashMap<>();
-    private final Map<Integer, BufferViewHolder> bufferViewHolderMap = new WeakHashMap<>();
-    private final ObservableElement<Boolean> showAll = new ObservableElement<>(false);
-    private QBufferViewConfig config;
-    private final ElementCallback<QNetwork> callback = new ElementCallback<QNetwork>() {
-        @Override
-        public void notifyItemInserted(QNetwork network) {
-            NetworkItem networkItem = new NetworkItem(context, config, network, BufferViewConfigAdapter.this);
-            itemMap.put(network, networkItem);
-            items.add(networkItem);
-        }
-
-        @Override
-        public void notifyItemRemoved(QNetwork network) {
-            items.remove(itemMap.remove(network));
-        }
-
-        @Override
-        public void notifyItemChanged(QNetwork network) {
-            if (items.contains(itemMap.get(network)))
-                items.notifyItemChanged(itemMap.get(network));
-        }
-    };
-    private WeakReference<RecyclerView> recyclerView = new WeakReference<>(null);
-    private int open;
-    private OnBufferClickListener bufferClickListener;
-    private ActionModeHandler actionModeHandler;
-
-    private BufferViewConfigAdapter(AppContext context, ObservableSortedList<NetworkItem> items) {
-        super(items);
-        this.context = context;
-        this.items = items;
-        items.addCallback(new UICallback() {
-            @Override
-            public void notifyItemInserted(int position) {
-                notifyParentItemInserted(position);
-                if (items.get(position).isInitiallyExpanded())
-                    expandParent(position);
-                else
-                    collapseParent(position);
-            }
-
-            @Override
-            public void notifyItemChanged(int position) {
-                notifyParentItemChanged(position);
-                if (items.get(position).isInitiallyExpanded())
-                    expandParent(position);
-                else
-                    collapseParent(position);
-            }
-
-            @Override
-            public void notifyItemRemoved(int position) {
-                notifyParentItemRemoved(position);
-            }
-
-            @Override
-            public void notifyItemMoved(int from, int to) {
-                notifyParentItemRemoved(from);
-                notifyParentItemInserted(to);
-            }
-
-            @Override
-            public void notifyItemRangeInserted(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemInserted(i);
-                }
-            }
-
-            @Override
-            public void notifyItemRangeChanged(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemChanged(i);
-                }
-            }
-
-            @Override
-            public void notifyItemRangeRemoved(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemRemoved(position);
-                }
-            }
-        });
-    }
-
-    public static BufferViewConfigAdapter of(AppContext context) {
-        final ObservableSortedList<NetworkItem> networkItems = new ObservableSortedList<>((Comparator<NetworkItem>) (o1, o2) -> {
-            assertNotNull(o1);
-            assertNotNull(o2);
-
-            QNetwork network1 = o1.getNetwork();
-            QNetwork network2 = o2.getNetwork();
-
-            if (network1 == null && network2 == null) {
-                return 0;
-            } else if (network1 == null) {
-                return 1;
-            } else if (network2 == null) {
-                return -1;
-            } else {
-                String name1 = network1.networkName();
-                String name2 = network2.networkName();
-
-                if (name1 == null && name2 == null) {
-                    return 0;
-                } else if (name1 == null) {
-                    return 1;
-                } else if (name2 == null) {
-                    return -1;
-                } else {
-                    return name1.compareToIgnoreCase(name2);
-                }
-            }
-        });
-        return new BufferViewConfigAdapter(context, networkItems);
-    }
-
-    public void notifyChildItemInserted(NetworkItem parentItem, int childPosition) {
-        super.notifyChildItemInserted(items.indexOf(parentItem), childPosition);
-    }
-
-    public void notifyChildItemRemoved(NetworkItem parentItem, int childPosition) {
-        super.notifyChildItemRemoved(items.indexOf(parentItem), childPosition);
-    }
-
-    public void notifyChildItemChanged(NetworkItem parentItem, int childPosition) {
-        super.notifyChildItemChanged(items.indexOf(parentItem), childPosition);
-    }
-
-    @Override
-    public NetworkViewHolder onCreateParentViewHolder(ViewGroup parentViewGroup) {
-        LayoutInflater inflater = LayoutInflater.from(parentViewGroup.getContext());
-        return new NetworkViewHolder(inflater.inflate(NetworkViewHolder.layout(), parentViewGroup, false));
-    }
-
-    @Override
-    public BufferViewHolder onCreateChildViewHolder(ViewGroup childViewGroup) {
-        LayoutInflater inflater = LayoutInflater.from(childViewGroup.getContext());
-        return new BufferViewHolder(context, inflater.inflate(BufferViewHolder.layout(), childViewGroup, false));
-    }
-
-    @Override
-    public void onBindParentViewHolder(NetworkViewHolder parentViewHolder, int position, ParentListItem parentListItem) {
-        parentViewHolder.bind(context, (NetworkItem) parentListItem);
-    }
-
-    @Override
-    public void onBindChildViewHolder(BufferViewHolder childViewHolder, int position, Object childListItem) {
-        bufferViewHolderMap.remove(childViewHolder.id);
-        Buffer buffer = (Buffer) childListItem;
-        childViewHolder.bind(this, this, buffer);
-        bufferViewHolderMap.put(childViewHolder.id, childViewHolder);
-        childViewHolder.setSelected(context.client().backlogManager().open() == childViewHolder.id);
-        childViewHolder.setChecked(actionModeHandler.isChecked(buffer));
-    }
-
-    @Override
-    public void onClick(Buffer buffer) {
-        if (actionModeHandler.isActive()) {
-            actionModeHandler.toggle(buffer);
-            bufferViewHolderMap.get(buffer.getInfo().id).setChecked(actionModeHandler.isChecked(buffer));
-        } else {
-            if (bufferClickListener != null) {
-                bufferClickListener.onClick(buffer);
-            }
-        }
-    }
-
-    public void setBufferClickListener(OnBufferClickListener bufferClickListener) {
-        this.bufferClickListener = bufferClickListener;
-    }
-
-    public void setRecyclerView(RecyclerView recyclerView) {
-        this.recyclerView = new WeakReference<>(recyclerView);
-    }
-
-    public void selectConfig(int id) {
-        if (context.client() == null || context.client().bufferViewManager() == null)
-            return;
-
-        QBufferViewConfig newconfig = context.client().bufferViewManager().bufferViewConfig(id);
-        Parcelable state = (newconfig == config) ? saveState() : null;
-
-        if (config != null)
-            config.networkList().removeCallback(callback);
-        config = newconfig;
-        for (NetworkItem item : items) item.onDestroy();
-        items.clear();
-        itemMap.clear();
-        if (config != null) {
-            for (QNetwork network : config.networkList()) {
-                NetworkItem networkItem = new NetworkItem(context, config, network, this);
-                itemMap.put(network, networkItem);
-                items.add(networkItem);
-            }
-            config.networkList().addCallback(callback);
-        }
-
-        loadState(state);
-    }
-
-    private void loadState(@Nullable Parcelable state) {
-        if (state != null) {
-            RecyclerView list = recyclerView.get();
-            if (list != null) {
-                LinearLayoutManager layoutManager = (LinearLayoutManager) list.getLayoutManager();
-                layoutManager.onRestoreInstanceState(state);
-            }
-        }
-    }
-
-    @Nullable
-    private Parcelable saveState() {
-        RecyclerView list = recyclerView.get();
-        if (list != null) {
-            LinearLayoutManager layoutManager = (LinearLayoutManager) list.getLayoutManager();
-            return layoutManager.onSaveInstanceState();
-        } else {
-            return null;
-        }
-    }
-
-    public void setOpen(int id) {
-        BufferViewHolder old = bufferViewHolderMap.get(open);
-        if (old != null) old.setSelected(false);
-        else bufferViewHolderMap.remove(open);
-        BufferViewHolder now = bufferViewHolderMap.get(id);
-        if (now != null) now.setSelected(true);
-        else bufferViewHolderMap.remove(id);
-        open = id;
-    }
-
-    public int indexOf(int bufferViewConfigId) {
-        for (int i = 0; i < context.client().bufferViewManager().bufferViewConfigs().size(); i++) {
-            if (context.client().bufferViewManager().bufferViewConfigs().get(i).bufferViewId() == bufferViewConfigId)
-                return i;
-        }
-        return -1;
-    }
-
-    public ObservableElement<Boolean> showAll() {
-        return showAll;
-    }
-
-    public boolean toggleShowAll() {
-        boolean before = showAll.get();
-        showAll.set(!before);
-        return !before;
-    }
-
-    @Override
-    public boolean onLongClick(Buffer buffer) {
-        if (!actionModeHandler.isActive())
-            actionModeHandler.start();
-
-        actionModeHandler.toggle(buffer);
-        BufferViewHolder bufferViewHolder = bufferViewHolderMap.get(buffer.getInfo().id);
-        if (bufferViewHolder != null)
-            bufferViewHolder.setChecked(actionModeHandler.isChecked(buffer));
-        return false;
-    }
-
-    public void setActionModeHandler(ActionModeHandler actionModeHandler) {
-        this.actionModeHandler = actionModeHandler;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java
deleted file mode 100644
index 0754e8593..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/BufferViewHolder.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import android.support.annotation.LayoutRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.bignerdranch.expandablerecyclerview.ViewHolder.ChildViewHolder;
-import com.google.common.base.Function;
-
-import java.util.Locale;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.localtypes.buffers.ChannelBuffer;
-import de.kuschku.libquassel.localtypes.buffers.QueryBuffer;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.ViewIntBinder;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class BufferViewHolder extends ChildViewHolder {
-
-    private final AppContext context;
-    public int id;
-    @Bind(R.id.material_drawer_icon)
-    ImageView icon;
-    @Bind(R.id.material_drawer_badge)
-    TextView badge;
-    @Bind(R.id.material_drawer_badge_container)
-    LinearLayout badgeContainer;
-    @Bind(R.id.material_drawer_name)
-    TextView name;
-    @Bind(R.id.material_drawer_description)
-    TextView description;
-    private ObservableElement<BufferInfo.BufferStatus> status;
-    private GeneralCallback<BufferInfo.BufferStatus> callback;
-    private ViewIntBinder viewIntBinder;
-    private boolean selected = false;
-    private boolean checked = false;
-
-    public BufferViewHolder(AppContext context, View itemView) {
-        super(itemView);
-        ButterKnife.bind(this, itemView);
-        this.context = context;
-    }
-
-    @LayoutRes
-    public static int layout() {
-        return R.layout.widget_buffer;
-    }
-
-    public void bind(OnBufferClickListener listener, OnBufferLongClickListener longClickListener, Buffer buffer) {
-        if (status != null)
-            status.removeCallback(callback);
-        status = buffer.getStatus();
-        name.setText(buffer.getName());
-        if (viewIntBinder != null) viewIntBinder.unbind();
-        viewIntBinder = new ViewIntBinder(context.client().bufferSyncer().activity(buffer.getInfo().id));
-        viewIntBinder.bindTextColor(name, colorFromActivityStatus(buffer));
-        setDescription(context.deserializer().formatString(getDescription(buffer)));
-        setBadge(0);
-
-        itemView.setOnClickListener(v -> listener.onClick(buffer));
-        itemView.setOnLongClickListener(v -> longClickListener.onLongClick(buffer));
-
-        id = buffer.getInfo().id;
-
-        BufferInfo.Type type = buffer.getInfo().type;
-        setIcon(context, type, status);
-        callback = object -> setIcon(context, type, status);
-        status.addCallback(callback);
-    }
-
-    @NonNull
-    private Function<Integer, Integer> colorFromActivityStatus(Buffer buffer) {
-        return activities -> {
-            int filters = context.client().bufferSyncer().getFilters(buffer.getInfo().id);
-            activities = activities & ~filters;
-            if (0 != ((activities & Message.Type.Plain.value) | (activities & Message.Type.Notice.value) | (activities & Message.Type.Action.value)))
-                return context.themeUtil().res.colorTintMessage;
-            if (0 != activities)
-                return context.themeUtil().res.colorTintActivity;
-            else
-                return context.themeUtil().res.colorForeground;
-        };
-    }
-
-    public boolean isSelected() {
-        return selected;
-    }
-
-    public void setSelected(boolean selected) {
-        this.selected = selected;
-        updateSelectionState();
-    }
-
-    public boolean isChecked() {
-        return checked;
-    }
-
-    public void setChecked(boolean checked) {
-        this.checked = checked;
-        updateSelectionState();
-    }
-
-    private void updateSelectionState() {
-        itemView.setSelected(selected || checked);
-    }
-
-    private void setIcon(AppContext context, BufferInfo.Type type, ObservableElement<BufferInfo.BufferStatus> status) {
-        icon.setImageDrawable(context.themeUtil().statusDrawables.of(type, status.get()));
-    }
-
-    private void setDescription(@Nullable CharSequence description) {
-        if (description == null || description.length() == 0) {
-            this.description.setText(null);
-            this.description.setVisibility(View.GONE);
-        } else {
-            this.description.setText(description);
-            this.description.setVisibility(View.VISIBLE);
-        }
-    }
-
-    private void setBadge(int count) {
-        if (count == 0) {
-            badgeContainer.setVisibility(View.GONE);
-            badge.setText("0");
-        } else {
-            badgeContainer.setVisibility(View.VISIBLE);
-            badge.setText(String.format(Locale.US, "%d", count));
-        }
-    }
-
-    @Nullable
-    private String getDescription(Buffer buffer) {
-        if (buffer instanceof ChannelBuffer) {
-            ChannelBuffer channelBuffer = (ChannelBuffer) buffer;
-            QIrcChannel channel = channelBuffer.getChannel();
-            if (channel != null) {
-                return channel.topic();
-            }
-        } else if (buffer instanceof QueryBuffer) {
-            QueryBuffer queryBuffer = (QueryBuffer) buffer;
-            QIrcUser user = queryBuffer.getUser();
-            if (user != null) {
-                return user.realName();
-            }
-        }
-        return null;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java
deleted file mode 100644
index f539796d9..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkItem.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import com.bignerdranch.expandablerecyclerview.Model.ParentListItem;
-
-import java.util.Comparator;
-import java.util.List;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.IrcCaseMappers;
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.lists.ObservableSet;
-import de.kuschku.util.observables.lists.ObservableSortedList;
-
-public class NetworkItem implements ParentListItem {
-    private final AppContext context;
-    private final QBufferViewConfig config;
-    private final QNetwork network;
-    private final BufferViewConfigAdapter bufferViewConfigAdapter;
-    private final ObservableSortedList<Buffer> buffers = new ObservableSortedList<>(new Comparator<Buffer>() {
-        @Override
-        public int compare(Buffer o1, Buffer o2) {
-            if (o1.getInfo().type == o2.getInfo().type) {
-                IrcCaseMappers.IrcCaseMapper ircCaseMapper = network.caseMapper();
-                return ircCaseMapper.toLowerCase(o1.getName()).compareTo(ircCaseMapper.toLowerCase(o2.getName()));
-            } else {
-                if (o1.getInfo().type == BufferInfo.Type.STATUS)
-                    return -1;
-                else if (o2.getInfo().type == BufferInfo.Type.STATUS)
-                    return 1;
-                else if (o1.getInfo().type == BufferInfo.Type.CHANNEL)
-                    return -1;
-                else if (o2.getInfo().type == BufferInfo.Type.CHANNEL)
-                    return 1;
-                else if (o1.getInfo().type == BufferInfo.Type.GROUP)
-                    return -1;
-                else if (o2.getInfo().type == BufferInfo.Type.GROUP)
-                    return 1;
-                else
-                    return -1;
-            }
-        }
-    });
-    private final ElementCallback<Integer> callback = new ElementCallback<Integer>() {
-        @Override
-        public void notifyItemInserted(Integer element) {
-            Buffer buffer = context.client().bufferManager().buffer(element);
-            if (buffer != null && buffer.getInfo().networkId == network.networkId()) {
-                buffers.add(buffer);
-            }
-        }
-
-        @Override
-        public void notifyItemRemoved(Integer element) {
-            Buffer buffer = context.client().bufferManager().buffer(element);
-            if (buffer != null && buffer.getInfo().networkId == network.networkId()) {
-                buffers.remove(buffer);
-            }
-        }
-
-        @Override
-        public void notifyItemChanged(Integer element) {
-        }
-    };
-    private final UICallback callback1;
-    private final ElementCallback<Integer> callback2;
-    private final GeneralCallback<Boolean> booleanGeneralCallback;
-    private ObservableSet<Integer> backingSet;
-
-    public NetworkItem(AppContext context, QBufferViewConfig config, QNetwork network, BufferViewConfigAdapter bufferViewConfigAdapter) {
-        this.context = context;
-        this.config = config;
-        this.network = network;
-        this.bufferViewConfigAdapter = bufferViewConfigAdapter;
-        booleanGeneralCallback = object -> setShowAll(object);
-        bufferViewConfigAdapter.showAll().addCallback(booleanGeneralCallback);
-        setShowAll(bufferViewConfigAdapter.showAll().get());
-        callback1 = new UICallback() {
-            @Override
-            public void notifyItemInserted(int position) {
-                bufferViewConfigAdapter.notifyChildItemInserted(NetworkItem.this, position);
-            }
-
-            @Override
-            public void notifyItemChanged(int position) {
-                bufferViewConfigAdapter.notifyChildItemChanged(NetworkItem.this, position);
-            }
-
-            @Override
-            public void notifyItemRemoved(int position) {
-                bufferViewConfigAdapter.notifyChildItemRemoved(NetworkItem.this, position);
-            }
-
-            @Override
-            public void notifyItemMoved(int from, int to) {
-                this.notifyItemRemoved(from);
-                this.notifyItemInserted(to);
-            }
-
-            @Override
-            public void notifyItemRangeInserted(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemInserted(i);
-                }
-            }
-
-            @Override
-            public void notifyItemRangeChanged(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemChanged(i);
-                }
-            }
-
-            @Override
-            public void notifyItemRangeRemoved(int position, int count) {
-                for (int i = position; i < position + count; i++) {
-                    this.notifyItemRemoved(position);
-                }
-            }
-        };
-        this.buffers.addCallback(callback1);
-        callback2 = new ElementCallback<Integer>() {
-            @Override
-            public void notifyItemInserted(Integer element) {
-            }
-
-            @Override
-            public void notifyItemRemoved(Integer element) {
-            }
-
-            @Override
-            public void notifyItemChanged(Integer element) {
-                Buffer buffer = NetworkItem.this.context.client().bufferManager().buffer(element);
-                if (buffer != null && buffer.getInfo().networkId == NetworkItem.this.network.networkId() && buffers.contains(buffer)) {
-                    buffers.notifyItemChanged(buffer);
-                }
-            }
-        };
-        context.client().bufferManager().bufferIds().addCallback(callback2);
-    }
-
-    public void populateList(ObservableSet<Integer> backingSet) {
-        if (this.backingSet != null)
-            this.backingSet.removeCallback(callback);
-        buffers.clear();
-
-        backingSet.addCallback(callback);
-        for (int id : backingSet) {
-            Buffer buffer = context.client().bufferManager().buffer(id);
-            if (buffer != null && buffer.getInfo().networkId == network.networkId()) {
-                buffers.add(buffer);
-            }
-        }
-        this.backingSet = backingSet;
-    }
-
-    public void setShowAll(boolean showAll) {
-        populateList(showAll ? config.allBufferIds() : config.bufferIds());
-    }
-
-    @Override
-    public List<?> getChildItemList() {
-        return buffers;
-    }
-
-    @Override
-    public boolean isInitiallyExpanded() {
-        return network != null && network.isConnected();
-    }
-
-    public QNetwork getNetwork() {
-        return network;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(network);
-    }
-
-    public void onDestroy() {
-        this.backingSet.removeCallback(callback);
-        bufferViewConfigAdapter.showAll().removeCallback(booleanGeneralCallback);
-        this.buffers.removeCallback(callback1);
-        context.client().bufferManager().bufferIds().removeCallback(callback2);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkViewHolder.java
deleted file mode 100644
index d83248e20..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/NetworkViewHolder.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import android.support.annotation.LayoutRes;
-import android.view.View;
-import android.widget.TextView;
-
-import com.bignerdranch.expandablerecyclerview.ViewHolder.ParentViewHolder;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-public class NetworkViewHolder extends ParentViewHolder {
-
-    @Bind(R.id.material_drawer_name)
-    TextView name;
-
-    public NetworkViewHolder(View itemView) {
-        super(itemView);
-        ButterKnife.bind(this, itemView);
-    }
-
-    @LayoutRes
-    public static int layout() {
-        return R.layout.widget_drawer_network;
-    }
-
-    public void bind(AppContext context, NetworkItem item) {
-        name.setText(item.getNetwork() == null ? "" : item.getNetwork().networkName());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferClickListener.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferClickListener.java
deleted file mode 100644
index c5d505cf1..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferClickListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-
-public interface OnBufferClickListener {
-    void onClick(Buffer buffer);
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java
deleted file mode 100644
index 559e9d97a..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/drawer/OnBufferLongClickListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.drawer;
-
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-
-public interface OnBufferLongClickListener {
-    boolean onLongClick(Buffer buffer);
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
deleted file mode 100644
index 1b8296dc4..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.fragment;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.sothree.slidinguppanel.SlidingUpPanelLayout;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.events.BacklogReceivedEvent;
-import de.kuschku.libquassel.events.BufferChangeEvent;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.syncables.types.interfaces.QBacklogManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
-import de.kuschku.quasseldroid_ng.ui.chat.chatview.MessageAdapter;
-import de.kuschku.quasseldroid_ng.ui.chat.util.SlidingPanelHandler;
-import de.kuschku.util.observables.AutoScroller;
-import de.kuschku.util.observables.lists.AndroidObservableComparableSortedList;
-import de.kuschku.util.servicebound.BoundFragment;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class ChatFragment extends BoundFragment {
-    /**
-     * The list containing the messages to be displayed
-     */
-    @Bind(R.id.messages)
-    RecyclerView messages;
-
-    @Bind(R.id.sliding_layout)
-    SlidingUpPanelLayout sliderMain;
-
-    @Bind(R.id.scroll_down)
-    FloatingActionButton scrollDown;
-
-    private MessageAdapter messageAdapter;
-    private SlidingPanelHandler slidingPanelHandler;
-    private boolean loading = false;
-
-    private int recyclerViewMeasuredHeight = 0;
-    private RecyclerView.OnScrollListener listener;
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.fragment_chat, container, false);
-        ButterKnife.bind(this, view);
-        slidingPanelHandler = new SlidingPanelHandler(getActivity(), sliderMain, context);
-
-        assertNotNull(messages);
-
-        messages.setItemAnimator(new DefaultItemAnimator());
-        messages.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true));
-        messageAdapter = new MessageAdapter(getActivity(), context, new AutoScroller(messages));
-        messages.setAdapter(messageAdapter);
-
-        scrollDown.hide();
-
-        listener = new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-                if (!loading && !recyclerView.canScrollVertically(-1)) {
-                    Client client = context.client();
-                    assertNotNull(client);
-                    QBacklogManager backlogManager = client.backlogManager();
-                    assertNotNull(backlogManager);
-                    backlogManager.requestMoreBacklog(client.backlogManager().open(), 20);
-                    loading = true;
-                }
-                if (recyclerViewMeasuredHeight == 0)
-                    recyclerViewMeasuredHeight = recyclerView.getMeasuredHeight();
-                boolean canScrollDown = recyclerView.canScrollVertically(1);
-                boolean isScrollingDown = dy > 0;
-                int scrollOffsetFromBottom = recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollOffset() - recyclerViewMeasuredHeight;
-                boolean isMoreThanOneScreenFromBottom = scrollOffsetFromBottom > recyclerViewMeasuredHeight;
-                boolean smartVisibility = scrollDown.getVisibility() == View.VISIBLE || isMoreThanOneScreenFromBottom;
-                setScrollDownVisibility(canScrollDown && isScrollingDown && smartVisibility);
-            }
-
-            private void setScrollDownVisibility(boolean visible) {
-                if (visible)
-                    scrollDown.show();
-                else
-                    scrollDown.hide();
-            }
-        };
-        messages.addOnScrollListener(listener);
-
-        scrollDown.setOnClickListener(view1 -> messages.smoothScrollToPosition(0));
-
-        return view;
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(BufferChangeEvent event) {
-        setMarkerline();
-
-        Client client = context.client();
-        if (client != null && client.connectionStatus() == ConnectionChangeEvent.Status.CONNECTED) {
-            QBacklogManager backlogManager = client.backlogManager();
-            int id = backlogManager.open();
-            AndroidObservableComparableSortedList<Message> messageList = backlogManager.filtered(id);
-            messageAdapter.setMessageList(messageList);
-        }
-    }
-
-    @Override
-    public void onPause() {
-        setMarkerline();
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        messageAdapter.setMessageList(null);
-        messages.removeOnScrollListener(listener);
-        scrollDown.setOnClickListener(null);
-        slidingPanelHandler.onDestroy();
-        super.onDestroy();
-    }
-
-    private void setMarkerline() {
-        //int lastVisibleMessageId;
-        //context.client().bufferSyncer().setMarkerLine(context.client().backlogManager().open(), lastVisibleMessageId);
-    }
-
-    @Override
-    protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
-        super.onConnectToThread(thread);
-        onEventMainThread(new BufferChangeEvent());
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    public void onEventMainThread(BacklogReceivedEvent event) {
-        Client client = context.client();
-        if (client != null && client.backlogManager().open() == event.bufferId) {
-            loading = false;
-        }
-    }
-
-    public boolean onBackPressed() {
-        if (sliderMain.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
-            if (slidingPanelHandler.onBackPressed()) {
-                return true;
-            } else {
-                sliderMain.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
-                return true;
-            }
-        } else {
-            return false;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/LoadingFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/LoadingFragment.java
deleted file mode 100644
index 41879e6a1..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/LoadingFragment.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.fragment;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.Locale;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.events.BacklogInitEvent;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.events.InitEvent;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.servicebound.BoundFragment;
-
-public class LoadingFragment extends BoundFragment {
-    @Bind(R.id.progressBar)
-    ProgressBar progressBar;
-
-    @Bind(R.id.label)
-    TextView label;
-
-    @Bind(R.id.count)
-    TextView count;
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.fragment_loading, container, false);
-        ButterKnife.bind(this, view);
-
-
-        label.setText(context.themeUtil().translations.statusConnecting);
-        showProgressState(1);
-
-        return view;
-    }
-
-    public void showProgressState(int position) {
-        count.setText(String.format(Locale.US, "%d/%d", position, 5));
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(ConnectionChangeEvent event) {
-        progressBar.setIndeterminate(true);
-
-        label.setText(context.themeUtil().statusName(event.status));
-        showProgressState(event.status.ordinal() + 1);
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(InitEvent event) {
-        if (context.client().connectionStatus() == ConnectionChangeEvent.Status.INITIALIZING_DATA) {
-            progressBar.setIndeterminate(false);
-            progressBar.setMax(event.max);
-            progressBar.setProgress(event.loaded);
-
-            label.setText(context.themeUtil().translations.statusInitData);
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
-    public void onEventMainThread(BacklogInitEvent event) {
-        if (context.client().connectionStatus() == ConnectionChangeEvent.Status.LOADING_BACKLOG) {
-            progressBar.setIndeterminate(false);
-            progressBar.setMax(event.max);
-            progressBar.setProgress(event.loaded);
-
-            label.setText(context.themeUtil().translations.statusBacklog);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/nicklist/NickListAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/nicklist/NickListAdapter.java
deleted file mode 100644
index f17b57e14..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/nicklist/NickListAdapter.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.nicklist;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.CompatibilityUtils;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-
-public class NickListAdapter extends RecyclerView.Adapter<NickListAdapter.NickViewHolder> {
-    public static final int TYPE_NORMAL = 0;
-    public static final int TYPE_AWAY = 1;
-    private final AppContext context;
-    private final AdapterUICallbackWrapper callback;
-    QIrcChannel channel;
-
-    public NickListAdapter(AppContext context) {
-        this.context = context;
-        callback = new AdapterUICallbackWrapper(this);
-    }
-
-    public void setChannel(QIrcChannel channel) {
-        if (this.channel != null)
-            this.channel.users().removeCallback(callback);
-        this.channel = channel;
-        if (this.channel != null)
-            this.channel.users().addCallback(callback);
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public NickViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        View view = inflater.inflate(getLayoutResource(viewType), parent, false);
-        return new NickViewHolder(view);
-    }
-
-    public int getLayoutResource(int viewType) {
-        switch (viewType) {
-            default:
-            case TYPE_NORMAL:
-                return R.layout.widget_nick;
-            case TYPE_AWAY:
-                return R.layout.widget_nick_away;
-        }
-    }
-
-    @Override
-    public void onBindViewHolder(NickViewHolder holder, int position) {
-        holder.bind(getItem(position));
-    }
-
-    @Override
-    public int getItemCount() {
-        return this.channel != null ? this.channel.users().size() : 0;
-    }
-
-    public QIrcUser getItem(int position) {
-        return this.channel != null ? this.channel.network().ircUser(this.channel.users().get(position)) : null;
-    }
-
-    @NonNull
-    public String getPrefixedFromMode(String text) {
-        StringBuilder builder = new StringBuilder();
-        for (String s : CompatibilityUtils.partStringByChar(text)) {
-            builder.append(channel.network().modeToPrefix(s));
-        }
-        return builder.toString();
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return getItem(position).isAway() ? TYPE_AWAY : TYPE_NORMAL;
-    }
-
-    class NickViewHolder extends RecyclerView.ViewHolder {
-        @Bind(R.id.mode)
-        TextView mode;
-
-        @Bind(R.id.nick)
-        TextView nick;
-
-        @Bind(R.id.realname)
-        TextView realname;
-
-        public NickViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-        }
-
-        public void bind(QIrcUser qIrcUser) {
-            nick.setText(qIrcUser.nick());
-            realname.setText(qIrcUser.realName());
-            String text = channel.userModes(qIrcUser);
-            if (text.isEmpty()) {
-                mode.setVisibility(View.INVISIBLE);
-                mode.setText(null);
-            } else {
-                mode.setVisibility(View.VISIBLE);
-                String prefixes = getPrefixedFromMode(text);
-                mode.setBackground(context.themeUtil().res.badge(channel.network().lowestModeIndex(text)));
-                mode.setText(prefixes);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ScrollRefreshLayout.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ScrollRefreshLayout.java
deleted file mode 100644
index cdaaf8338..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ScrollRefreshLayout.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.util;
-
-import android.content.Context;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.util.AttributeSet;
-
-public class ScrollRefreshLayout extends SwipeRefreshLayout {
-    public ScrollRefreshLayout(Context context) {
-        super(context);
-    }
-
-    public ScrollRefreshLayout(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java
deleted file mode 100644
index d99a5174e..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/ServiceHelper.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.util;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.quasseldroid_ng.service.QuasselService;
-import de.kuschku.quasseldroid_ng.ui.settings.Settings;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.quasseldroid_ng.ui.theme.AppTheme;
-import de.kuschku.quasseldroid_ng.ui.theme.ThemeUtil;
-
-public class ServiceHelper {
-    private ServiceHelper() {
-    }
-
-    /**
-     * Connects to an already running QuasselService
-     *
-     * @param context    The context in which the service is running
-     * @param connection The connection to which it should be bound
-     */
-    public static void connectToService(Context context, ServiceConnection connection) {
-        Intent intent = new Intent(context, QuasselService.class);
-        context.bindService(intent, connection, Context.BIND_IMPORTANT);
-    }
-
-    /**
-     * Connects to an already running QuasselService
-     *
-     * @param context    The context in which the service is running
-     * @param connection The connection which should be disconnected
-     */
-    public static void disconnect(Context context, ServiceConnection connection) {
-        context.unbindService(connection);
-    }
-
-    /**
-     * Starts a new QuasselService, if not yet running.
-     *
-     * @param context The context in which it should run
-     */
-    public static void startServiceIfNotRunning(Context context) {
-        Intent intent = new Intent(context, QuasselService.class);
-        context.startService(intent);
-    }
-
-    public static int initContext(AppContext context, Activity activity) {
-        context.setSettings(new Settings(activity));
-        context.bufferDisplayTypes().add(QBufferViewConfig.DisplayType.ALWAYS);
-        return initTheme(context, activity);
-    }
-
-    public static int initTheme(AppContext context, Activity activity) {
-        // Load Theme from Preferences
-        AppTheme theme = AppTheme.themeFromString(context.settings().preferenceTheme.get());
-        activity.setTheme(theme.themeId);
-        context.setThemeUtil(new ThemeUtil(activity, theme));
-        return theme.themeId;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
deleted file mode 100644
index 21e313ae2..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/SlidingPanelHandler.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.util;
-
-import android.app.Activity;
-import android.support.v7.widget.ActionMenuView;
-import android.support.v7.widget.AppCompatEditText;
-import android.support.v7.widget.AppCompatImageButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-import com.mikepenz.fastadapter.FastAdapter;
-import com.mikepenz.fastadapter.IItem;
-import com.mikepenz.fastadapter.adapters.ItemAdapter;
-import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
-import com.sothree.slidinguppanel.SlidingUpPanelLayout;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.editor.AdvancedEditor;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.quasseldroid_ng.ui.theme.ThemeUtil;
-import de.kuschku.util.annotationbind.AutoBinder;
-import de.kuschku.util.ui.MenuTint;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class SlidingPanelHandler {
-    // Main Sliding Layout
-    final SlidingUpPanelLayout slidingLayout;
-    private final Activity activity;
-    private final AppContext context;
-    private final AdvancedEditor editor;
-    // Input History
-    @Bind(R.id.sliding_layout_history)
-    SlidingUpPanelLayout slidingLayoutHistory;
-    @Bind(R.id.msg_history)
-    RecyclerView msgHistory;
-
-    // Advanced Formatter
-    @Bind(R.id.formatting_menu)
-    ActionMenuView formattingMenu;
-    @Bind(R.id.formatting_toolbar)
-    Toolbar formattingToolbar;
-
-    // Input Line
-    @Bind(R.id.chatline)
-    AppCompatEditText chatline;
-    @Bind(R.id.send)
-    AppCompatImageButton send;
-    @Bind(R.id.chatline_scroller)
-    ScrollView chatlineScroller;
-    private ItemAdapter<IItem> previousMessages;
-
-    private boolean expanded;
-
-    public SlidingPanelHandler(Activity activity, SlidingUpPanelLayout slidingLayout, AppContext context) {
-        this.slidingLayout = slidingLayout;
-        ButterKnife.bind(this, slidingLayout);
-        this.activity = activity;
-        this.context = context;
-        this.editor = new AdvancedEditor(context, chatline);
-
-        setupFormattingMenu(activity);
-
-        setupHistoryFakeData();
-
-        bindListener();
-
-        chatlineScroller.setOnTouchListener((v, event) -> {
-            chatlineScroller.requestDisallowInterceptTouchEvent(expanded);
-            return true;
-        });
-    }
-
-    private void setupFormattingMenu(Activity activity) {
-        activity.getMenuInflater().inflate(R.menu.formatting, formattingMenu.getMenu());
-
-        MenuTint.colorIcons(formattingMenu.getMenu(), AutoBinder.obtainColor(R.attr.colorFill, formattingToolbar.getContext().getTheme()));
-
-        formattingMenu.setOnMenuItemClickListener(item -> {
-            switch (item.getItemId()) {
-                case R.id.format_bold:
-                    editor.toggleBold();
-                    return true;
-                case R.id.format_italic:
-                    editor.toggleItalic();
-                    return true;
-                case R.id.format_underline:
-                    editor.toggleUnderline();
-                    return true;
-                case R.id.action_history:
-                    openHistory();
-                    return true;
-
-                case R.id.fill_clear:
-                    editor.toggleBackground(-1);
-                    return true;
-                case R.id.fill_mircColor0:
-                    editor.toggleBackground(0x0);
-                    return true;
-                case R.id.fill_mircColor1:
-                    editor.toggleBackground(0x1);
-                    return true;
-                case R.id.fill_mircColor2:
-                    editor.toggleBackground(0x2);
-                    return true;
-                case R.id.fill_mircColor3:
-                    editor.toggleBackground(0x3);
-                    return true;
-                case R.id.fill_mircColor4:
-                    editor.toggleBackground(0x4);
-                    return true;
-                case R.id.fill_mircColor5:
-                    editor.toggleBackground(0x5);
-                    return true;
-                case R.id.fill_mircColor6:
-                    editor.toggleBackground(0x6);
-                    return true;
-                case R.id.fill_mircColor7:
-                    editor.toggleBackground(0x7);
-                    return true;
-                case R.id.fill_mircColor8:
-                    editor.toggleBackground(0x8);
-                    return true;
-                case R.id.fill_mircColor9:
-                    editor.toggleBackground(0x9);
-                    return true;
-                case R.id.fill_mircColorA:
-                    editor.toggleBackground(0xA);
-                    return true;
-                case R.id.fill_mircColorB:
-                    editor.toggleBackground(0xB);
-                    return true;
-                case R.id.fill_mircColorC:
-                    editor.toggleBackground(0xC);
-                    return true;
-                case R.id.fill_mircColorD:
-                    editor.toggleBackground(0xD);
-                    return true;
-                case R.id.fill_mircColorE:
-                    editor.toggleBackground(0xE);
-                    return true;
-                case R.id.fill_mircColorF:
-                    editor.toggleBackground(0xF);
-                    return true;
-
-                case R.id.paint_clear:
-                    editor.toggleForeground(-1);
-                    return true;
-                case R.id.paint_mircColor0:
-                    editor.toggleForeground(0x0);
-                    return true;
-                case R.id.paint_mircColor1:
-                    editor.toggleForeground(0x1);
-                    return true;
-                case R.id.paint_mircColor2:
-                    editor.toggleForeground(0x2);
-                    return true;
-                case R.id.paint_mircColor3:
-                    editor.toggleForeground(0x3);
-                    return true;
-                case R.id.paint_mircColor4:
-                    editor.toggleForeground(0x4);
-                    return true;
-                case R.id.paint_mircColor5:
-                    editor.toggleForeground(0x5);
-                    return true;
-                case R.id.paint_mircColor6:
-                    editor.toggleForeground(0x6);
-                    return true;
-                case R.id.paint_mircColor7:
-                    editor.toggleForeground(0x7);
-                    return true;
-                case R.id.paint_mircColor8:
-                    editor.toggleForeground(0x8);
-                    return true;
-                case R.id.paint_mircColor9:
-                    editor.toggleForeground(0x9);
-                    return true;
-                case R.id.paint_mircColorA:
-                    editor.toggleForeground(0xA);
-                    return true;
-                case R.id.paint_mircColorB:
-                    editor.toggleForeground(0xB);
-                    return true;
-                case R.id.paint_mircColorC:
-                    editor.toggleForeground(0xC);
-                    return true;
-                case R.id.paint_mircColorD:
-                    editor.toggleForeground(0xD);
-                    return true;
-                case R.id.paint_mircColorE:
-                    editor.toggleForeground(0xE);
-                    return true;
-                case R.id.paint_mircColorF:
-                    editor.toggleForeground(0xF);
-                    return true;
-
-                default:
-                    return false;
-            }
-        });
-    }
-
-    public void setFormattingEnabled(boolean formattingEnabled) {
-        Menu menu = formattingMenu.getMenu();
-        MenuItem[] items = new MenuItem[]{
-                menu.findItem(R.id.format_bold),
-                menu.findItem(R.id.format_italic),
-                menu.findItem(R.id.format_underline),
-                menu.findItem(R.id.format_paint),
-                menu.findItem(R.id.format_fill)
-        };
-
-        for (MenuItem item : items) {
-            if (item != null)
-                item.setEnabled(!formattingEnabled);
-        }
-    }
-
-    private void setChatlineExpanded(boolean expanded) {
-        assertNotNull(chatline);
-        assertNotNull(chatline.getLayoutParams());
-
-        ThemeUtil themeUtil = context.themeUtil();
-        assertNotNull(themeUtil);
-
-        int selectionStart = chatline.getSelectionStart();
-        int selectionEnd = chatline.getSelectionEnd();
-
-        if (expanded) {
-            chatline.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
-        } else {
-            chatline.getLayoutParams().height = themeUtil.res.actionBarSize;
-        }
-        chatline.setSingleLine(!expanded);
-        this.expanded = expanded;
-        chatlineScroller.setSmoothScrollingEnabled(false);
-
-        chatline.setSelection(selectionStart, selectionEnd);
-    }
-
-    private void bindListener() {
-        slidingLayout.setAntiDragView(R.id.card_panel);
-        slidingLayout.setPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
-            @Override
-            public void onPanelSlide(View panel, float slideOffset) {
-
-            }
-
-            @Override
-            public void onPanelCollapsed(View panel) {
-                setChatlineExpanded(false);
-            }
-
-            @Override
-            public void onPanelExpanded(View panel) {
-                setChatlineExpanded(true);
-            }
-
-            @Override
-            public void onPanelAnchored(View panel) {
-
-            }
-
-            @Override
-            public void onPanelHidden(View panel) {
-
-            }
-        });
-        setChatlineExpanded(slidingLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED);
-
-        send.setOnClickListener(v -> sendInput());
-        chatline.setOnKeyListener((v, keyCode, event) -> {
-            if (event.getAction() == KeyEvent.ACTION_DOWN && (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER)) {
-                sendInput();
-                return true;
-            }
-
-            // Always return false to make sure we don’t lose focus
-            return false;
-        });
-    }
-
-    private void sendInput() {
-        if (context.client() == null) return;
-
-        int bufferId = context.client().backlogManager().open();
-
-        if (bufferId >= 0) {
-            Buffer buffer = context.client().bufferManager().buffer(bufferId);
-            assertNotNull(buffer);
-
-            String text = editor.toFormatString();
-            context.client().sendInput(buffer.getInfo(), text);
-            chatline.setText("");
-            chatline.requestFocus();
-            previousMessages.add(new PrimaryDrawerItem().withName(text));
-        }
-    }
-
-    private void setupHistoryFakeData() {
-        FastAdapter<IItem> fastAdapter = new FastAdapter<>();
-        previousMessages = new ItemAdapter<>();
-        previousMessages.wrap(fastAdapter);
-        msgHistory.setAdapter(fastAdapter);
-        msgHistory.setLayoutManager(new LinearLayoutManager(activity));
-        msgHistory.setItemAnimator(new DefaultItemAnimator());
-    }
-
-    private void openHistory() {
-        slidingLayoutHistory.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
-    }
-
-    public boolean onBackPressed() {
-        if (slidingLayoutHistory.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
-            slidingLayoutHistory.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public void onDestroy() {
-        chatline.setOnKeyListener(null);
-        send.setOnClickListener(null);
-        slidingLayout.setPanelSlideListener(null);
-        formattingMenu.setOnMenuItemClickListener(null);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/Status.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/Status.java
deleted file mode 100644
index 42171c08e..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/util/Status.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.chat.util;
-
-import de.kuschku.util.instancestateutil.Storable;
-import de.kuschku.util.instancestateutil.Store;
-
-public class Status extends Storable {
-    @Store
-    public int bufferViewConfigId = -1;
-    @Store
-    public int bufferId = -1;
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasEditActivity.java
deleted file mode 100644
index 981c7db50..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasEditActivity.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.aliases;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.EditText;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.AliasManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.aliases.helper.AliasSerializerHelper;
-import de.kuschku.util.servicebound.BoundActivity;
-
-public class AliasEditActivity extends BoundActivity {
-    public static final int RESULT_DELETE = -2;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    @Bind(R.id.name)
-    EditText name;
-
-    @Bind(R.id.expansion)
-    EditText expansion;
-
-    private AliasManager.Alias item;
-    private Bundle original;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_alias_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        Intent intent = getIntent();
-        if (intent != null) {
-            original = intent.getBundleExtra("alias");
-            if (original != null) {
-                item = AliasSerializerHelper.deserialize(original);
-
-                name.setText(item.name);
-                expansion.setText(item.expansion.replaceAll("; ?", "\n"));
-            }
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        if (original != null) {
-            getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        } else {
-            getMenuInflater().inflate(R.menu.confirm, menu);
-        }
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (hasChanged(build())) {
-            new MaterialDialog.Builder(this)
-                    .content(R.string.confirmationUnsavedChanges)
-                    .positiveText(R.string.actionYes)
-                    .negativeText(R.string.actionNo)
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog, which) -> {
-                        save();
-                        super.onBackPressed();
-                    })
-                    .onNegative((dialog, which) -> super.onBackPressed())
-                    .show();
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_delete: {
-                new MaterialDialog.Builder(this)
-                        .content(getString(R.string.confirmationDelete, this.item.name))
-                        .positiveText(R.string.actionYes)
-                        .negativeText(R.string.actionNo)
-                        .positiveColor(context.themeUtil().res.colorAccent)
-                        .negativeColor(context.themeUtil().res.colorForeground)
-                        .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                        .onPositive((dialog, which) -> {
-                            delete();
-                            finish();
-                        })
-                        .build()
-                        .show();
-            }
-            return true;
-            case R.id.action_confirm: {
-                save();
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void delete() {
-        Intent intent = new Intent();
-        intent.putExtra("original", original.getString("name"));
-        setResult(RESULT_DELETE, intent);
-    }
-
-    private void save() {
-        Intent intent = new Intent();
-        if (original != null)
-            intent.putExtra("original", original.getString("name"));
-        intent.putExtra("alias", build());
-        setResult(RESULT_OK, intent);
-    }
-
-    private boolean hasChanged(Bundle bundle) {
-        return this.original != null && bundle != null && !this.original.equals(bundle);
-    }
-
-    private Bundle build() {
-        Bundle bundle = new Bundle();
-        bundle.putString("name", name.getText().toString());
-        bundle.putString("expansion", expansion.getText().toString().replace("\n", "; "));
-        return bundle;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasListActivity.java
deleted file mode 100644
index 2c6b19144..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/AliasListActivity.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.aliases;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.AliasManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QAliasManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.aliases.helper.AliasSerializerHelper;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class AliasListActivity extends BoundActivity {
-    final OnAliasClickListener clickListener = alias -> {
-        if (alias != null) {
-            Intent intent = new Intent(this, AliasEditActivity.class);
-            intent.putExtra("alias", AliasSerializerHelper.serialize(alias));
-            startActivityForResult(intent, 0, null);
-        }
-    };
-
-    @Bind(R.id.list)
-    RecyclerView list;
-    @Bind(R.id.add)
-    FloatingActionButton add;
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    AliasAdapter adapter;
-    private QAliasManager manager;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.setItemAnimator(new DefaultItemAnimator());
-        list.addItemDecoration(new DividerItemDecoration(this));
-        adapter = new AliasAdapter();
-        list.setAdapter(adapter);
-
-        add.setOnClickListener(view -> startActivityForResult(new Intent(this, AliasEditActivity.class), 0, null));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    protected void onConnected() {
-        manager = context.client().aliasManager();
-        adapter.setManager(manager);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        manager = null;
-        adapter.setManager(null);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            if (resultCode == RESULT_OK) {
-                AliasManager.Alias item = AliasSerializerHelper.deserialize(data.getBundleExtra("alias"));
-                if (data.getStringExtra("original") != null)
-                    manager._removeAlias(manager.alias(data.getStringExtra("original")));
-                manager._addAlias(item);
-                manager.requestUpdate();
-            } else if (resultCode == AliasEditActivity.RESULT_DELETE) {
-                manager._removeAlias(manager.alias(data.getStringExtra("original")));
-                manager.requestUpdate();
-            }
-        }
-    }
-
-    interface OnAliasClickListener {
-        void onClick(AliasManager.Alias network);
-    }
-
-    private class AliasAdapter extends RecyclerView.Adapter<AliasViewHolder> {
-        final AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
-        QAliasManager manager;
-
-        public void setManager(QAliasManager manager) {
-            if (this.manager != null)
-                this.manager.aliases().addCallback(wrapper);
-
-            this.manager = manager;
-
-            if (this.manager != null)
-                this.manager.aliases().addCallback(wrapper);
-        }
-
-        @Override
-        public AliasViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            View view = inflater.inflate(R.layout.widget_settings_alias, parent, false);
-            return new AliasViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(AliasViewHolder holder, int position) {
-            holder.bind(manager != null ? manager.aliases().get(position) : null);
-        }
-
-        @Override
-        public int getItemCount() {
-            return manager == null ? 0 : manager.aliases().size();
-        }
-    }
-
-    class AliasViewHolder extends RecyclerView.ViewHolder {
-        @Bind(R.id.alias_name)
-        TextView name;
-
-        @Bind(R.id.alias_description)
-        TextView description;
-
-        private AliasManager.Alias alias;
-
-        public AliasViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(view -> clickListener.onClick(alias));
-        }
-
-        public void bind(AliasManager.Alias alias) {
-            this.alias = alias;
-            name.setText(alias == null ? "" : alias.name);
-            description.setText(alias == null ? "" : alias.expansion);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/helper/AliasSerializerHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/helper/AliasSerializerHelper.java
deleted file mode 100644
index e5ba9919a..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/aliases/helper/AliasSerializerHelper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.aliases.helper;
-
-import android.os.Bundle;
-
-import de.kuschku.libquassel.syncables.types.impl.AliasManager;
-
-public class AliasSerializerHelper {
-    private AliasSerializerHelper() {
-    }
-
-    public static Bundle serialize(AliasManager.Alias alias) {
-        Bundle bundle = new Bundle();
-        bundle.putString("name", alias.name);
-        bundle.putString("expansion", alias.expansion);
-        return bundle;
-    }
-
-    public static AliasManager.Alias deserialize(Bundle bundle) {
-        return new AliasManager.Alias(
-                bundle.getString("name"),
-                bundle.getString("expansion")
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
deleted file mode 100644
index d3a1bd65f..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListCreateActivity.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.chatlist;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.Spinner;
-
-import java.util.Collections;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.impl.BufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.NetworkSpinnerAdapter;
-import de.kuschku.util.servicebound.BoundActivity;
-
-public class ChatListCreateActivity extends BoundActivity {
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    @Bind(R.id.name)
-    EditText name;
-
-    @Bind(R.id.network)
-    Spinner network;
-
-    @Bind(R.id.showChannels)
-    CheckBox showChannels;
-
-    @Bind(R.id.showQueries)
-    CheckBox showQueries;
-
-    @Bind(R.id.hideInactiveChats)
-    CheckBox hideInactiveChats;
-
-    @Bind(R.id.hideInactiveNetworks)
-    CheckBox hideInactiveNetworks;
-
-    @Bind(R.id.addAutomatically)
-    CheckBox addAutomatically;
-
-    @Bind(R.id.sortAlphabetically)
-    CheckBox sortAlphabetically;
-
-    @Bind(R.id.minimumActivity)
-    Spinner minimumActivity;
-
-    private QBufferViewManager bufferViewManager;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_chatlist_edit);
-        ButterKnife.bind(this);
-
-        network.setAdapter(new NetworkSpinnerAdapter(this));
-
-        minimumActivity.setAdapter(new MinimumActivityAdapter(context));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        initializeDefaults();
-    }
-
-    private void initializeDefaults() {
-
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_confirm: {
-                if (bufferViewManager != null) {
-                    QBufferViewConfig config = new BufferViewConfig(
-                            "",
-                            Collections.<Integer>emptyList(),
-                            false,
-                            Collections.<Integer>emptyList(),
-                            15,
-                            true,
-                            false,
-                            true,
-                            0,
-                            QBufferViewConfig.MinimumActivity.NONE,
-                            false,
-                            Collections.<Integer>emptyList()
-                    );
-
-                    config._setBufferViewName(this.name.getText().toString());
-                    config.setBufferTypeAllowed(BufferInfo.Type.CHANNEL, this.showChannels.isChecked());
-                    config.setBufferTypeAllowed(BufferInfo.Type.QUERY, this.showQueries.isChecked());
-                    config._setHideInactiveBuffers(this.hideInactiveChats.isChecked());
-                    config._setHideInactiveNetworks(this.hideInactiveNetworks.isChecked());
-                    config._setAddNewBuffersAutomatically(this.addAutomatically.isChecked());
-                    config._setSortAlphabetically(this.sortAlphabetically.isChecked());
-                    config._setNetworkId((int) network.getSelectedItemId());
-                    config._setMinimumActivity(QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()));
-
-                    bufferViewManager.createBufferView(config);
-                }
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    @Override
-    protected void onConnected() {
-        bufferViewManager = context.client().bufferViewManager();
-    }
-
-    @Override
-    protected void onDisconnected() {
-        bufferViewManager = null;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
deleted file mode 100644
index 57d169705..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListEditActivity.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.chatlist;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.Spinner;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.NetworkSpinnerAdapter;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.servicebound.BoundActivity;
-
-public class ChatListEditActivity extends BoundActivity {
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    @Bind(R.id.name)
-    EditText name;
-
-    @Bind(R.id.network)
-    Spinner network;
-
-    @Bind(R.id.showChannels)
-    CheckBox showChannels;
-
-    @Bind(R.id.showQueries)
-    CheckBox showQueries;
-
-    @Bind(R.id.hideInactiveChats)
-    CheckBox hideInactiveChats;
-
-    @Bind(R.id.hideInactiveNetworks)
-    CheckBox hideInactiveNetworks;
-
-    @Bind(R.id.addAutomatically)
-    CheckBox addAutomatically;
-
-    @Bind(R.id.sortAlphabetically)
-    CheckBox sortAlphabetically;
-
-    @Bind(R.id.minimumActivity)
-    Spinner minimumActivity;
-
-    private int id;
-    private QBufferViewConfig config;
-    private NetworkSpinnerAdapter networkSpinnerAdapter;
-    private MinimumActivityAdapter minimumActivityAdapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Intent intent = getIntent();
-        if (intent == null) {
-            finish();
-            return;
-        }
-
-        id = intent.getIntExtra("id", -1);
-
-        setContentView(R.layout.activity_chatlist_edit);
-        ButterKnife.bind(this);
-
-        networkSpinnerAdapter = new NetworkSpinnerAdapter(this);
-        network.setAdapter(networkSpinnerAdapter);
-
-        minimumActivityAdapter = new MinimumActivityAdapter(context);
-        minimumActivity.setAdapter(minimumActivityAdapter);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (hasChanged()) {
-            new MaterialDialog.Builder(this)
-                    .content(R.string.confirmationUnsavedChanges)
-                    .positiveText(R.string.actionYes)
-                    .negativeText(R.string.actionNo)
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog, which) -> {
-                        save();
-                        super.onBackPressed();
-                    })
-                    .onNegative((dialog, which) -> super.onBackPressed())
-                    .show();
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_delete: {
-                new MaterialDialog.Builder(this)
-                        .content(getString(R.string.confirmationDelete, config.bufferViewName()))
-                        .positiveText(R.string.actionYes)
-                        .negativeText(R.string.actionNo)
-                        .positiveColor(context.themeUtil().res.colorAccent)
-                        .negativeColor(context.themeUtil().res.colorForeground)
-                        .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                        .onPositive((dialog, which) -> {
-                            finish();
-                            context.client().bufferViewManager().deleteBufferView(config.bufferViewId());
-                        })
-                        .build()
-                        .show();
-            }
-            return true;
-            case R.id.action_confirm: {
-                save();
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void save() {
-        if (config != null) {
-            String name = this.name.getText().toString();
-            if (!Objects.equals(name, config.bufferViewName()))
-                config.setBufferViewName(name);
-
-            if (config.networkId() != (int) network.getSelectedItemId())
-                config.setNetworkId((int) network.getSelectedItemId());
-
-            if (config.minimumActivity() != QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()))
-                config.setMinimumActivity(QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()));
-
-            int allowedBufferTypes = config.allowedBufferTypes();
-            config.setBufferTypeAllowed(BufferInfo.Type.CHANNEL, this.showChannels.isChecked());
-            config.setBufferTypeAllowed(BufferInfo.Type.QUERY, this.showQueries.isChecked());
-            if (config.allowedBufferTypes() != allowedBufferTypes)
-                config.setAllowedBufferTypes(allowedBufferTypes);
-
-            boolean hideInactiveChats = this.hideInactiveChats.isChecked();
-            if (hideInactiveChats != config.hideInactiveBuffers())
-                config.setHideInactiveBuffers(hideInactiveChats);
-
-            boolean hideInactiveNetworks = this.hideInactiveNetworks.isChecked();
-            if (hideInactiveNetworks != config.hideInactiveNetworks())
-                config.setHideInactiveNetworks(hideInactiveNetworks);
-
-            boolean addAutomatically = this.addAutomatically.isChecked();
-            if (addAutomatically != config.addNewBuffersAutomatically())
-                config.setAddNewBuffersAutomatically(addAutomatically);
-
-            boolean sortAlphabetically = this.sortAlphabetically.isChecked();
-            if (sortAlphabetically != config.sortAlphabetically())
-                config.setSortAlphabetically(sortAlphabetically);
-        }
-    }
-
-    private boolean hasChanged() {
-        return !Objects.equals(name.getText().toString(), config.bufferViewName()) ||
-                config.networkId() != (int) network.getSelectedItemId() ||
-                config.minimumActivity() != QBufferViewConfig.MinimumActivity.fromId((int) minimumActivity.getSelectedItemId()) ||
-                config.isBufferTypeAllowed(BufferInfo.Type.CHANNEL) != this.showChannels.isChecked() ||
-                config.isBufferTypeAllowed(BufferInfo.Type.QUERY) != this.showQueries.isChecked() ||
-                this.hideInactiveChats.isChecked() != config.hideInactiveBuffers() ||
-                this.hideInactiveNetworks.isChecked() != config.hideInactiveNetworks() ||
-                this.addAutomatically.isChecked() != config.addNewBuffersAutomatically() ||
-                this.sortAlphabetically.isChecked() != config.sortAlphabetically();
-    }
-
-    @Override
-    protected void onConnected() {
-        networkSpinnerAdapter.setNetworkManager(context.client().networkManager());
-        setConfig(context.client().bufferViewManager().bufferViewConfig(id));
-    }
-
-    private void setConfig(QBufferViewConfig config) {
-        this.config = config;
-
-        if (config != null) {
-            name.setText(config.bufferViewName());
-            network.setSelection(getSelectedNetworkIndex(config));
-            showChannels.setChecked(config.isBufferTypeAllowed(BufferInfo.Type.CHANNEL));
-            showQueries.setChecked(config.isBufferTypeAllowed(BufferInfo.Type.QUERY));
-            hideInactiveChats.setChecked(config.hideInactiveBuffers());
-            hideInactiveNetworks.setChecked(config.hideInactiveNetworks());
-            addAutomatically.setChecked(config.addNewBuffersAutomatically());
-            sortAlphabetically.setChecked(config.sortAlphabetically());
-            minimumActivity.setSelection(minimumActivityAdapter.indexOf(config.minimumActivity()));
-        }
-    }
-
-    private int getSelectedNetworkIndex(QBufferViewConfig config) {
-        QNetwork network;
-        if (context.client() == null) {
-            return 0;
-        } else if ((network = context.client().networkManager().network(config.networkId())) == null) {
-            return 0;
-        } else {
-            return context.client().networkManager().networks().indexOf(network) + 1;
-        }
-    }
-
-    @Override
-    protected void onDisconnected() {
-        networkSpinnerAdapter.setNetworkManager(null);
-        setConfig(null);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
deleted file mode 100644
index 5551746d7..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/ChatListListActivity.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.chatlist;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class ChatListListActivity extends BoundActivity {
-
-    final OnQBufferViewConfigClickListener clickListener = config -> {
-        if (config != null) {
-            Intent intent = new Intent(this, ChatListEditActivity.class);
-            intent.putExtra("id", config.bufferViewId());
-            startActivity(intent);
-        }
-    };
-    QBufferViewManager manager;
-    @Bind(R.id.list)
-    RecyclerView list;
-    @Bind(R.id.add)
-    FloatingActionButton add;
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    ChatListAdapter adapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_chatlist_list);
-        ButterKnife.bind(this);
-
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.setItemAnimator(new DefaultItemAnimator());
-        adapter = new ChatListAdapter();
-        list.setAdapter(adapter);
-        list.addItemDecoration(new DividerItemDecoration(this));
-
-        add.setOnClickListener(view -> startActivity(new Intent(this, ChatListCreateActivity.class)));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    protected void onConnected() {
-        manager = context.client().bufferViewManager();
-        adapter.setManager(manager);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        manager = null;
-        adapter.setManager(null);
-    }
-
-    interface OnQBufferViewConfigClickListener {
-        void onClick(QBufferViewConfig config);
-    }
-
-    private class ChatListAdapter extends RecyclerView.Adapter<ChatListViewHolder> {
-        final AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
-        QBufferViewManager manager;
-
-        public void setManager(QBufferViewManager manager) {
-            if (this.manager != null)
-                this.manager.bufferViewConfigs().removeCallback(wrapper);
-
-            this.manager = manager;
-
-            if (this.manager != null)
-                this.manager.bufferViewConfigs().addCallback(wrapper);
-        }
-
-        @Override
-        public ChatListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            View view = inflater.inflate(R.layout.widget_chatlist, parent, false);
-            return new ChatListViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(ChatListViewHolder holder, int position) {
-            holder.bind(manager != null ? manager.bufferViewConfigs().get(position) : null);
-        }
-
-        @Override
-        public int getItemCount() {
-            return manager == null ? 0 : manager.bufferViewConfigs().size();
-        }
-    }
-
-    class ChatListViewHolder extends RecyclerView.ViewHolder {
-
-        @Bind(R.id.chatlist_name)
-        TextView name;
-
-        private QBufferViewConfig config;
-
-        public ChatListViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(view -> clickListener.onClick(config));
-        }
-
-        public void bind(QBufferViewConfig config) {
-            this.config = config;
-            name.setText(config == null ? "" : config.bufferViewName());
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java
deleted file mode 100644
index 3db708bff..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/chatlist/MinimumActivityAdapter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.chatlist;
-
-import android.database.DataSetObserver;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.SpinnerAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-class MinimumActivityAdapter implements SpinnerAdapter {
-    final List<QBufferViewConfig.MinimumActivity> list = Arrays.asList(QBufferViewConfig.MinimumActivity.values());
-    private final AppContext context;
-
-    public MinimumActivityAdapter(AppContext context) {
-        this.context = context;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QBufferViewConfig.MinimumActivity minimumActivity = getItem(position);
-        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.minimumActivity(minimumActivity));
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public int getCount() {
-        return list.size();
-    }
-
-    @Override
-    public QBufferViewConfig.MinimumActivity getItem(int position) {
-        return list.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return getItem(position).id;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QBufferViewConfig.MinimumActivity minimumActivity = getItem(position);
-        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.minimumActivity(minimumActivity));
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return list.isEmpty();
-    }
-
-    public int indexOf(QBufferViewConfig.MinimumActivity minimumActivity) {
-        return list.indexOf(minimumActivity);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityCreateActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityCreateActivity.java
deleted file mode 100644
index 8eb5b4fb6..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityCreateActivity.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.identity.nick.IdentityNickListActivity;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.AnimationHelper;
-
-public class IdentityCreateActivity extends BoundActivity {
-
-    private final QIdentity identity = Identity.createDefault();
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    @Bind(R.id.identityName)
-    EditText identityName;
-    @Bind(R.id.realName)
-    EditText realName;
-    @Bind(R.id.ident)
-    EditText ident;
-    @Bind(R.id.nicks)
-    Button nicks;
-    @Bind(R.id.kickReason)
-    EditText kickReason;
-    @Bind(R.id.partReason)
-    EditText partReason;
-    @Bind(R.id.quitReason)
-    EditText quitReason;
-    @Bind(R.id.awayReason)
-    EditText awayReason;
-    @Bind(R.id.useAwayOnDetach)
-    SwitchCompat useAwayOnDetach;
-    @Bind(R.id.groupAwayOnDetach)
-    ViewGroup groupAwayOnDetach;
-    @Bind(R.id.awayOnDetachReason)
-    EditText awayOnDetachReason;
-    private ArrayList<String> nickList;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_identity_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        useAwayOnDetach.setOnCheckedChangeListener(this::updateAwayOnDetachReasonVisible);
-        updateAwayOnDetachReasonVisible(null, useAwayOnDetach.isChecked());
-
-        nicks.setOnClickListener(v -> {
-            Intent intent1 = new Intent(IdentityCreateActivity.this, IdentityNickListActivity.class);
-            intent1.putStringArrayListExtra("nicks", nickList);
-            startActivityForResult(intent1, 0, null);
-        });
-
-        initializeDefaults();
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            ArrayList<String> nickList = data.getStringArrayListExtra("nicks");
-            if (nickList != null)
-                this.nickList = nickList;
-        }
-    }
-
-    private void updateAwayOnDetachReasonVisible(CompoundButton button, boolean visible) {
-        awayOnDetachReason.setEnabled(visible);
-
-        IdentityCreateActivity.this.updateViewGroupStatus(groupAwayOnDetach, visible);
-    }
-
-    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
-        if (visible) {
-            AnimationHelper.expand(group);
-        } else {
-            AnimationHelper.collapse(group);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_confirm: {
-                if (identity != null) {
-                    Identity newIdentity = Identity.createDefault();
-                    newIdentity._copyFrom(identity);
-
-                    if (!identity.identityName().equals(identityName.getText().toString()))
-                        newIdentity._setIdentityName(identityName.getText().toString());
-
-                    if (!identity.realName().equals(realName.getText().toString()))
-                        newIdentity._setRealName(realName.getText().toString());
-
-                    if (!identity.ident().equals(ident.getText().toString()))
-                        newIdentity._setIdent(ident.getText().toString());
-
-                    if (!identity.nicks().equals(nickList))
-                        newIdentity._setNicks(nickList);
-
-                    if (!identity.kickReason().equals(kickReason.getText().toString()))
-                        newIdentity._setKickReason(kickReason.getText().toString());
-
-                    if (!identity.partReason().equals(partReason.getText().toString()))
-                        newIdentity._setPartReason(partReason.getText().toString());
-
-                    if (!identity.quitReason().equals(quitReason.getText().toString()))
-                        newIdentity._setQuitReason(quitReason.getText().toString());
-
-                    if (!identity.awayReason().equals(awayReason.getText().toString()))
-                        newIdentity._setAwayReason(awayReason.getText().toString());
-
-                    if (!identity.detachAwayEnabled() == useAwayOnDetach.isChecked())
-                        newIdentity._setDetachAwayEnabled(useAwayOnDetach.isChecked());
-
-                    if (!identity.detachAwayReason().equals(awayOnDetachReason.getText().toString()))
-                        newIdentity._setDetachAwayReason(awayOnDetachReason.getText().toString());
-
-                    context.client().createIdentity(newIdentity, Collections.emptyMap());
-
-                    finish();
-                }
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void initializeDefaults() {
-        this.identityName.setText(identity.identityName());
-        this.realName.setText(identity.realName());
-        this.ident.setText(identity.ident());
-        this.nickList = new ArrayList<>(identity.nicks());
-        this.kickReason.setText(identity.kickReason());
-        this.partReason.setText(identity.partReason());
-        this.quitReason.setText(identity.quitReason());
-        this.awayReason.setText(identity.awayReason());
-        this.useAwayOnDetach.setChecked(identity.detachAwayEnabled());
-        this.awayOnDetachReason.setText(identity.detachAwayReason());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityEditActivity.java
deleted file mode 100644
index ff861908e..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityEditActivity.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import java.util.ArrayList;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.Identity;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.identity.nick.IdentityNickListActivity;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.AnimationHelper;
-
-public class IdentityEditActivity extends BoundActivity {
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    @Bind(R.id.identityName)
-    EditText identityName;
-
-    @Bind(R.id.realName)
-    EditText realName;
-
-    @Bind(R.id.ident)
-    EditText ident;
-
-    @Bind(R.id.nicks)
-    Button nicks;
-
-    @Bind(R.id.kickReason)
-    EditText kickReason;
-
-    @Bind(R.id.partReason)
-    EditText partReason;
-
-    @Bind(R.id.quitReason)
-    EditText quitReason;
-
-    @Bind(R.id.awayReason)
-    EditText awayReason;
-
-    @Bind(R.id.useAwayOnDetach)
-    SwitchCompat useAwayOnDetach;
-
-    @Bind(R.id.groupAwayOnDetach)
-    ViewGroup groupAwayOnDetach;
-
-    @Bind(R.id.awayOnDetachReason)
-    EditText awayOnDetachReason;
-
-    int id;
-    private QIdentity identity;
-    private ArrayList<String> nickList;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Intent intent = getIntent();
-        if (intent == null) {
-            finish();
-            return;
-        }
-
-        id = intent.getIntExtra("id", -1);
-
-        setContentView(R.layout.activity_identity_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        useAwayOnDetach.setOnCheckedChangeListener(this::updateAwayOnDetachReasonVisible);
-        updateAwayOnDetachReasonVisible(null, useAwayOnDetach.isChecked());
-
-        nicks.setOnClickListener(v -> {
-            Intent intent1 = new Intent(IdentityEditActivity.this, IdentityNickListActivity.class);
-            intent1.putStringArrayListExtra("nicks", nickList);
-            startActivityForResult(intent1, 0, null);
-        });
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            ArrayList<String> nickList = data.getStringArrayListExtra("nicks");
-            if (nickList != null)
-                this.nickList = nickList;
-        }
-    }
-
-    private void updateAwayOnDetachReasonVisible(CompoundButton button, boolean visible) {
-        awayOnDetachReason.setEnabled(visible);
-
-        IdentityEditActivity.this.updateViewGroupStatus(groupAwayOnDetach, visible);
-    }
-
-    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
-        if (visible) {
-            AnimationHelper.expand(group);
-        } else {
-            AnimationHelper.collapse(group);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (hasChanged(build())) {
-            new MaterialDialog.Builder(this)
-                    .content(R.string.confirmationUnsavedChanges)
-                    .positiveText(R.string.actionYes)
-                    .negativeText(R.string.actionNo)
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog, which) -> {
-                        save();
-                        super.onBackPressed();
-                    })
-                    .onNegative((dialog, which) -> super.onBackPressed())
-                    .show();
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_delete: {
-                new MaterialDialog.Builder(this)
-                        .content(getString(R.string.confirmationDelete, identity.identityName()))
-                        .positiveText(R.string.actionYes)
-                        .negativeText(R.string.actionNo)
-                        .positiveColor(context.themeUtil().res.colorAccent)
-                        .negativeColor(context.themeUtil().res.colorForeground)
-                        .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                        .onPositive((dialog, which) -> {
-                            finish();
-                            context.client().removeIdentity(identity.id());
-                        })
-                        .build()
-                        .show();
-            }
-            return true;
-            case R.id.action_confirm: {
-                save();
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void save() {
-        Identity after = build();
-        if (hasChanged(after))
-            identity.update(after);
-    }
-
-    private boolean hasChanged(Identity identity) {
-        return this.identity != null && identity != null && !this.identity.equals(identity);
-    }
-
-    private Identity build() {
-        if (identity == null) {
-            return null;
-        } else {
-            Identity newIdentity = Identity.createDefault();
-            newIdentity._copyFrom(identity);
-
-            if (!identity.identityName().equals(identityName.getText().toString()))
-                newIdentity._setIdentityName(identityName.getText().toString());
-
-            if (!identity.realName().equals(realName.getText().toString()))
-                newIdentity._setRealName(realName.getText().toString());
-
-            if (!identity.ident().equals(ident.getText().toString()))
-                newIdentity._setIdent(ident.getText().toString());
-
-            if (!identity.nicks().equals(nickList))
-                newIdentity._setNicks(nickList);
-
-            if (!identity.kickReason().equals(kickReason.getText().toString()))
-                newIdentity._setKickReason(kickReason.getText().toString());
-
-            if (!identity.partReason().equals(partReason.getText().toString()))
-                newIdentity._setPartReason(partReason.getText().toString());
-
-            if (!identity.quitReason().equals(quitReason.getText().toString()))
-                newIdentity._setQuitReason(quitReason.getText().toString());
-
-            if (!identity.awayReason().equals(awayReason.getText().toString()))
-                newIdentity._setAwayReason(awayReason.getText().toString());
-
-            if (!identity.detachAwayEnabled() == useAwayOnDetach.isChecked())
-                newIdentity._setDetachAwayEnabled(useAwayOnDetach.isChecked());
-
-            if (!identity.detachAwayReason().equals(awayOnDetachReason.getText().toString()))
-                newIdentity._setDetachAwayReason(awayOnDetachReason.getText().toString());
-
-            return newIdentity;
-        }
-    }
-
-    @Override
-    protected void onConnected() {
-        setIdentity(context.client().identityManager().identity(id));
-    }
-
-    private void setIdentity(QIdentity identity) {
-        QIdentity oldIdentity = this.identity;
-        this.identity = identity;
-
-        if (identity != null) {
-
-            if (oldIdentity == null || identityName.getText().toString().equals(oldIdentity.identityName()))
-                this.identityName.setText(identity.identityName());
-
-            if (oldIdentity == null || realName.getText().toString().equals(oldIdentity.realName()))
-                this.realName.setText(identity.realName());
-
-            if (oldIdentity == null || ident.getText().toString().equals(oldIdentity.ident()))
-                this.ident.setText(identity.ident());
-
-            if (oldIdentity == null || nickList.equals(new ArrayList<>(oldIdentity.nicks())))
-                this.nickList = new ArrayList<>(identity.nicks());
-
-            if (oldIdentity == null || kickReason.getText().toString().equals(oldIdentity.kickReason()))
-                this.kickReason.setText(identity.kickReason());
-
-            if (oldIdentity == null || partReason.getText().toString().equals(oldIdentity.partReason()))
-                this.partReason.setText(identity.partReason());
-
-            if (oldIdentity == null || quitReason.getText().toString().equals(oldIdentity.quitReason()))
-                this.quitReason.setText(identity.quitReason());
-
-            if (oldIdentity == null || awayReason.getText().toString().equals(oldIdentity.awayReason()))
-                this.awayReason.setText(identity.awayReason());
-
-            if (oldIdentity == null || useAwayOnDetach.isChecked() == oldIdentity.detachAwayEnabled())
-                this.useAwayOnDetach.setChecked(identity.detachAwayEnabled());
-
-            if (oldIdentity == null || awayOnDetachReason.getText().toString().equals(oldIdentity.identityName()))
-                this.awayOnDetachReason.setText(identity.detachAwayReason());
-        }
-    }
-
-    @Override
-    protected void onDisconnected() {
-        setIdentity(null);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityListActivity.java
deleted file mode 100644
index 6042a3e86..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentityListActivity.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.client.IdentityManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class IdentityListActivity extends BoundActivity {
-
-    final OnQIdentityClickListener clickListener = identity -> {
-        if (identity != null) {
-            Intent intent = new Intent(this, IdentityEditActivity.class);
-            intent.putExtra("id", identity.id());
-            startActivity(intent);
-        }
-    };
-    IdentityManager manager;
-    @Bind(R.id.list)
-    RecyclerView list;
-    @Bind(R.id.add)
-    FloatingActionButton add;
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    IdentityAdapter adapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.setItemAnimator(new DefaultItemAnimator());
-        list.addItemDecoration(new DividerItemDecoration(this));
-        adapter = new IdentityAdapter();
-        list.setAdapter(adapter);
-
-        add.setOnClickListener(view -> startActivity(new Intent(this, IdentityCreateActivity.class)));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    protected void onConnected() {
-        manager = context.client().identityManager();
-        adapter.setManager(manager);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        manager = null;
-        adapter.setManager(null);
-    }
-
-    interface OnQIdentityClickListener {
-        void onClick(QIdentity network);
-    }
-
-    private class IdentityAdapter extends RecyclerView.Adapter<IdentityViewHolder> {
-        final AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
-        IdentityManager manager;
-
-        public void setManager(IdentityManager manager) {
-            if (this.manager != null)
-                this.manager.identities().addCallback(wrapper);
-
-            this.manager = manager;
-
-            if (this.manager != null)
-                this.manager.identities().addCallback(wrapper);
-        }
-
-        @Override
-        public IdentityViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            View view = inflater.inflate(R.layout.widget_settings_network, parent, false);
-            return new IdentityViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(IdentityViewHolder holder, int position) {
-            holder.bind(manager != null ? manager.identities().get(position) : null);
-        }
-
-        @Override
-        public int getItemCount() {
-            return manager == null ? 0 : manager.identities().size();
-        }
-    }
-
-    class IdentityViewHolder extends RecyclerView.ViewHolder {
-
-        @Bind(R.id.network_name)
-        TextView name;
-
-        private QIdentity identity;
-
-        public IdentityViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(view -> clickListener.onClick(identity));
-        }
-
-        public void bind(QIdentity identity) {
-            this.identity = identity;
-            name.setText(identity == null ? "" : identity.identityName());
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentitySpinnerAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentitySpinnerAdapter.java
deleted file mode 100644
index 27ca73fbe..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/IdentitySpinnerAdapter.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity;
-
-import android.content.res.Resources;
-import android.database.DataSetObserver;
-import android.support.annotation.Nullable;
-import android.support.v7.view.ContextThemeWrapper;
-import android.support.v7.widget.ThemedSpinnerAdapter;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.client.IdentityManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public class IdentitySpinnerAdapter implements ThemedSpinnerAdapter, GeneralCallback {
-    private final Set<DataSetObserver> observers = new HashSet<>();
-    private AndroidObservableSortedList<QIdentity> identities;
-    @Nullable
-    private Resources.Theme theme;
-
-    public void setIdentityManager(IdentityManager identityManager) {
-        if (identityManager != null) {
-            this.identities = identityManager.identities();
-            this.identities.addCallback(new UICallback() {
-                @Override
-                public void notifyItemInserted(int position) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemChanged(int position) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemRemoved(int position) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemMoved(int from, int to) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemRangeInserted(int position, int count) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemRangeChanged(int position, int count) {
-                    notifyChanged(null);
-                }
-
-                @Override
-                public void notifyItemRangeRemoved(int position, int count) {
-                    notifyChanged(null);
-                }
-            });
-        } else {
-            this.identities = null;
-        }
-        notifyChanged(null);
-    }
-
-    @Nullable
-    @Override
-    public Resources.Theme getDropDownViewTheme() {
-        return theme;
-    }
-
-    @Override
-    public void setDropDownViewTheme(@Nullable Resources.Theme theme) {
-        this.theme = theme;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(new ContextThemeWrapper(parent.getContext(), theme));
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QIdentity config = getItem(position);
-        view.setText(config == null ? "" : config.identityName());
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-        observers.add(observer);
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-        observers.remove(observer);
-    }
-
-    @Override
-    public int getCount() {
-        return identities == null ? 0 : identities.size();
-    }
-
-    @Override
-    public QIdentity getItem(int position) {
-        if (position >= 0 && identities != null && position < identities.size())
-            return identities.get(position);
-        else
-            return null;
-    }
-
-    @Override
-    public long getItemId(int position) {
-        QIdentity identity = getItem(position);
-        if (identity != null)
-            return identity.id();
-        else
-            return -1;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QIdentity identity = getItem(position);
-        view.setText(identity == null ? "" : identity.identityName());
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return getCount() == 0;
-    }
-
-    @Override
-    public void notifyChanged(Object o) {
-        for (DataSetObserver observer : observers) {
-            observer.onChanged();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickAdapter.java
deleted file mode 100644
index 552350bda..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickAdapter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity.nick;
-
-import android.graphics.Color;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.util.Collections;
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperViewHolder;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
-import de.kuschku.util.annotationbind.AutoBinder;
-
-public class IdentityNickAdapter
-        extends RecyclerView.Adapter<IdentityNickAdapter.IdentityNickViewHolder> implements ItemTouchHelperAdapter {
-
-    private final List<String> nicks;
-    private final OnStartDragListener dragStartListener;
-    private IdentityNickListActivity.OnIdentityNickClickListener onItemClickListener;
-
-    public IdentityNickAdapter(List<String> nicks, OnStartDragListener dragStartListener) {
-        this.nicks = nicks;
-        this.dragStartListener = dragStartListener;
-    }
-
-    @Override
-    public IdentityNickViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        View view = inflater.inflate(R.layout.widget_identitynick, parent, false);
-        return new IdentityNickViewHolder(view);
-    }
-
-    @Override
-    public void onBindViewHolder(IdentityNickViewHolder holder, int position) {
-        holder.bind(nicks.get(position));
-        holder.drag_handle.setOnTouchListener((v, event) -> {
-            if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
-                dragStartListener.onStartDrag(holder);
-                holder.itemView.setSelected(true);
-            }
-            return false;
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return nicks.size();
-    }
-
-    @Override
-    public boolean onItemMove(int fromPosition, int toPosition) {
-        Collections.swap(nicks, fromPosition, toPosition);
-        notifyItemMoved(fromPosition, toPosition);
-        return true;
-    }
-
-    public void setOnItemClickListener(IdentityNickListActivity.OnIdentityNickClickListener onItemClickListener) {
-        this.onItemClickListener = onItemClickListener;
-    }
-
-    class IdentityNickViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder {
-
-        @Bind(R.id.text)
-        TextView text;
-
-        @Bind(R.id.drag_handle)
-        ImageView drag_handle;
-
-        private String nick;
-
-        public IdentityNickViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(v -> onItemClickListener.onClick(nick));
-        }
-
-        public void bind(String nick) {
-            this.nick = nick;
-            text.setText(nick == null ? "" : nick);
-        }
-
-        @Override
-        public void onItemSelected() {
-            itemView.setBackgroundColor(AutoBinder.obtainColor(R.attr.colorBackground, itemView.getContext().getTheme()));
-        }
-
-        @Override
-        public void onItemClear() {
-            itemView.setBackgroundColor(Color.TRANSPARENT);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickListActivity.java
deleted file mode 100644
index ff212968a..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/identity/nick/IdentityNickListActivity.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.identity.nick;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.support.v7.widget.helper.ItemTouchHelper;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import java.util.ArrayList;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.SimpleItemTouchHelperCallback;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.observables.lists.ObservableList;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class IdentityNickListActivity extends BoundActivity implements OnStartDragListener {
-
-    @Bind(R.id.list)
-    RecyclerView list;
-
-    @Bind(R.id.add)
-    FloatingActionButton add;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    IdentityNickAdapter adapter;
-    ItemTouchHelper itemTouchHelper;
-    ObservableList<String> nicks;
-    final OnIdentityNickClickListener clickListener = nick -> {
-        MaterialDialog dialog = new MaterialDialog.Builder(this)
-                .input("", nick, false, (dialog1, input) -> {
-
-                })
-                .positiveText("Save")
-                .negativeText("Cancel")
-                .neutralText("Delete")
-                .positiveColor(context.themeUtil().res.colorAccent)
-                .negativeColor(context.themeUtil().res.colorForeground)
-                .neutralColor(context.themeUtil().res.colorForeground)
-                .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                .onPositive((dialog1, which) -> {
-                    String text = dialog1.getInputEditText().getText().toString().trim();
-                    nicks.set(nicks.indexOf(nick), text);
-                })
-                .onNeutral((dialog1, which) -> nicks.remove(nick))
-                .build();
-        dialog.show();
-    };
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        Intent intent = getIntent();
-        ArrayList<String> nickList;
-        if (intent != null && (nickList = intent.getStringArrayListExtra("nicks")) != null) {
-            nicks = new ObservableList<>(nickList);
-        } else {
-            nicks = new ObservableList<>();
-        }
-
-        adapter = new IdentityNickAdapter(nicks, this);
-        nicks.addCallback(new AdapterUICallbackWrapper(adapter));
-
-        list.setAdapter(adapter);
-        list.setHasFixedSize(true);
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.addItemDecoration(new DividerItemDecoration(this));
-        adapter.setOnItemClickListener(clickListener);
-
-        ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
-        itemTouchHelper = new ItemTouchHelper(callback);
-        itemTouchHelper.attachToRecyclerView(list);
-
-        add.setOnClickListener(v -> {
-            MaterialDialog dialog = new MaterialDialog.Builder(this)
-                    .input("", "", false, (dialog1, input) -> {
-
-                    })
-                    .positiveText("Save")
-                    .negativeText("Cancel")
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog1, which) -> {
-                        String nick = dialog1.getInputEditText().getText().toString().trim();
-                        if (!nicks.contains(nick))
-                            nicks.add(nick);
-                    })
-                    .build();
-            dialog.show();
-        });
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_confirm: {
-                Intent intent = new Intent();
-                intent.putStringArrayListExtra("nicks", nicks);
-                setResult(RESULT_OK, intent);
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-    }
-
-    @Override
-    public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
-        itemTouchHelper.startDrag(viewHolder);
-    }
-
-    interface OnIdentityNickClickListener {
-        void onClick(String nick);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreListActivity.java
deleted file mode 100644
index da244a808..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreListActivity.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper.IgnoreRuleSerializerHelper;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class IgnoreListActivity extends BoundActivity {
-    final OnIgnoreRuleClickListener clickListener = ignoreRule -> {
-        if (ignoreRule != null) {
-            Intent intent = new Intent(this, IgnoreRuleEditActivity.class);
-            intent.putExtra("rule", IgnoreRuleSerializerHelper.serialize(ignoreRule));
-            startActivityForResult(intent, 0, null);
-        }
-    };
-    QIgnoreListManager manager;
-    final OnIgnoreRuleActiveListener activeListener = (ignoreRule, active) -> {
-        if (ignoreRule != null) {
-            manager._toggleIgnoreRule(ignoreRule, active);
-            manager.requestUpdate();
-        }
-    };
-
-    @Bind(R.id.list)
-    RecyclerView list;
-    @Bind(R.id.add)
-    FloatingActionButton add;
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    IgnoreRuleAdapter adapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.setItemAnimator(new DefaultItemAnimator());
-        list.addItemDecoration(new DividerItemDecoration(this));
-        adapter = new IgnoreRuleAdapter();
-        list.setAdapter(adapter);
-
-        add.setOnClickListener(view -> startActivityForResult(new Intent(this, IgnoreRuleEditActivity.class), 0, null));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    protected void onConnected() {
-        manager = context.client().ignoreListManager();
-        adapter.setManager(manager);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        manager = null;
-        adapter.setManager(null);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            if (resultCode == RESULT_OK) {
-                IgnoreListManager.IgnoreListItem item = IgnoreRuleSerializerHelper.deserialize(data.getBundleExtra("rule"));
-                if (data.getStringExtra("original") != null)
-                    manager._removeIgnoreListItem(data.getStringExtra("original"));
-                manager._addIgnoreListItem(item);
-                manager.requestUpdate();
-            } else if (resultCode == IgnoreRuleEditActivity.RESULT_DELETE) {
-                manager._removeIgnoreListItem(data.getStringExtra("original"));
-                manager.requestUpdate();
-            }
-        }
-    }
-
-    interface OnIgnoreRuleClickListener {
-        void onClick(IgnoreListManager.IgnoreListItem network);
-    }
-
-    interface OnIgnoreRuleActiveListener {
-        void onChange(IgnoreListManager.IgnoreListItem network, boolean active);
-    }
-
-    private class IgnoreRuleAdapter extends RecyclerView.Adapter<IgnoreRuleViewHolder> {
-        final AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
-        QIgnoreListManager manager;
-
-        public void setManager(QIgnoreListManager manager) {
-            if (this.manager != null)
-                this.manager.ignoreList().addCallback(wrapper);
-
-            this.manager = manager;
-
-            if (this.manager != null)
-                this.manager.ignoreList().addCallback(wrapper);
-        }
-
-        @Override
-        public IgnoreRuleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            View view = inflater.inflate(R.layout.widget_settings_ignorerule, parent, false);
-            return new IgnoreRuleViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(IgnoreRuleViewHolder holder, int position) {
-            holder.bind(manager != null ? manager.ignoreList().get(position) : null);
-        }
-
-        @Override
-        public int getItemCount() {
-            return manager == null ? 0 : manager.ignoreList().size();
-        }
-    }
-
-    class IgnoreRuleViewHolder extends RecyclerView.ViewHolder {
-        @Bind(R.id.text)
-        TextView name;
-
-        @Bind(R.id.active)
-        SwitchCompat active;
-
-        private IgnoreListManager.IgnoreListItem ignoreRule;
-
-        public IgnoreRuleViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(view -> clickListener.onClick(ignoreRule));
-            active.setOnCheckedChangeListener((view, checked) -> activeListener.onChange(ignoreRule, checked));
-        }
-
-        public void bind(IgnoreListManager.IgnoreListItem ignoreRule) {
-            this.ignoreRule = ignoreRule;
-            name.setText(ignoreRule == null ? "" : ignoreRule.getIgnoreRule().rule());
-            active.setChecked(ignoreRule.isActive());
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreRuleEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreRuleEditActivity.java
deleted file mode 100644
index 98ab05672..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/IgnoreRuleEditActivity.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.AppCompatSpinner;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.CheckBox;
-import android.widget.EditText;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper.IgnoreRuleSerializerHelper;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper.IgnoreTypeAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper.ScopeTypeAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper.StrictnessTypeAdapter;
-import de.kuschku.util.servicebound.BoundActivity;
-
-public class IgnoreRuleEditActivity extends BoundActivity {
-    public static final int RESULT_DELETE = -2;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    @Bind(R.id.strictness)
-    AppCompatSpinner strictness;
-
-    @Bind(R.id.type)
-    AppCompatSpinner type;
-
-    @Bind(R.id.ignoreRule)
-    EditText ignoreRule;
-
-    @Bind(R.id.isRegEx)
-    CheckBox isRegEx;
-
-    @Bind(R.id.scopeType)
-    AppCompatSpinner scopeType;
-
-    @Bind(R.id.scope)
-    EditText scope;
-
-    private IgnoreListManager.IgnoreListItem item;
-    private Bundle original;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_ignorerule_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        StrictnessTypeAdapter strictnessTypeAdapter = new StrictnessTypeAdapter(context);
-        strictness.setAdapter(strictnessTypeAdapter);
-
-        IgnoreTypeAdapter ignoreTypeAdapter = new IgnoreTypeAdapter(context);
-        type.setAdapter(ignoreTypeAdapter);
-
-        ScopeTypeAdapter scopeTypeAdapter = new ScopeTypeAdapter(context);
-        scopeType.setAdapter(scopeTypeAdapter);
-
-        Intent intent = getIntent();
-        if (intent != null) {
-            original = intent.getBundleExtra("rule");
-            if (original != null) {
-                item = IgnoreRuleSerializerHelper.deserialize(original);
-
-                strictness.setSelection(strictnessTypeAdapter.indexOf(item.getStrictness()));
-                type.setSelection(ignoreTypeAdapter.indexOf(item.getType()));
-                ignoreRule.setText(item.getIgnoreRule().rule());
-                isRegEx.setChecked(item.isRegEx());
-                scopeType.setSelection(scopeTypeAdapter.indexOf(item.getScope()));
-                scope.setText(item.getScopeRule());
-            }
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        if (original != null) {
-            getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        } else {
-            getMenuInflater().inflate(R.menu.confirm, menu);
-        }
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (hasChanged(build())) {
-            new MaterialDialog.Builder(this)
-                    .content(R.string.confirmationUnsavedChanges)
-                    .positiveText(R.string.actionYes)
-                    .negativeText(R.string.actionNo)
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog, which) -> {
-                        save();
-                        super.onBackPressed();
-                    })
-                    .onNegative((dialog, which) -> super.onBackPressed())
-                    .show();
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_delete: {
-                new MaterialDialog.Builder(this)
-                        .content(getString(R.string.confirmationDelete, this.item.getIgnoreRule().rule()))
-                        .positiveText(R.string.actionYes)
-                        .negativeText(R.string.actionNo)
-                        .positiveColor(context.themeUtil().res.colorAccent)
-                        .negativeColor(context.themeUtil().res.colorForeground)
-                        .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                        .onPositive((dialog, which) -> {
-                            delete();
-                            finish();
-                        })
-                        .build()
-                        .show();
-            }
-            return true;
-            case R.id.action_confirm: {
-                save();
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void delete() {
-        Intent intent = new Intent();
-        intent.putExtra("original", original.getString("ignoreRule"));
-        setResult(RESULT_DELETE, intent);
-    }
-
-    private void save() {
-        Intent intent = new Intent();
-        if (original != null)
-            intent.putExtra("original", original.getString("ignoreRule"));
-        intent.putExtra("rule", build());
-        setResult(RESULT_OK, intent);
-    }
-
-    private boolean hasChanged(Bundle bundle) {
-        return this.original != null && bundle != null && !this.original.equals(bundle);
-    }
-
-    private Bundle build() {
-        Bundle bundle = new Bundle();
-        bundle.putInt("strictness", (int) strictness.getSelectedItemId());
-        bundle.putInt("type", (int) type.getSelectedItemId());
-        bundle.putString("ignoreRule", ignoreRule.getText().toString());
-        bundle.putBoolean("isRegEx", isRegEx.isChecked());
-        bundle.putInt("scopeType", (int) scopeType.getSelectedItemId());
-        bundle.putString("scope", scope.getText().toString());
-        return bundle;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreRuleSerializerHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreRuleSerializerHelper.java
deleted file mode 100644
index dfb90ef05..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreRuleSerializerHelper.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper;
-
-import android.os.Bundle;
-
-import de.kuschku.libquassel.syncables.types.impl.IgnoreListManager;
-
-public class IgnoreRuleSerializerHelper {
-    private IgnoreRuleSerializerHelper() {
-    }
-
-    public static Bundle serialize(IgnoreListManager.IgnoreListItem ignoreRule) {
-        Bundle bundle = new Bundle();
-        bundle.putInt("type", ignoreRule.getType().value);
-        bundle.putString("ignoreRule", ignoreRule.getIgnoreRule().rule());
-        bundle.putBoolean("isRegEx", ignoreRule.isRegEx());
-        bundle.putInt("strictness", ignoreRule.getStrictness().value);
-        bundle.putInt("scope", ignoreRule.getScope().value);
-        bundle.putString("scopeRule", ignoreRule.getScopeRule());
-        bundle.putBoolean("isActive", ignoreRule.isActive());
-        return bundle;
-    }
-
-    public static IgnoreListManager.IgnoreListItem deserialize(Bundle bundle) {
-        return new IgnoreListManager.IgnoreListItem(
-                bundle.getInt("type"),
-                bundle.getString("ignoreRule"),
-                bundle.getBoolean("isRegEx"),
-                bundle.getInt("strictness"),
-                bundle.getInt("scope"),
-                bundle.getString("scopeRule"),
-                bundle.getBoolean("isActive")
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreTypeAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreTypeAdapter.java
deleted file mode 100644
index 9bf3e16a9..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/IgnoreTypeAdapter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper;
-
-import android.database.DataSetObserver;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.SpinnerAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-public class IgnoreTypeAdapter implements SpinnerAdapter {
-    final List<QIgnoreListManager.IgnoreType> list = Arrays.asList(QIgnoreListManager.IgnoreType.values());
-    private final AppContext context;
-
-    public IgnoreTypeAdapter(AppContext context) {
-        this.context = context;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QIgnoreListManager.IgnoreType minimumActivity = getItem(position);
-        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.ignoreType(minimumActivity));
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public int getCount() {
-        return list.size();
-    }
-
-    @Override
-    public QIgnoreListManager.IgnoreType getItem(int position) {
-        return list.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return getItem(position).value;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QIgnoreListManager.IgnoreType ignoreType = getItem(position);
-        view.setText(ignoreType == null ? "" : context.themeUtil().translations.ignoreType(ignoreType));
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return list.isEmpty();
-    }
-
-    public int indexOf(QIgnoreListManager.IgnoreType ignoreType) {
-        return list.indexOf(ignoreType);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/ScopeTypeAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/ScopeTypeAdapter.java
deleted file mode 100644
index 6a12181ff..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/ScopeTypeAdapter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper;
-
-import android.database.DataSetObserver;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.SpinnerAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-public class ScopeTypeAdapter implements SpinnerAdapter {
-    final List<QIgnoreListManager.ScopeType> list = Arrays.asList(QIgnoreListManager.ScopeType.values());
-    private final AppContext context;
-
-    public ScopeTypeAdapter(AppContext context) {
-        this.context = context;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QIgnoreListManager.ScopeType minimumActivity = getItem(position);
-        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.scopeType(minimumActivity));
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public int getCount() {
-        return list.size();
-    }
-
-    @Override
-    public QIgnoreListManager.ScopeType getItem(int position) {
-        return list.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return getItem(position).value;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QIgnoreListManager.ScopeType scopeType = getItem(position);
-        view.setText(scopeType == null ? "" : context.themeUtil().translations.scopeType(scopeType));
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return list.isEmpty();
-    }
-
-    public int indexOf(QIgnoreListManager.ScopeType scopeType) {
-        return list.indexOf(scopeType);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/StrictnessTypeAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/StrictnessTypeAdapter.java
deleted file mode 100644
index ef22f8e5f..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/ignore/helper/StrictnessTypeAdapter.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.ignore.helper;
-
-import android.database.DataSetObserver;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.SpinnerAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-
-public class StrictnessTypeAdapter implements SpinnerAdapter {
-    final List<QIgnoreListManager.StrictnessType> list = Arrays.asList(
-            QIgnoreListManager.StrictnessType.SoftStrictness,
-            QIgnoreListManager.StrictnessType.HardStrictness
-    );
-    private final AppContext context;
-
-    public StrictnessTypeAdapter(AppContext context) {
-        this.context = context;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QIgnoreListManager.StrictnessType minimumActivity = getItem(position);
-        view.setText(minimumActivity == null ? "" : context.themeUtil().translations.strictnessType(minimumActivity));
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-
-    }
-
-    @Override
-    public int getCount() {
-        return list.size();
-    }
-
-    @Override
-    public QIgnoreListManager.StrictnessType getItem(int position) {
-        return list.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return getItem(position).value;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QIgnoreListManager.StrictnessType strictnessType = getItem(position);
-        view.setText(strictnessType == null ? "" : context.themeUtil().translations.strictnessType(strictnessType));
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return list.isEmpty();
-    }
-
-    public int indexOf(QIgnoreListManager.StrictnessType strictnessType) {
-        return list.indexOf(strictnessType);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/AllNetworksItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/AllNetworksItem.java
deleted file mode 100644
index db4e40448..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/AllNetworksItem.java
+++ /dev/null
@@ -1,749 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.List;
-
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.types.impl.IrcChannel;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcUser;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.irc.IrcCaseMappers;
-import de.kuschku.util.irc.chanmodes.IrcModeProvider;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-
-class AllNetworksItem implements QNetwork {
-    private final Context context;
-
-    public AllNetworksItem(Context context) {
-        this.context = context;
-    }
-
-    @Override
-    public int networkId() {
-        return 0;
-    }
-
-    @Override
-    public boolean isMyNick(String nick) {
-        return false;
-    }
-
-    @Override
-    public boolean isMe(QIrcUser ircuser) {
-        return false;
-    }
-
-    @Override
-    public boolean isChannelName(String channelname) {
-        return false;
-    }
-
-    @Override
-    public boolean isConnected() {
-        return false;
-    }
-
-    @Override
-    public void setConnected(boolean isConnected) {
-
-    }
-
-    @Override
-    public ConnectionState connectionState() {
-        return null;
-    }
-
-    @Override
-    public String prefixToMode(char prefix) {
-        return null;
-    }
-
-    @Override
-    public String prefixToMode(String prefix) {
-        return null;
-    }
-
-    @Override
-    public String modeToPrefix(char mode) {
-        return null;
-    }
-
-    @Override
-    public String modeToPrefix(String mode) {
-        return null;
-    }
-
-    @Override
-    public int modeToIndex(String mode) {
-        return 0;
-    }
-
-    @Override
-    public int lowestModeIndex(String mode) {
-        return 0;
-    }
-
-    @NonNull
-    @Override
-    public ChannelModeType channelModeType(char mode) {
-        return null;
-    }
-
-    @NonNull
-    @Override
-    public ChannelModeType channelModeType(String mode) {
-        return null;
-    }
-
-    @Override
-    public String networkName() {
-        return context.getString(R.string.labelAllNetworks);
-    }
-
-    @Override
-    public String currentServer() {
-        return null;
-    }
-
-    @Override
-    public String myNick() {
-        return null;
-    }
-
-    @Override
-    public int latency() {
-        return 0;
-    }
-
-    @Override
-    public QIrcUser me() {
-        return null;
-    }
-
-    @Override
-    public int identity() {
-        return 0;
-    }
-
-    @NonNull
-    @Override
-    public List<String> nicks() {
-        return null;
-    }
-
-    @NonNull
-    @Override
-    public List<String> channels() {
-        return null;
-    }
-
-    @Override
-    public List<NetworkServer> serverList() {
-        return null;
-    }
-
-    @Override
-    public boolean useRandomServer() {
-        return false;
-    }
-
-    @Override
-    public List<String> perform() {
-        return null;
-    }
-
-    @Override
-    public boolean useAutoIdentify() {
-        return false;
-    }
-
-    @Override
-    public String autoIdentifyService() {
-        return null;
-    }
-
-    @Override
-    public String autoIdentifyPassword() {
-        return null;
-    }
-
-    @Override
-    public boolean useSasl() {
-        return false;
-    }
-
-    @Override
-    public String saslAccount() {
-        return null;
-    }
-
-    @Override
-    public String saslPassword() {
-        return null;
-    }
-
-    @Override
-    public boolean useAutoReconnect() {
-        return false;
-    }
-
-    @Override
-    public int autoReconnectInterval() {
-        return 0;
-    }
-
-    @Override
-    public short autoReconnectRetries() {
-        return 0;
-    }
-
-    @Override
-    public boolean unlimitedReconnectRetries() {
-        return false;
-    }
-
-    @Override
-    public boolean rejoinChannels() {
-        return false;
-    }
-
-    @Override
-    public NetworkInfo networkInfo() {
-        return null;
-    }
-
-    @Override
-    public List<String> prefixes() {
-        return null;
-    }
-
-    @Override
-    public List<String> prefixModes() {
-        return null;
-    }
-
-    @Override
-    public IrcModeProvider modeProvider() {
-        return null;
-    }
-
-    @Override
-    public void determinePrefixes() {
-
-    }
-
-    @Override
-    public boolean supports(String param) {
-        return false;
-    }
-
-    @Override
-    public String support(String param) {
-        return null;
-    }
-
-    @Override
-    public QIrcUser ircUser(String nickname) {
-        return null;
-    }
-
-    @NonNull
-    @Override
-    public List<QIrcUser> ircUsers() {
-        return null;
-    }
-
-    @Override
-    public int ircUserCount() {
-        return 0;
-    }
-
-    @Override
-    public QIrcChannel newIrcChannel(String channelname) {
-        return null;
-    }
-
-    @Nullable
-    @Override
-    public QIrcChannel ircChannel(String channelname) {
-        return null;
-    }
-
-    @NonNull
-    @Override
-    public List<QIrcChannel> ircChannels() {
-        return null;
-    }
-
-    @Override
-    public int ircChannelCount() {
-        return 0;
-    }
-
-    @Override
-    public String codecForServer() {
-        return null;
-    }
-
-    @Override
-    public String codecForEncoding() {
-        return null;
-    }
-
-    @Override
-    public String codecForDecoding() {
-        return null;
-    }
-
-    @Override
-    public String defaultCodecForServer() {
-        return null;
-    }
-
-    @Override
-    public String defaultCodecForEncoding() {
-        return null;
-    }
-
-    @Override
-    public String defaultCodecForDecoding() {
-        return null;
-    }
-
-    @Override
-    public void setDefaultCodecForServer(String name) {
-
-    }
-
-    @Override
-    public void setDefaultCodecForEncoding(String name) {
-
-    }
-
-    @Override
-    public void setDefaultCodecForDecoding(String name) {
-
-    }
-
-    @Override
-    public boolean autoAwayActive() {
-        return false;
-    }
-
-    @Override
-    public void setAutoAwayActive(boolean active) {
-
-    }
-
-    @Override
-    public void _setAutoAwayActive(boolean active) {
-
-    }
-
-    @Override
-    public void setNetworkName(String networkName) {
-
-    }
-
-    @Override
-    public void _setNetworkName(String networkName) {
-
-    }
-
-    @Override
-    public void setCurrentServer(String currentServer) {
-
-    }
-
-    @Override
-    public void _setCurrentServer(String currentServer) {
-
-    }
-
-    @Override
-    public void _setConnected(boolean isConnected) {
-
-    }
-
-    @Override
-    public void setConnectionState(int state) {
-
-    }
-
-    @Override
-    public void _setConnectionState(int state) {
-
-    }
-
-    @Override
-    public void setMyNick(String mynick) {
-
-    }
-
-    @Override
-    public void _setMyNick(String mynick) {
-
-    }
-
-    @Override
-    public void setLatency(int latency) {
-
-    }
-
-    @Override
-    public void _setLatency(int latency) {
-
-    }
-
-    @Override
-    public void setIdentity(int identityId) {
-
-    }
-
-    @Override
-    public void _setIdentity(int identityId) {
-
-    }
-
-    @Override
-    public void setServerList(List<NetworkServer> serverList) {
-
-    }
-
-    @Override
-    public void _setServerList(List<NetworkServer> serverList) {
-
-    }
-
-    @Override
-    public void setUseRandomServer(boolean useRandomServer) {
-
-    }
-
-    @Override
-    public void _setUseRandomServer(boolean useRandomServer) {
-
-    }
-
-    @Override
-    public void setPerform(List<String> performs) {
-
-    }
-
-    @Override
-    public void _setPerform(List<String> performs) {
-
-    }
-
-    @Override
-    public void setUseAutoIdentify(boolean useAutoIdentify) {
-
-    }
-
-    @Override
-    public void _setUseAutoIdentify(boolean useAutoIdentify) {
-
-    }
-
-    @Override
-    public void setAutoIdentifyService(String autoIdentifyService) {
-
-    }
-
-    @Override
-    public void _setAutoIdentifyService(String autoIdentifyService) {
-
-    }
-
-    @Override
-    public void setAutoIdentifyPassword(String autoIdentifyPassword) {
-
-    }
-
-    @Override
-    public void _setAutoIdentifyPassword(String autoIdentifyPassword) {
-
-    }
-
-    @Override
-    public void setUseSasl(boolean useSasl) {
-
-    }
-
-    @Override
-    public void _setUseSasl(boolean useSasl) {
-
-    }
-
-    @Override
-    public void setSaslAccount(String saslAccount) {
-
-    }
-
-    @Override
-    public void _setSaslAccount(String saslAccount) {
-
-    }
-
-    @Override
-    public void setSaslPassword(String saslPassword) {
-
-    }
-
-    @Override
-    public void _setSaslPassword(String saslPassword) {
-
-    }
-
-    @Override
-    public void setUseAutoReconnect(boolean useAutoReconnect) {
-
-    }
-
-    @Override
-    public void _setUseAutoReconnect(boolean useAutoReconnect) {
-
-    }
-
-    @Override
-    public void setAutoReconnectInterval(int autoReconnectInterval) {
-
-    }
-
-    @Override
-    public void _setAutoReconnectInterval(int autoReconnectInterval) {
-
-    }
-
-    @Override
-    public void setAutoReconnectRetries(short autoReconnectRetries) {
-
-    }
-
-    @Override
-    public void _setAutoReconnectRetries(short autoReconnectRetries) {
-
-    }
-
-    @Override
-    public void setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries) {
-
-    }
-
-    @Override
-    public void _setUnlimitedReconnectRetries(boolean unlimitedReconnectRetries) {
-
-    }
-
-    @Override
-    public void setRejoinChannels(boolean rejoinChannels) {
-
-    }
-
-    @Override
-    public void _setRejoinChannels(boolean rejoinChannels) {
-
-    }
-
-    @Override
-    public void setCodecForServer(String codecName) {
-
-    }
-
-    @Override
-    public void _setCodecForServer(String codecName) {
-
-    }
-
-    @Override
-    public void setCodecForEncoding(String codecName) {
-
-    }
-
-    @Override
-    public void _setCodecForEncoding(String codecName) {
-
-    }
-
-    @Override
-    public void setCodecForDecoding(String codecName) {
-
-    }
-
-    @Override
-    public void _setCodecForDecoding(String codecName) {
-
-    }
-
-    @Override
-    public void addSupport(String param) {
-
-    }
-
-    @Override
-    public void _addSupport(String param) {
-
-    }
-
-    @Override
-    public void addSupport(String param, String value) {
-
-    }
-
-    @Override
-    public void _addSupport(String param, String value) {
-
-    }
-
-    @Override
-    public void removeSupport(String param) {
-
-    }
-
-    @Override
-    public void _removeSupport(String param) {
-
-    }
-
-    @Override
-    public void addIrcUser(String hostmask) {
-
-    }
-
-    @Override
-    public void _addIrcUser(String hostmask) {
-
-    }
-
-    @Override
-    public void addIrcChannel(String channel) {
-
-    }
-
-    @Override
-    public void _addIrcChannel(String channel) {
-
-    }
-
-    @Override
-    public QIrcUser updateNickFromMask(String mask) {
-        return null;
-    }
-
-    @Override
-    public QIrcUser _updateNickFromMask(String mask) {
-        return null;
-    }
-
-    @Override
-    public void ircUserNickChanged(String oldNick, String newnick) {
-
-    }
-
-    @Override
-    public void connect() {
-
-    }
-
-    @Override
-    public void _connect() {
-
-    }
-
-    @Override
-    public void disconnect() {
-
-    }
-
-    @Override
-    public void _disconnect() {
-
-    }
-
-    @Override
-    public void setNetworkInfo(NetworkInfo info) {
-
-    }
-
-    @Override
-    public void _setNetworkInfo(NetworkInfo info) {
-
-    }
-
-    @Override
-    public void removeIrcUser(QIrcUser ircuser) {
-
-    }
-
-    @Override
-    public void _removeIrcUser(QIrcUser ircuser) {
-
-    }
-
-    @Override
-    public void removeIrcChannel(QIrcChannel ircChannel) {
-
-    }
-
-    @Override
-    public void _removeIrcChannel(QIrcChannel ircChannel) {
-
-    }
-
-    @Override
-    public void removeChansAndUsers() {
-
-    }
-
-    @Override
-    public void _removeChansAndUsers() {
-
-    }
-
-    @Override
-    public void _addIrcChannel(IrcChannel ircChannel) {
-
-    }
-
-    @Override
-    public IrcCaseMappers.IrcCaseMapper caseMapper() {
-        return null;
-    }
-
-    @Override
-    public void addObserver(GeneralCallback<QNetwork> o) {
-
-    }
-
-    @Override
-    public void deleteObserver(GeneralCallback<QNetwork> o) {
-
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/FakeNetworksWrapper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/FakeNetworksWrapper.java
deleted file mode 100644
index 6dc69af1b..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/FakeNetworksWrapper.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Context;
-import android.database.DataSetObserver;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.lists.AndroidObservableSortedList;
-
-public class FakeNetworksWrapper {
-    private final QNetwork fakeNetwork;
-    private final Set<DataSetObserver> observers = new HashSet<>();
-    private final UICallback callback = new UICallback() {
-        @Override
-        public void notifyItemInserted(int position) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemChanged(int position) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemRemoved(int position) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemMoved(int from, int to) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemRangeInserted(int position, int count) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemRangeChanged(int position, int count) {
-            notifyChanged();
-        }
-
-        @Override
-        public void notifyItemRangeRemoved(int position, int count) {
-            notifyChanged();
-        }
-    };
-    private AndroidObservableSortedList<QNetwork> base;
-
-    public FakeNetworksWrapper(Context context) {
-        this.fakeNetwork = new AllNetworksItem(context);
-    }
-
-    public void setBase(AndroidObservableSortedList<QNetwork> base) {
-        if (this.base != null)
-            this.base.removeCallback(callback);
-        this.base = base;
-        if (this.base != null)
-            this.base.addCallback(callback);
-        notifyChanged();
-    }
-
-    public QNetwork get(int position) {
-        if (position == 0)
-            return fakeNetwork;
-        else if (position > 0 && position <= base.size() && base != null)
-            return base.get(position - 1);
-        else
-            return null;
-    }
-
-    public int getCount() {
-        return base == null ? 1 : base.size() + 1;
-    }
-
-    public void addObserver(DataSetObserver observer) {
-        observers.add(observer);
-    }
-
-    public void removeObserver(DataSetObserver observer) {
-        observers.remove(observer);
-    }
-
-    public void notifyChanged() {
-        for (DataSetObserver observer : observers) {
-            observer.onChanged();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
deleted file mode 100644
index 779312e4d..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkCreateActivity.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-import android.widget.Spinner;
-
-import java.util.Collections;
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.identity.IdentitySpinnerAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.NetworkServerListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
-import de.kuschku.util.backports.NumberHelper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.AnimationHelper;
-
-public class NetworkCreateActivity extends BoundActivity {
-
-    private static final int REQUEST_SERVER_LIST = 1;
-    private static final int REQUEST_PERFORM = 2;
-    final IdentitySpinnerAdapter spinnerAdapter = new IdentitySpinnerAdapter();
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    @Bind(R.id.networkName)
-    EditText networkName;
-    @Bind(R.id.identity)
-    Spinner identity;
-    @Bind(R.id.rejoinChannels)
-    CheckBox rejoinChannels;
-    @Bind(R.id.servers)
-    Button servers;
-    @Bind(R.id.useCustomCodecs)
-    SwitchCompat useCustomCodecs;
-    @Bind(R.id.groupCustomCodecs)
-    ViewGroup groupCustomCodecs;
-    @Bind(R.id.codecForServer)
-    EditText codecForServer;
-    @Bind(R.id.codecForEncoding)
-    EditText codecForEncoding;
-    @Bind(R.id.codecForDecoding)
-    EditText codecForDecoding;
-    @Bind(R.id.useAutoIdentify)
-    SwitchCompat useAutoIdentify;
-    @Bind(R.id.groupAutoIdentify)
-    ViewGroup groupAutoIdentify;
-    @Bind(R.id.autoIdentifyService)
-    EditText autoIdentifyService;
-    @Bind(R.id.autoIdentifyPassword)
-    EditText autoIdentifyPassword;
-    @Bind(R.id.useSasl)
-    SwitchCompat useSasl;
-    @Bind(R.id.groupSasl)
-    ViewGroup groupSasl;
-    @Bind(R.id.saslAccount)
-    EditText saslAccount;
-    @Bind(R.id.saslPassword)
-    EditText saslPassword;
-    @Bind(R.id.useAutoReconnect)
-    SwitchCompat useAutoReconnect;
-    @Bind(R.id.groupAutoReconnect)
-    ViewGroup groupAutoReconnect;
-    @Bind(R.id.autoReconnectInterval)
-    EditText autoReconnectInterval;
-    @Bind(R.id.autoReconnectRetries)
-    EditText autoReconnectRetries;
-    @Bind(R.id.unlimitedAutoReconnectRetries)
-    CheckBox unlimitedAutoReconnectRetries;
-    int id;
-    private List<NetworkServer> serverList = null;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Intent intent = getIntent();
-        if (intent == null) {
-            finish();
-            return;
-        }
-
-        id = intent.getIntExtra("id", -1);
-
-        setContentView(R.layout.activity_network_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        identity.setAdapter(spinnerAdapter);
-
-        useCustomCodecs.setOnCheckedChangeListener(this::updateCustomCodecsVisible);
-        updateCustomCodecsVisible(null, useCustomCodecs.isChecked());
-
-        useAutoIdentify.setOnCheckedChangeListener(this::updateAutoIdentifyVisible);
-        updateAutoIdentifyVisible(null, useAutoIdentify.isChecked());
-
-        useSasl.setOnCheckedChangeListener(this::updateSaslVisible);
-        updateSaslVisible(null, useSasl.isChecked());
-
-        useAutoReconnect.setOnCheckedChangeListener(this::updateAutoReconnectVisible);
-        updateAutoReconnectVisible(null, useAutoReconnect.isChecked());
-
-        unlimitedAutoReconnectRetries.setOnCheckedChangeListener(this::updateAutoReconnectRetriesUnlimited);
-        updateAutoReconnectRetriesUnlimited(null, unlimitedAutoReconnectRetries.isChecked());
-
-        servers.setOnClickListener(v -> {
-            Intent intent1 = new Intent(NetworkCreateActivity.this, NetworkServerListActivity.class);
-            if (serverList != null)
-                intent1.putExtra("servers", NetworkServerSerializeHelper.serialize(serverList));
-            startActivityForResult(intent1, REQUEST_SERVER_LIST, null);
-        });
-
-        initializeWithDefaults();
-    }
-
-    public void initializeWithDefaults() {
-        useAutoReconnect.setChecked(true);
-        autoReconnectRetries.setText("20");
-        autoReconnectInterval.setText("60");
-        rejoinChannels.setChecked(true);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            switch (requestCode) {
-                case REQUEST_PERFORM: {
-
-                }
-                break;
-                case REQUEST_SERVER_LIST: {
-                    Parcelable[] servers = data.getParcelableArrayExtra("servers");
-                    if (servers != null) {
-                        serverList = NetworkServerSerializeHelper.deserialize(servers);
-                    }
-                }
-                break;
-            }
-        }
-    }
-
-
-    private void updateCustomCodecsVisible(CompoundButton button, boolean visible) {
-        codecForServer.setEnabled(visible);
-        codecForEncoding.setEnabled(visible);
-        codecForDecoding.setEnabled(visible);
-
-        updateViewGroupStatus(groupCustomCodecs, visible);
-    }
-
-    private void updateAutoIdentifyVisible(CompoundButton button, boolean visible) {
-        autoIdentifyService.setEnabled(visible);
-        autoIdentifyPassword.setEnabled(visible);
-
-        updateViewGroupStatus(groupAutoIdentify, visible);
-    }
-
-    private void updateSaslVisible(CompoundButton button, boolean visible) {
-        saslAccount.setEnabled(visible);
-        saslPassword.setEnabled(visible);
-
-        updateViewGroupStatus(groupSasl, visible);
-    }
-
-    private void updateAutoReconnectVisible(CompoundButton button, boolean visible) {
-        autoReconnectInterval.setEnabled(visible);
-        autoReconnectRetries.setEnabled(visible);
-        unlimitedAutoReconnectRetries.setEnabled(visible);
-
-        updateViewGroupStatus(this.groupAutoReconnect, visible);
-    }
-
-    private void updateAutoReconnectRetriesUnlimited(CompoundButton button, boolean visible) {
-        autoReconnectRetries.setEnabled(!visible);
-    }
-
-    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
-        if (visible) {
-            AnimationHelper.expand(group);
-        } else {
-            AnimationHelper.collapse(group);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_confirm: {
-                NetworkInfo after = new NetworkInfo(
-                        0,
-                        networkName.getText().toString(),
-                        (int) identity.getSelectedItemId(),
-                        useCustomCodecs.isChecked() ? this.codecForServer.getText().toString() : null,
-                        useCustomCodecs.isChecked() ? this.codecForEncoding.getText().toString() : null,
-                        useCustomCodecs.isChecked() ? this.codecForDecoding.getText().toString() : null,
-                        serverList == null ? Collections.emptyList() : serverList,
-                        true,
-                        Collections.emptyList(),
-                        useAutoIdentify.isChecked(),
-                        autoIdentifyService.getText().toString(),
-                        autoIdentifyPassword.getText().toString(),
-                        useSasl.isChecked(),
-                        saslAccount.getText().toString(),
-                        saslPassword.getText().toString(),
-                        useAutoReconnect.isChecked(),
-                        NumberHelper.parseInt(autoReconnectInterval.getText().toString(), 0),
-                        NumberHelper.parseShort(autoReconnectRetries.getText().toString(), (short) 0),
-                        unlimitedAutoReconnectRetries.isChecked(),
-                        rejoinChannels.isChecked()
-                );
-                if (context.client() != null)
-                    context.client().createNetwork(after);
-
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    @Override
-    protected void onConnected() {
-        QIdentity identity = (QIdentity) this.identity.getSelectedItem();
-        spinnerAdapter.setIdentityManager(context.client().identityManager());
-        this.identity.setSelection(getIdentityPosition(identity));
-    }
-
-    private int getIdentityPosition(QIdentity identity) {
-        return context.client().identityManager().identities().indexOf(identity);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        spinnerAdapter.setIdentityManager(null);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
deleted file mode 100644
index c2708c20c..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkEditActivity.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-import android.widget.Spinner;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.syncables.types.impl.NetworkInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIdentity;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.identity.IdentitySpinnerAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.NetworkServerListActivity;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
-import de.kuschku.util.backports.NumberHelper;
-import de.kuschku.util.backports.Objects;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.AnimationHelper;
-
-public class NetworkEditActivity extends BoundActivity {
-
-    private static final int REQUEST_SERVER_LIST = 1;
-    private static final int REQUEST_PERFORM = 2;
-    final IdentitySpinnerAdapter spinnerAdapter = new IdentitySpinnerAdapter();
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    @Bind(R.id.networkName)
-    EditText networkName;
-    @Bind(R.id.identity)
-    Spinner identity;
-    @Bind(R.id.rejoinChannels)
-    CheckBox rejoinChannels;
-    @Bind(R.id.servers)
-    Button servers;
-    @Bind(R.id.useCustomCodecs)
-    SwitchCompat useCustomCodecs;
-    @Bind(R.id.groupCustomCodecs)
-    ViewGroup groupCustomCodecs;
-    @Bind(R.id.codecForServer)
-    EditText codecForServer;
-    @Bind(R.id.codecForEncoding)
-    EditText codecForEncoding;
-    @Bind(R.id.codecForDecoding)
-    EditText codecForDecoding;
-    @Bind(R.id.useAutoIdentify)
-    SwitchCompat useAutoIdentify;
-    @Bind(R.id.groupAutoIdentify)
-    ViewGroup groupAutoIdentify;
-    @Bind(R.id.autoIdentifyService)
-    EditText autoIdentifyService;
-    @Bind(R.id.autoIdentifyPassword)
-    EditText autoIdentifyPassword;
-    @Bind(R.id.useSasl)
-    SwitchCompat useSasl;
-    @Bind(R.id.groupSasl)
-    ViewGroup groupSasl;
-    @Bind(R.id.saslAccount)
-    EditText saslAccount;
-    @Bind(R.id.saslPassword)
-    EditText saslPassword;
-    @Bind(R.id.useAutoReconnect)
-    SwitchCompat useAutoReconnect;
-    @Bind(R.id.groupAutoReconnect)
-    ViewGroup groupAutoReconnect;
-    @Bind(R.id.autoReconnectInterval)
-    EditText autoReconnectInterval;
-    @Bind(R.id.autoReconnectRetries)
-    EditText autoReconnectRetries;
-    @Bind(R.id.unlimitedAutoReconnectRetries)
-    CheckBox unlimitedAutoReconnectRetries;
-    int id;
-    private QNetwork network;
-
-    private List<NetworkServer> serverList = null;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Intent intent = getIntent();
-        if (intent == null) {
-            finish();
-            return;
-        }
-
-        id = intent.getIntExtra("id", -1);
-
-        setContentView(R.layout.activity_network_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        identity.setAdapter(spinnerAdapter);
-
-        useCustomCodecs.setOnCheckedChangeListener(this::updateCustomCodecsVisible);
-        updateCustomCodecsVisible(null, useCustomCodecs.isChecked());
-
-        useAutoIdentify.setOnCheckedChangeListener(this::updateAutoIdentifyVisible);
-        updateAutoIdentifyVisible(null, useAutoIdentify.isChecked());
-
-        useSasl.setOnCheckedChangeListener(this::updateSaslVisible);
-        updateSaslVisible(null, useSasl.isChecked());
-
-        useAutoReconnect.setOnCheckedChangeListener(this::updateAutoReconnectVisible);
-        updateAutoReconnectVisible(null, useAutoReconnect.isChecked());
-
-        unlimitedAutoReconnectRetries.setOnCheckedChangeListener(this::updateAutoReconnectRetriesUnlimited);
-        updateAutoReconnectRetriesUnlimited(null, unlimitedAutoReconnectRetries.isChecked());
-
-        servers.setOnClickListener(v -> {
-            Intent intent1 = new Intent(NetworkEditActivity.this, NetworkServerListActivity.class);
-            intent1.putExtra("servers", NetworkServerSerializeHelper.serialize(network.serverList()));
-            startActivityForResult(intent1, REQUEST_SERVER_LIST, null);
-        });
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (data != null) {
-            switch (requestCode) {
-                case REQUEST_PERFORM: {
-
-                }
-                break;
-                case REQUEST_SERVER_LIST: {
-                    Parcelable[] servers = data.getParcelableArrayExtra("servers");
-                    if (servers != null) {
-                        serverList = NetworkServerSerializeHelper.deserialize(servers);
-                    }
-                }
-                break;
-            }
-        }
-    }
-
-    private void updateCustomCodecsVisible(CompoundButton button, boolean visible) {
-        codecForServer.setEnabled(visible);
-        codecForEncoding.setEnabled(visible);
-        codecForDecoding.setEnabled(visible);
-
-        NetworkEditActivity.this.updateViewGroupStatus(groupCustomCodecs, visible);
-    }
-
-    private void updateAutoIdentifyVisible(CompoundButton button, boolean visible) {
-        autoIdentifyService.setEnabled(visible);
-        autoIdentifyPassword.setEnabled(visible);
-
-        updateViewGroupStatus(groupAutoIdentify, visible);
-    }
-
-    private void updateSaslVisible(CompoundButton button, boolean visible) {
-        saslAccount.setEnabled(visible);
-        saslPassword.setEnabled(visible);
-
-        updateViewGroupStatus(groupSasl, visible);
-    }
-
-    private void updateAutoReconnectRetriesUnlimited(CompoundButton button, boolean visible) {
-        autoReconnectRetries.setEnabled(!visible);
-    }
-
-    private void updateAutoReconnectVisible(CompoundButton button, boolean visible) {
-        autoReconnectInterval.setEnabled(visible);
-        autoReconnectRetries.setEnabled(visible);
-        unlimitedAutoReconnectRetries.setEnabled(visible);
-
-        updateViewGroupStatus(this.groupAutoReconnect, visible);
-    }
-
-    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
-        if (visible) {
-            AnimationHelper.expand(group);
-        } else {
-            AnimationHelper.collapse(group);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (hasChanged(build())) {
-            new MaterialDialog.Builder(this)
-                    .content(R.string.confirmationUnsavedChanges)
-                    .positiveText(R.string.actionYes)
-                    .negativeText(R.string.actionNo)
-                    .positiveColor(context.themeUtil().res.colorAccent)
-                    .negativeColor(context.themeUtil().res.colorForeground)
-                    .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                    .onPositive((dialog, which) -> {
-                        save();
-                        super.onBackPressed();
-                    })
-                    .onNegative((dialog, which) -> super.onBackPressed())
-                    .show();
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-            case R.id.action_delete: {
-                new MaterialDialog.Builder(this)
-                        .content(getString(R.string.confirmationDelete, network.networkName()))
-                        .positiveText(R.string.actionYes)
-                        .negativeText(R.string.actionNo)
-                        .positiveColor(context.themeUtil().res.colorAccent)
-                        .negativeColor(context.themeUtil().res.colorForeground)
-                        .backgroundColorAttr(R.attr.colorBackgroundDialog)
-                        .onPositive((dialog, which) -> {
-                            finish();
-                            context.client().removeNetwork(network.networkId());
-                        })
-                        .build()
-                        .show();
-            }
-            return true;
-            case R.id.action_confirm: {
-                save();
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void save() {
-        NetworkInfo info = build();
-        if (hasChanged(info))
-            network.setNetworkInfo(info);
-    }
-
-    private boolean hasChanged(NetworkInfo info) {
-        return network != null && network.networkInfo() != null && info != null && !Objects.equals(network.networkInfo(), info);
-    }
-
-    private NetworkInfo build() {
-        NetworkInfo networkInfo = this.network.networkInfo();
-        if (networkInfo == null) {
-            return null;
-        } else {
-            return new NetworkInfo(
-                    networkInfo.networkId(),
-                    networkName.getText().toString(),
-                    (int) identity.getSelectedItemId(),
-                    useCustomCodecs.isChecked() ? this.codecForServer.getText().toString() : null,
-                    useCustomCodecs.isChecked() ? this.codecForEncoding.getText().toString() : null,
-                    useCustomCodecs.isChecked() ? this.codecForDecoding.getText().toString() : null,
-                    serverList == null ? networkInfo.serverList() : serverList,
-                    networkInfo.useRandomServer(),
-                    //FIXME: IMPLEMENT
-                    networkInfo.perform(),
-                    useAutoIdentify.isChecked(),
-                    autoIdentifyService.getText().toString(),
-                    autoIdentifyPassword.getText().toString(),
-                    useSasl.isChecked(),
-                    saslAccount.getText().toString(),
-                    saslPassword.getText().toString(),
-                    useAutoReconnect.isChecked(),
-                    NumberHelper.parseInt(autoReconnectInterval.getText().toString(), 0),
-                    NumberHelper.parseShort(autoReconnectRetries.getText().toString(), (short) 0),
-                    unlimitedAutoReconnectRetries.isChecked(),
-                    rejoinChannels.isChecked()
-            );
-        }
-    }
-
-    @Override
-    protected void onConnected() {
-        spinnerAdapter.setIdentityManager(context.client().identityManager());
-        setNetwork(context.client().networkManager().network(id));
-    }
-
-    private void setNetwork(QNetwork network) {
-        NetworkInfo oldInfo = this.network == null ? null : this.network.networkInfo();
-        this.network = network;
-
-        if (network != null) {
-            NetworkInfo networkInfo = this.network.networkInfo();
-            if (networkInfo != null) {
-                if (oldInfo == null || oldInfo.networkName().equals(networkName.getText().toString()))
-                    networkName.setText(networkInfo.networkName());
-
-                if (oldInfo == null || getIdentityPosition(oldInfo) == identity.getSelectedItemPosition())
-                    identity.setSelection(getIdentityPosition(networkInfo));
-
-                if (oldInfo == null || (oldInfo.codecForServer() != null || oldInfo.codecForEncoding() != null || oldInfo.codecForDecoding() != null) == useCustomCodecs.isChecked())
-                    useCustomCodecs.setChecked(networkInfo.codecForServer() != null || networkInfo.codecForEncoding() != null || networkInfo.codecForDecoding() != null);
-
-                if (oldInfo == null || oldInfo.codecForServer().equals(codecForServer.getText().toString()))
-                    codecForServer.setText(networkInfo.codecForServer());
-
-                if (oldInfo == null || oldInfo.codecForEncoding().equals(codecForEncoding.getText().toString()))
-                    codecForEncoding.setText(networkInfo.codecForEncoding());
-
-                if (oldInfo == null || oldInfo.codecForDecoding().equals(codecForDecoding.getText().toString()))
-                    codecForDecoding.setText(networkInfo.codecForDecoding());
-
-                if (oldInfo == null || oldInfo.useAutoIdentify() == useAutoIdentify.isChecked())
-                    useAutoIdentify.setChecked(networkInfo.useAutoIdentify());
-
-                if (oldInfo == null || oldInfo.autoIdentifyService().equals(autoIdentifyService.getText().toString()))
-                    autoIdentifyService.setText(networkInfo.autoIdentifyService());
-
-                if (oldInfo == null || oldInfo.autoIdentifyPassword().equals(autoIdentifyPassword.getText().toString()))
-                    autoIdentifyPassword.setText(networkInfo.autoIdentifyPassword());
-
-                if (oldInfo == null || oldInfo.useSasl() == useSasl.isChecked())
-                    useSasl.setChecked(networkInfo.useSasl());
-
-                if (oldInfo == null || oldInfo.saslAccount().equals(saslAccount.getText().toString()))
-                    saslAccount.setText(networkInfo.saslAccount());
-
-                if (oldInfo == null || oldInfo.saslPassword().equals(saslPassword.getText().toString()))
-                    saslPassword.setText(networkInfo.saslPassword());
-
-                if (oldInfo == null || oldInfo.useAutoReconnect() == useAutoReconnect.isChecked())
-                    useAutoReconnect.setChecked(networkInfo.useAutoReconnect());
-
-                if (oldInfo == null || oldInfo.autoReconnectInterval() == NumberHelper.parseInt(autoReconnectInterval.getText().toString(), 0))
-                    autoReconnectInterval.setText(String.valueOf(networkInfo.autoReconnectInterval()));
-
-                if (oldInfo == null || oldInfo.autoReconnectRetries() == NumberHelper.parseInt(autoReconnectRetries.getText().toString(), 0))
-                    autoReconnectRetries.setText(String.valueOf(networkInfo.autoReconnectRetries()));
-
-                if (oldInfo == null || oldInfo.unlimitedReconnectRetries() == unlimitedAutoReconnectRetries.isChecked())
-                    unlimitedAutoReconnectRetries.setChecked(networkInfo.unlimitedReconnectRetries());
-
-                if (oldInfo == null || oldInfo.rejoinChannels() == rejoinChannels.isChecked())
-                    rejoinChannels.setChecked(networkInfo.rejoinChannels());
-            }
-        }
-    }
-
-    private int getIdentityPosition(NetworkInfo networkInfo) {
-        QIdentity identity = context.client().identityManager().identity(networkInfo.identity());
-        return context.client().identityManager().identities().indexOf(identity);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        spinnerAdapter.setIdentityManager(null);
-        setNetwork(null);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
deleted file mode 100644
index 2fd7bda3c..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkListActivity.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.client.NetworkManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class NetworkListActivity extends BoundActivity {
-
-    final OnQNetworkClickListener clickListener = network -> {
-        if (network != null) {
-            Intent intent = new Intent(this, NetworkEditActivity.class);
-            intent.putExtra("id", network.networkId());
-            startActivity(intent);
-        }
-    };
-    NetworkManager manager;
-    @Bind(R.id.list)
-    RecyclerView list;
-    @Bind(R.id.add)
-    FloatingActionButton add;
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-    NetworkAdapter adapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.setItemAnimator(new DefaultItemAnimator());
-        adapter = new NetworkAdapter();
-        list.setAdapter(adapter);
-        list.addItemDecoration(new DividerItemDecoration(this));
-
-        add.setOnClickListener(view -> startActivity(new Intent(this, NetworkCreateActivity.class)));
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    protected void onConnected() {
-        manager = context.client().networkManager();
-        adapter.setManager(manager);
-    }
-
-    @Override
-    protected void onDisconnected() {
-        manager = null;
-        adapter.setManager(null);
-    }
-
-    interface OnQNetworkClickListener {
-        void onClick(QNetwork network);
-    }
-
-    private class NetworkAdapter extends RecyclerView.Adapter<NetworkViewHolder> {
-        final AdapterUICallbackWrapper wrapper = new AdapterUICallbackWrapper(this);
-        NetworkManager manager;
-
-        public void setManager(NetworkManager manager) {
-            if (this.manager != null)
-                this.manager.networks().addCallback(wrapper);
-
-            this.manager = manager;
-
-            if (this.manager != null)
-                this.manager.networks().addCallback(wrapper);
-        }
-
-        @Override
-        public NetworkViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            View view = inflater.inflate(R.layout.widget_settings_network, parent, false);
-            return new NetworkViewHolder(view);
-        }
-
-        @Override
-        public void onBindViewHolder(NetworkViewHolder holder, int position) {
-            holder.bind(manager != null ? manager.networks().get(position) : null);
-        }
-
-        @Override
-        public int getItemCount() {
-            return manager == null ? 0 : manager.networks().size();
-        }
-    }
-
-    class NetworkViewHolder extends RecyclerView.ViewHolder {
-
-        @Bind(R.id.network_name)
-        TextView name;
-
-        private QNetwork network;
-
-        public NetworkViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(view -> clickListener.onClick(network));
-        }
-
-        public void bind(QNetwork network) {
-            this.network = network;
-            name.setText(network == null ? "" : network.networkName());
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkSpinnerAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkSpinnerAdapter.java
deleted file mode 100644
index 5ad2ef240..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/NetworkSpinnerAdapter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.database.DataSetObserver;
-import android.support.annotation.Nullable;
-import android.support.v7.view.ContextThemeWrapper;
-import android.support.v7.widget.ThemedSpinnerAdapter;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import de.kuschku.libquassel.client.NetworkManager;
-import de.kuschku.libquassel.syncables.types.interfaces.QNetwork;
-import de.kuschku.quasseldroid_ng.R;
-
-public class NetworkSpinnerAdapter implements ThemedSpinnerAdapter {
-    private final FakeNetworksWrapper wrapper;
-    @Nullable
-    private Resources.Theme theme;
-
-    public NetworkSpinnerAdapter(Context context) {
-        wrapper = new FakeNetworksWrapper(context);
-    }
-
-
-    public void setNetworkManager(NetworkManager networkManager) {
-        wrapper.setBase(networkManager.networks());
-    }
-
-    @Nullable
-    @Override
-    public Resources.Theme getDropDownViewTheme() {
-        return theme;
-    }
-
-    @Override
-    public void setDropDownViewTheme(@Nullable Resources.Theme theme) {
-        this.theme = theme;
-    }
-
-    @Override
-    public View getDropDownView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(new ContextThemeWrapper(parent.getContext(), theme));
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-        QNetwork networks = getItem(position);
-        view.setText(networks == null ? "" : networks.networkName());
-        return view;
-    }
-
-    @Override
-    public void registerDataSetObserver(DataSetObserver observer) {
-        wrapper.addObserver(observer);
-    }
-
-    @Override
-    public void unregisterDataSetObserver(DataSetObserver observer) {
-        wrapper.removeObserver(observer);
-    }
-
-    @Override
-    public int getCount() {
-        return wrapper.getCount();
-    }
-
-    @Override
-    public QNetwork getItem(int position) {
-        return wrapper.get(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        QNetwork network = getItem(position);
-        if (network != null)
-            return network.networkId();
-        else
-            return -1;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-        QNetwork networks = getItem(position);
-        view.setText(networks == null ? "" : networks.networkName());
-        return view;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return 0;
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        return 1;
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return getCount() == 0;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java
deleted file mode 100644
index d9a565de8..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerAdapter.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
-
-import android.graphics.Color;
-import android.graphics.drawable.Drawable;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperAdapter;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.ItemTouchHelperViewHolder;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
-import de.kuschku.util.annotationbind.AutoBinder;
-
-public class NetworkServerAdapter
-        extends RecyclerView.Adapter<NetworkServerAdapter.NetworkServerViewHolder> implements ItemTouchHelperAdapter {
-
-    private final List<NetworkServer> servers;
-    private final OnStartDragListener dragStartListener;
-    private NetworkServerListActivity.OnNetworkServerClickListener onItemClickListener;
-
-    public NetworkServerAdapter(List<NetworkServer> servers, OnStartDragListener dragStartListener) {
-        this.servers = servers;
-        this.dragStartListener = dragStartListener;
-    }
-
-    @Override
-    public NetworkServerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-        View view = inflater.inflate(R.layout.widget_networkserver, parent, false);
-        return new NetworkServerViewHolder(view);
-    }
-
-    @Override
-    public void onBindViewHolder(NetworkServerViewHolder holder, int position) {
-        holder.bind(servers.get(position));
-        holder.drag_handle.setOnTouchListener((v, event) -> {
-            if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
-                dragStartListener.onStartDrag(holder);
-                holder.itemView.setSelected(true);
-            }
-            return false;
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return servers.size();
-    }
-
-    @Override
-    public boolean onItemMove(int fromPosition, int toPosition) {
-        Collections.swap(servers, fromPosition, toPosition);
-        notifyItemMoved(fromPosition, toPosition);
-        return true;
-    }
-
-    public void setOnItemClickListener(NetworkServerListActivity.OnNetworkServerClickListener onItemClickListener) {
-        this.onItemClickListener = onItemClickListener;
-    }
-
-    class NetworkServerViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder {
-
-        @Bind(R.id.text)
-        TextView text;
-
-        @Bind(R.id.lock)
-        ImageView lock;
-
-        @Bind(R.id.drag_handle)
-        ImageView drag_handle;
-        private NetworkServer server;
-
-        public NetworkServerViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-            itemView.setOnClickListener(v -> onItemClickListener.onClick(server));
-        }
-
-        public void bind(NetworkServer server) {
-            this.server = server;
-            text.setText(server == null ? "" : String.format(Locale.US, "%s:%d", server.host, server.port));
-            Drawable drawable = ResourcesCompat.getDrawable(itemView.getContext().getResources(), server != null && server.useSSL ? R.drawable.ic_lock : R.drawable.ic_lock_open, itemView.getContext().getTheme());
-            lock.setImageDrawable(drawable);
-        }
-
-        @Override
-        public void onItemSelected() {
-            itemView.setBackgroundColor(AutoBinder.obtainColor(R.attr.colorBackground, itemView.getContext().getTheme()));
-        }
-
-        @Override
-        public void onItemClear() {
-            itemView.setBackgroundColor(Color.TRANSPARENT);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java
deleted file mode 100644
index c864b1d35..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerEditActivity.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
-
-import android.content.Intent;
-import android.database.DataSetObserver;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.SwitchCompat;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
-import android.widget.Spinner;
-import android.widget.SpinnerAdapter;
-import android.widget.TextView;
-
-import java.util.Arrays;
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
-import de.kuschku.util.backports.NumberHelper;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.AnimationHelper;
-
-public class NetworkServerEditActivity extends BoundActivity {
-
-    public static final int RESULT_DELETE = -2;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-
-    @Bind(R.id.host)
-    EditText host;
-
-    @Bind(R.id.port)
-    EditText port;
-
-    @Bind(R.id.useSSL)
-    CheckBox useSSL;
-
-    @Bind(R.id.password)
-    EditText password;
-
-
-    @Bind(R.id.useProxy)
-    SwitchCompat useProxy;
-    @Bind(R.id.groupProxy)
-    ViewGroup groupProxy;
-    @Bind(R.id.proxyHost)
-    EditText proxyHost;
-    @Bind(R.id.proxyPort)
-    EditText proxyPort;
-    @Bind(R.id.proxyType)
-    Spinner proxyType;
-    @Bind(R.id.proxyUser)
-    EditText proxyUser;
-    @Bind(R.id.proxyPassword)
-    EditText proxyPassword;
-
-    int id;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.activity_networkserver_edit);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        useProxy.setOnCheckedChangeListener(this::updateProxyVisible);
-        updateProxyVisible(null, useProxy.isChecked());
-
-        ProxyTypeAdapter adapter = new ProxyTypeAdapter();
-        proxyType.setAdapter(adapter);
-
-        Intent intent;
-        Bundle bundle = null;
-        if ((intent = getIntent()) != null) {
-            id = intent.getIntExtra("id", -1);
-
-            bundle = intent.getBundleExtra("server");
-        }
-
-        if (bundle != null) {
-            NetworkServer server = NetworkServerSerializeHelper.deserialize(bundle);
-
-            host.setText(server.host);
-            port.setText(String.valueOf(server.port));
-            useSSL.setChecked(server.useSSL);
-            password.setText(server.password);
-            useProxy.setChecked(server.useProxy);
-            proxyHost.setText(server.proxyHost);
-            proxyPort.setText(String.valueOf(server.proxyPort));
-            proxyUser.setText(server.proxyUser);
-            proxyPassword.setText(server.proxyPass);
-            proxyType.setSelection(adapter.indexOf(server.proxyType));
-        } else {
-            port.setText("6667");
-        }
-
-        useSSL.setOnCheckedChangeListener((buttonView, isChecked) -> {
-            if (isChecked) {
-                if (port.getText().toString().trim().equals("6667"))
-                    port.setText("6697");
-            } else {
-                if (port.getText().toString().trim().equals("6697"))
-                    port.setText("6667");
-            }
-        });
-    }
-
-    private void updateProxyVisible(CompoundButton button, boolean visible) {
-        proxyHost.setEnabled(visible);
-        proxyPort.setEnabled(visible);
-        proxyUser.setEnabled(visible);
-        proxyPassword.setEnabled(visible);
-
-        updateViewGroupStatus(groupProxy, visible);
-    }
-
-    private void updateViewGroupStatus(ViewGroup group, boolean visible) {
-        if (visible) {
-            AnimationHelper.expand(group);
-        } else {
-            AnimationHelper.collapse(group);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        if (id == -1)
-            getMenuInflater().inflate(R.menu.confirm, menu);
-        else
-            getMenuInflater().inflate(R.menu.confirm_delete, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_delete: {
-                Intent intent = new Intent();
-                intent.putExtra("id", id);
-                setResult(RESULT_DELETE, intent);
-                finish();
-            }
-            return true;
-            case R.id.action_confirm: {
-                Intent intent = new Intent();
-                intent.putExtra("server", NetworkServerSerializeHelper.serialize(new NetworkServer(
-                        useSSL.isChecked(),
-                        0,
-                        host.getText().toString(),
-                        NumberHelper.parseInt(port.getText().toString(), 0),
-                        password.getText().toString(),
-                        useProxy.isChecked(),
-                        NetworkServer.ProxyType.fromId((int) proxyType.getSelectedItemId()),
-                        proxyHost.getText().toString(),
-                        NumberHelper.parseInt(proxyPort.getText().toString(), 0),
-                        proxyUser.getText().toString(),
-                        proxyPassword.getText().toString()
-                )));
-                intent.putExtra("id", id);
-                setResult(RESULT_OK, intent);
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private class ProxyTypeAdapter implements SpinnerAdapter {
-        final List<NetworkServer.ProxyType> list = Arrays.asList(
-                NetworkServer.ProxyType.Socks5Proxy,
-                NetworkServer.ProxyType.HttpProxy
-        );
-
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_toolbar, parent, false);
-            NetworkServer.ProxyType type = getItem(position);
-            view.setText(type == null ? "" : context.themeUtil().translations.proxyType(type));
-            return view;
-        }
-
-        @Override
-        public void registerDataSetObserver(DataSetObserver observer) {
-
-        }
-
-        @Override
-        public void unregisterDataSetObserver(DataSetObserver observer) {
-
-        }
-
-        @Override
-        public int getCount() {
-            return list.size();
-        }
-
-        @Override
-        public NetworkServer.ProxyType getItem(int position) {
-            return list.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return getItem(position).id;
-        }
-
-        @Override
-        public boolean hasStableIds() {
-            return true;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
-            TextView view = (TextView) inflater.inflate(R.layout.widget_spinner_item_inline, parent, false);
-            NetworkServer.ProxyType type = getItem(position);
-            view.setText(type == null ? "" : context.themeUtil().translations.proxyType(type));
-            return view;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            return 0;
-        }
-
-        @Override
-        public int getViewTypeCount() {
-            return 1;
-        }
-
-        @Override
-        public boolean isEmpty() {
-            return list.isEmpty();
-        }
-
-        public int indexOf(NetworkServer.ProxyType proxyType) {
-            return list.indexOf(proxyType);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java
deleted file mode 100644
index 4c6c5f5ac..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/NetworkServerListActivity.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.support.v7.widget.helper.ItemTouchHelper;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.NetworkServerSerializeHelper;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.OnStartDragListener;
-import de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper.SimpleItemTouchHelperCallback;
-import de.kuschku.util.observables.callbacks.wrappers.AdapterUICallbackWrapper;
-import de.kuschku.util.observables.lists.ObservableList;
-import de.kuschku.util.servicebound.BoundActivity;
-import de.kuschku.util.ui.DividerItemDecoration;
-
-public class NetworkServerListActivity extends BoundActivity implements OnStartDragListener {
-
-    @Bind(R.id.list)
-    RecyclerView list;
-
-    @Bind(R.id.add)
-    FloatingActionButton add;
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    NetworkServerAdapter adapter;
-    ItemTouchHelper itemTouchHelper;
-    ObservableList<NetworkServer> servers;
-    final OnNetworkServerClickListener clickListener = server -> {
-        if (server != null) {
-            Intent intent1 = new Intent(this, NetworkServerEditActivity.class);
-            intent1.putExtra("server", NetworkServerSerializeHelper.serialize(server));
-            intent1.putExtra("id", servers.indexOf(server));
-            startActivityForResult(intent1, 0, null);
-        }
-    };
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_network_list);
-        ButterKnife.bind(this);
-
-        Intent intent = getIntent();
-        Parcelable[] serverList;
-        if (intent != null && (serverList = intent.getParcelableArrayExtra("servers")) != null) {
-            servers = new ObservableList<>(NetworkServerSerializeHelper.deserialize(serverList));
-        } else {
-            servers = new ObservableList<>();
-        }
-        adapter = new NetworkServerAdapter(servers, this);
-        servers.addCallback(new AdapterUICallbackWrapper(adapter));
-
-        list.setAdapter(adapter);
-        list.setHasFixedSize(true);
-        list.setLayoutManager(new LinearLayoutManager(this));
-        list.addItemDecoration(new DividerItemDecoration(this));
-        adapter.setOnItemClickListener(clickListener);
-
-        ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
-        itemTouchHelper = new ItemTouchHelper(callback);
-        itemTouchHelper.attachToRecyclerView(list);
-
-        add.setOnClickListener(v -> {
-            Intent intent1 = new Intent(NetworkServerListActivity.this, NetworkServerEditActivity.class);
-            startActivityForResult(intent1, 0, null);
-        });
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.confirm, menu);
-        return super.onCreateOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.action_confirm: {
-                Intent intent = new Intent();
-                intent.putExtra("servers", NetworkServerSerializeHelper.serialize(servers));
-                setResult(RESULT_OK, intent);
-                finish();
-            }
-            return true;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Bundle bundle;
-        if (resultCode == RESULT_OK && data != null && (bundle = data.getBundleExtra("server")) != null) {
-            NetworkServer server = NetworkServerSerializeHelper.deserialize(bundle);
-            int id = data.getIntExtra("id", -1);
-            if (id == -1) {
-                servers.add(server);
-            } else {
-                servers.set(id, server);
-            }
-        } else if (resultCode == NetworkServerEditActivity.RESULT_DELETE && data != null) {
-            int id = data.getIntExtra("id", -1);
-            if (id != -1) {
-                servers.remove(id);
-            }
-        }
-        super.onActivityResult(requestCode, resultCode, data);
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-    }
-
-    @Override
-    public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
-        itemTouchHelper.startDrag(viewHolder);
-    }
-
-    interface OnNetworkServerClickListener {
-        void onClick(NetworkServer network);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java
deleted file mode 100644
index 7411dae15..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperAdapter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Copyright (C) 2015 Paul Burke
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
-
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.helper.ItemTouchHelper;
-
-/**
- * Interface to listen for a move or dismissal event from a {@link ItemTouchHelper.Callback}.
- *
- * @author Paul Burke (ipaulpro)
- */
-public interface ItemTouchHelperAdapter {
-
-    /**
-     * Called when an item has been dragged far enough to trigger a move. This is called every time
-     * an item is shifted, and <strong>not</strong> at the end of a "drop" event.<br/>
-     * <br/>
-     * Implementations should call {@link RecyclerView.Adapter#notifyItemMoved(int, int)} after
-     * adjusting the underlying data to reflect this move.
-     *
-     * @param fromPosition The start position of the moved item.
-     * @param toPosition   Then resolved position of the moved item.
-     * @return True if the item was moved to the new adapter position.
-     * @see RecyclerView#getAdapterPositionFor(RecyclerView.ViewHolder)
-     * @see RecyclerView.ViewHolder#getAdapterPosition()
-     */
-    boolean onItemMove(int fromPosition, int toPosition);
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java
deleted file mode 100644
index 1657e4d99..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/ItemTouchHelperViewHolder.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Copyright (C) 2015 Paul Burke
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
-
-import android.support.v7.widget.helper.ItemTouchHelper;
-
-/**
- * Interface to notify an item ViewHolder of relevant callbacks from {@link
- * android.support.v7.widget.helper.ItemTouchHelper.Callback}.
- *
- * @author Paul Burke (ipaulpro)
- */
-public interface ItemTouchHelperViewHolder {
-
-    /**
-     * Called when the {@link ItemTouchHelper} first registers an item as being moved or swiped.
-     * Implementations should update the item view to indicate it's active state.
-     */
-    void onItemSelected();
-
-
-    /**
-     * Called when the {@link ItemTouchHelper} has completed the move or swipe, and the active item
-     * state should be cleared.
-     */
-    void onItemClear();
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java
deleted file mode 100644
index 1a0703167..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/NetworkServerSerializeHelper.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
-
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import de.kuschku.libquassel.objects.types.NetworkServer;
-
-public class NetworkServerSerializeHelper {
-    public static Bundle[] serialize(List<NetworkServer> servers) {
-        Bundle[] list = new Bundle[servers.size()];
-        for (int i = 0; i < servers.size(); i++) {
-            NetworkServer server = servers.get(i);
-            Bundle bundle = serialize(server);
-            list[i] = bundle;
-        }
-        return list;
-    }
-
-    @NonNull
-    public static Bundle serialize(NetworkServer server) {
-        Bundle bundle = new Bundle();
-        bundle.putBoolean("useSSL", server.useSSL);
-        bundle.putInt("sslVersion", server.sslVersion);
-        bundle.putString("host", server.host);
-        bundle.putInt("port", server.port);
-        bundle.putString("password", server.password);
-        bundle.putBoolean("useProxy", server.useProxy);
-        bundle.putInt("proxyType", server.proxyType.id);
-        bundle.putString("proxyHost", server.proxyHost);
-        bundle.putInt("proxyPort", server.proxyPort);
-        bundle.putString("proxyUser", server.proxyUser);
-        bundle.putString("proxyPass", server.proxyPass);
-        return bundle;
-    }
-
-    @NonNull
-    public static List<NetworkServer> deserialize(Parcelable[] serverList) {
-        List<NetworkServer> servers = new ArrayList<>(serverList.length);
-        for (Parcelable parcelable : serverList) {
-            Bundle bundle = (Bundle) parcelable;
-            servers.add(deserialize(bundle));
-        }
-        return servers;
-    }
-
-    @NonNull
-    public static NetworkServer deserialize(Bundle bundle) {
-        return new NetworkServer(
-                bundle.getBoolean("useSSL"),
-                bundle.getInt("sslVersion"),
-                bundle.getString("host"),
-                bundle.getInt("port"),
-                bundle.getString("password"),
-                bundle.getBoolean("useProxy"),
-                NetworkServer.ProxyType.fromId(bundle.getInt("proxyType")),
-                bundle.getString("proxyHost"),
-                bundle.getInt("proxyPort"),
-                bundle.getString("proxyUser"),
-                bundle.getString("proxyPass")
-        );
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java
deleted file mode 100644
index 2fb08cc03..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/OnStartDragListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Copyright (C) 2015 Paul Burke
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
-
-import android.support.v7.widget.RecyclerView;
-
-/**
- * Listener for manual initiation of a drag.
- */
-public interface OnStartDragListener {
-
-    /**
-     * Called when a view is requesting a start of a drag.
-     *
-     * @param viewHolder The holder of the view to drag.
-     */
-    void onStartDrag(RecyclerView.ViewHolder viewHolder);
-
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java
deleted file mode 100644
index 8d74c627c..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/coresettings/network/server/helper/SimpleItemTouchHelperCallback.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Copyright (C) 2015 Paul Burke
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.kuschku.quasseldroid_ng.ui.coresettings.network.server.helper;
-
-import android.graphics.Canvas;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.helper.ItemTouchHelper;
-
-/**
- * An implementation of {@link ItemTouchHelper.Callback} that enables basic drag & drop and
- * swipe-to-dismiss. Drag events are automatically started by an item long-press.<br/>
- * </br/>
- * Expects the <code>RecyclerView.Adapter</code> to listen for {@link
- * ItemTouchHelperAdapter} callbacks and the <code>RecyclerView.ViewHolder</code> to implement
- * {@link ItemTouchHelperViewHolder}.
- *
- * @author Paul Burke (ipaulpro)
- */
-public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
-
-    public static final float ALPHA_FULL = 1.0f;
-
-    private final ItemTouchHelperAdapter mAdapter;
-
-    public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter) {
-        mAdapter = adapter;
-    }
-
-    @Override
-    public boolean isLongPressDragEnabled() {
-        return true;
-    }
-
-    @Override
-    public boolean isItemViewSwipeEnabled() {
-        return false;
-    }
-
-    @Override
-    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
-        // Set movement flags based on the layout manager
-        if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
-            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
-            final int swipeFlags = 0;
-            return makeMovementFlags(dragFlags, swipeFlags);
-        } else {
-            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
-            final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
-            return makeMovementFlags(dragFlags, swipeFlags);
-        }
-    }
-
-    @Override
-    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
-        if (source.getItemViewType() != target.getItemViewType()) {
-            return false;
-        }
-
-        // Notify the adapter of the move
-        mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition());
-        return true;
-    }
-
-    @Override
-    public void onSwiped(RecyclerView.ViewHolder viewHolder, int i) {
-    }
-
-    @Override
-    public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
-        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
-            // Fade out the view as it is swiped out of the parent's bounds
-            final float alpha = ALPHA_FULL - Math.abs(dX) / (float) viewHolder.itemView.getWidth();
-            viewHolder.itemView.setAlpha(alpha);
-            viewHolder.itemView.setTranslationX(dX);
-        } else {
-            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
-        }
-    }
-
-    @Override
-    public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
-        // We only want the active item to change
-        if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
-            if (viewHolder instanceof ItemTouchHelperViewHolder) {
-                // Let the view holder know that this item is being moved or dragged
-                ItemTouchHelperViewHolder itemViewHolder = (ItemTouchHelperViewHolder) viewHolder;
-                itemViewHolder.onItemSelected();
-            }
-        }
-
-        super.onSelectedChanged(viewHolder, actionState);
-    }
-
-    @Override
-    public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
-        super.clearView(recyclerView, viewHolder);
-
-        viewHolder.itemView.setAlpha(ALPHA_FULL);
-
-        if (viewHolder instanceof ItemTouchHelperViewHolder) {
-            // Tell the view holder it's time to restore the idle state
-            ItemTouchHelperViewHolder itemViewHolder = (ItemTouchHelperViewHolder) viewHolder;
-            itemViewHolder.onItemClear();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
deleted file mode 100644
index 9df8fb9ce..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/editor/AdvancedEditor.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.editor;
-
-import android.graphics.Typeface;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntRange;
-import android.support.annotation.NonNull;
-import android.text.Spanned;
-import android.text.style.BackgroundColorSpan;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.StyleSpan;
-import android.text.style.UnderlineSpan;
-import android.widget.EditText;
-
-import com.google.common.base.Function;
-
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.format.spans.Copyable;
-import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcBoldSpan;
-import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcItalicSpan;
-import de.kuschku.util.irc.format.spans.IrcUnderlineSpan;
-
-public class AdvancedEditor {
-    private final AppContext context;
-    private final EditText editText;
-
-    public AdvancedEditor(AppContext context, EditText editText) {
-        this.context = context;
-        this.editText = editText;
-    }
-
-    public void toggleUnderline() {
-        toggleUnderline(editText.getSelectionStart(), editText.getSelectionEnd());
-    }
-
-    public void toggleUnderline(int start, int end) {
-        if (start == end)
-            return;
-
-        boolean isUnderline = removeSpans(start, end, UnderlineSpan.class, styleSpan -> {
-            if (styleSpan instanceof IrcUnderlineSpan) {
-                return (IrcUnderlineSpan) styleSpan;
-            } else {
-                return new IrcUnderlineSpan();
-            }
-        }, false);
-        if (!isUnderline) {
-            editText.getText().setSpan(new IrcUnderlineSpan(), start, end, Spanned.SPAN_MARK_MARK);
-        }
-    }
-
-
-    public void toggleBold() {
-        toggleBold(editText.getSelectionStart(), editText.getSelectionEnd());
-    }
-
-    public void toggleBold(int start, int end) {
-        if (start == end)
-            return;
-
-        boolean isBold = removeSpans(start, end, StyleSpan.class, styleSpan -> {
-            if (styleSpan instanceof IrcBoldSpan) {
-                return (IrcBoldSpan) styleSpan;
-            } else {
-                return styleSpan.getStyle() == Typeface.BOLD ? new IrcBoldSpan() : null;
-            }
-        }, false);
-        if (!isBold) {
-            editText.getText().setSpan(new IrcBoldSpan(), start, end, Spanned.SPAN_MARK_MARK);
-        }
-    }
-
-    public void toggleItalic() {
-        toggleItalic(editText.getSelectionStart(), editText.getSelectionEnd());
-    }
-
-    public void toggleItalic(int start, int end) {
-        if (start == end)
-            return;
-
-        boolean isItalic = removeSpans(start, end, StyleSpan.class, styleSpan -> {
-            if (styleSpan instanceof IrcItalicSpan) {
-                return (IrcItalicSpan) styleSpan;
-            } else {
-                return styleSpan.getStyle() == Typeface.ITALIC ? new IrcItalicSpan() : null;
-            }
-        }, false);
-        if (!isItalic) {
-            editText.getText().setSpan(new IrcItalicSpan(), start, end, Spanned.SPAN_MARK_MARK);
-        }
-    }
-
-    public void toggleForeground(@IntRange(from = -1, to = 15) int color) {
-        toggleForeground(editText.getSelectionStart(), editText.getSelectionEnd(), color);
-    }
-
-    public void toggleForeground(int start, int end, int color) {
-        removeSpans(start, end, ForegroundColorSpan.class, foregroundColorSpan -> {
-            if ((foregroundColorSpan instanceof IrcForegroundColorSpan)) {
-                return (IrcForegroundColorSpan) foregroundColorSpan;
-            } else {
-                int id = context.themeUtil().res.colorToId(foregroundColorSpan.getForegroundColor());
-                if (id != -1) {
-                    return new IrcForegroundColorSpan(id, context.themeUtil().res.mircColors[id]);
-                } else {
-                    return null;
-                }
-            }
-        }, true);
-
-        if (color != -1) {
-            editText.getText().setSpan(new IrcForegroundColorSpan(color, context.themeUtil().res.mircColors[color]), start, end, Spanned.SPAN_MARK_MARK);
-        }
-    }
-
-    private <T extends Copyable<T>, U> boolean removeSpans(int start, int end, Class<U> group, Function<U, T> transformer, boolean removeInvalid) {
-        if (start == end)
-            return false;
-
-        boolean removedAny = false;
-
-        for (U raw : editText.getText().getSpans(start, end, group)) {
-            int spanFlags = editText.getText().getSpanFlags(raw);
-            if ((spanFlags & Spanned.SPAN_COMPOSING) != 0) continue;
-
-            int spanEnd = editText.getText().getSpanEnd(raw);
-            int spanStart = editText.getText().getSpanStart(raw);
-
-            T span = transformer.apply(raw);
-            if (span != raw) {
-                if (span == null) {
-                    if (removeInvalid)
-                        editText.getText().removeSpan(raw);
-                    continue;
-                } else {
-                    editText.getText().removeSpan(raw);
-                    editText.getText().setSpan(span, spanStart, spanEnd, spanFlags);
-                }
-            }
-
-            boolean endIsIn = (spanEnd <= end && spanEnd >= start);
-            boolean endIsAfter = (spanEnd >= end);
-
-            boolean startIsIn = (spanStart <= end && spanStart >= start);
-            boolean startIsBefore = (spanStart < start);
-
-            if (endIsIn && startIsIn) {
-                editText.getText().removeSpan(span);
-                removedAny = true;
-            } else if (endIsIn) {
-                editText.getText().setSpan(span, spanStart, start, spanFlags);
-                removedAny = true;
-            } else if (startIsIn) {
-                editText.getText().setSpan(span, end, spanEnd, spanFlags);
-                removedAny = true;
-            } else if (startIsBefore && endIsAfter) {
-                editText.getText().setSpan(span, spanStart, start, spanFlags);
-                editText.getText().setSpan(span.copy(), end, spanEnd, spanFlags);
-                removedAny = true;
-            }
-        }
-        return removedAny;
-    }
-
-    public void toggleBackground(@IntRange(from = -1, to = 15) int color) {
-        toggleBackground(editText.getSelectionStart(), editText.getSelectionEnd(), color);
-    }
-
-    public void toggleBackground(int start, int end, @ColorInt int color) {
-        removeSpans(start, end, BackgroundColorSpan.class, backgroundColorSpan -> {
-            if ((backgroundColorSpan instanceof IrcBackgroundColorSpan)) {
-                return (IrcBackgroundColorSpan) backgroundColorSpan;
-            } else {
-                int id = context.themeUtil().res.colorToId(backgroundColorSpan.getBackgroundColor());
-                if (id != -1) {
-                    return new IrcBackgroundColorSpan(id, context.themeUtil().res.mircColors[id]);
-                } else {
-                    return null;
-                }
-            }
-        }, true);
-
-        if (color != -1) {
-            editText.getText().setSpan(new IrcBackgroundColorSpan(color, context.themeUtil().res.mircColors[color]), start, end, Spanned.SPAN_MARK_MARK);
-        }
-    }
-
-    @NonNull
-    public String toFormatString() {
-        return context.serializer().toEscapeCodes(editText.getText());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.java
deleted file mode 100644
index d2dc408c0..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/Settings.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.settings;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.support.v7.preference.PreferenceManager;
-
-import de.kuschku.quasseldroid_ng.ui.theme.PreferenceStrings;
-import de.kuschku.util.preferences.BooleanPreference;
-import de.kuschku.util.preferences.IntPreference;
-import de.kuschku.util.preferences.StringPreference;
-
-public class Settings {
-    public final StringPreference preferenceLastAccount;
-
-    public final StringPreference preferenceTheme;
-    public final BooleanPreference preferenceColors;
-    public final BooleanPreference preferenceBrackets;
-    public final BooleanPreference preferenceHostmask;
-    public final BooleanPreference preferenceLag;
-    public final IntPreference preferenceFontSize;
-
-
-    @SuppressWarnings("FieldCanBeLocal")
-    // THIS FIELD CAN NOT BE LOCAL, OR IT WILL NOT WORK
-    private final SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener;
-
-    public Settings(PreferenceStrings prefs, SharedPreferences pref) {
-        this.preferenceLastAccount = new StringPreference(pref, prefs.preferenceLastAccount, "");
-
-        this.preferenceTheme = new StringPreference(pref, prefs.preferenceTheme, "QUASSEL_LIGHT");
-        this.preferenceColors = new BooleanPreference(pref, prefs.preferenceColors, true);
-        this.preferenceBrackets = new BooleanPreference(pref, prefs.preferenceBrackets, false);
-        this.preferenceHostmask = new BooleanPreference(pref, prefs.preferenceHostmask, false);
-        this.preferenceLag = new BooleanPreference(pref, prefs.preferenceLag, false);
-        this.preferenceFontSize = new IntPreference(pref, prefs.preferenceFontSize, 14);
-
-        onSharedPreferenceChangeListener = (preferences, key) -> {
-            if (prefs.preferenceLastAccount.equals(key)) preferenceLastAccount.change();
-
-            if (prefs.preferenceTheme.equals(key)) preferenceTheme.change();
-            if (prefs.preferenceColors.equals(key)) preferenceColors.change();
-            if (prefs.preferenceBrackets.equals(key)) preferenceBrackets.change();
-            if (prefs.preferenceHostmask.equals(key)) preferenceHostmask.change();
-            if (prefs.preferenceLag.equals(key)) preferenceLag.change();
-            if (prefs.preferenceFontSize.equals(key)) preferenceFontSize.change();
-        };
-
-        pref.registerOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener);
-    }
-
-    public Settings(Context ctx) {
-        this(new PreferenceStrings(ctx), PreferenceManager.getDefaultSharedPreferences(ctx));
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.java
deleted file mode 100644
index 597e228b8..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/settings/SettingsActivity.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.settings;
-
-import android.app.FragmentTransaction;
-import android.os.Bundle;
-import android.preference.PreferenceFragment;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.quasseldroid_ng.ui.theme.AppTheme;
-
-public class SettingsActivity extends AppCompatActivity {
-
-    final AppContext context = new AppContext();
-
-    @Bind(R.id.toolbar)
-    Toolbar toolbar;
-
-    int themeid;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        themeid = ServiceHelper.initContext(context, this);
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_settings);
-        ButterKnife.bind(this);
-
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
-        setPreferenceFragment(new AppearanceFragment());
-
-        context.settings().preferenceTheme.addChangeListener(value -> restart());
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        if (themeid != AppTheme.resFromString(context.settings().preferenceTheme.get()))
-            restart();
-    }
-
-    public void restart() {
-        startActivity(getIntent());
-        finish();
-        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
-    }
-
-    public void setPreferenceFragment(PreferenceFragment preferenceFragment) {
-        FragmentTransaction transaction = getFragmentManager().beginTransaction();
-        transaction.replace(R.id.content_host, preferenceFragment);
-        transaction.commit();
-    }
-
-    public static class AppearanceFragment extends PreferenceFragment {
-        final AppContext context = new AppContext();
-
-        @Override
-        public void onCreate(Bundle savedInstanceState) {
-            ServiceHelper.initContext(context, getActivity());
-            super.onCreate(savedInstanceState);
-            addPreferencesFromResource(R.xml.pref_appearance);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountItem.java
deleted file mode 100644
index 14ab0fc12..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountItem.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.support.annotation.ColorInt;
-import android.support.v7.widget.AppCompatImageButton;
-import android.support.v7.widget.AppCompatRadioButton;
-import android.support.v7.widget.RecyclerView;
-import android.util.Pair;
-import android.view.View;
-import android.widget.TextView;
-
-import com.mikepenz.fastadapter.utils.ViewHolderFactory;
-import com.mikepenz.materialdrawer.model.AbstractDrawerItem;
-import com.mikepenz.materialdrawer.util.DrawerUIUtils;
-
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.accounts.Account;
-
-public class AccountItem extends AbstractDrawerItem<AccountItem, AccountItem.ViewHolder> {
-    public final Account account;
-    protected Pair<Integer, ColorStateList> colorStateList;
-    private OnDeleteListener listener;
-
-    public AccountItem(Account account) {
-        this.account = account;
-    }
-
-    @Override
-    public int getType() {
-        return R.id.item_account;
-    }
-
-    @Override
-    public int getLayoutRes() {
-        return R.layout.widget_core_account;
-    }
-
-    @Override
-    public boolean isSelectable() {
-        return true;
-    }
-
-    @Override
-    public void bindView(ViewHolder viewHolder) {
-        Context ctx = viewHolder.itemView.getContext();
-
-        //set the identifier from the drawerItem here. It can be used to run tests
-        viewHolder.itemView.setId(hashCode());
-
-        //set the item selected if it is
-        viewHolder.itemView.setSelected(isSelected());
-
-        //get the correct color for the text
-        int color = getColor(ctx);
-        int selectedTextColor = getSelectedTextColor(ctx);
-
-        viewHolder.name.setText(account.name);
-
-        viewHolder.select.setChecked(isSelected());
-        viewHolder.select.setClickable(false);
-
-        viewHolder.description.setText(viewHolder.itemView.getContext().getString(R.string.labelUserOnHost, account.user, account.host));
-
-        viewHolder.name.setTextColor(getTextColorStateList(color, selectedTextColor));
-
-        viewHolder.description.setTextColor(getTextColorStateList(color, selectedTextColor));
-
-        viewHolder.delete.setOnClickListener(view -> listener.onDelete(this));
-
-        //for android API 17 --> Padding not applied via xml
-        DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view);
-
-        //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
-        onPostBindView(this, viewHolder.itemView);
-    }
-
-    @Override
-    public ViewHolderFactory<ViewHolder> getFactory() {
-        return new ItemFactory();
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getColor(Context ctx) {
-        int color;
-        if (this.isEnabled()) {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_primary_text;
-        } else {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_hint_text;
-        }
-        return color;
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getSelectedTextColor(Context ctx) {
-        return com.mikepenz.materialdrawer.R.color.material_drawer_selected_text;
-    }
-
-    /**
-     * helper to get the ColorStateList for the text and remembering it so we do not have to recreate it all the time
-     *
-     * @param color
-     * @param selectedTextColor
-     * @return
-     */
-    protected ColorStateList getTextColorStateList(@ColorInt int color, @ColorInt int selectedTextColor) {
-        if (colorStateList == null || color + selectedTextColor != colorStateList.first) {
-            colorStateList = new Pair<>(color + selectedTextColor, DrawerUIUtils.getTextColorStateList(color, selectedTextColor));
-        }
-
-        return colorStateList.second;
-    }
-
-    public void setOnDeleteListener(OnDeleteListener listener) {
-        this.listener = listener;
-    }
-
-    public interface OnDeleteListener {
-        void onDelete(AccountItem item);
-    }
-
-    public static class ItemFactory implements ViewHolderFactory<ViewHolder> {
-        public ViewHolder create(View v) {
-            return new ViewHolder(v);
-        }
-    }
-
-    protected static class ViewHolder extends RecyclerView.ViewHolder {
-        private final View view;
-        private final AppCompatRadioButton select;
-        private final TextView name;
-        private final TextView description;
-        private final AppCompatImageButton delete;
-
-        private ViewHolder(View view) {
-            super(view);
-            this.view = view;
-            this.select = (AppCompatRadioButton) view.findViewById(R.id.account_select);
-            this.name = (TextView) view.findViewById(R.id.account_name);
-            this.description = (TextView) view.findViewById(R.id.account_description);
-            this.delete = (AppCompatImageButton) view.findViewById(R.id.account_delete);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
deleted file mode 100644
index 7b2f80609..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSelectActivity.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDelegate;
-import android.view.View;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSelectSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment;
-
-public class AccountSelectActivity extends AppCompatActivity {
-    static {
-        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
-    }
-
-    @Bind(R.id.view_pager)
-    ViewPager viewPager;
-    @Bind(R.id.btn)
-    FloatingActionButton btn;
-    private SlidePagerAdapter slidePagerAdapter;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_setup);
-        ButterKnife.bind(this);
-        slidePagerAdapter = new SlidePagerAdapter(getSupportFragmentManager());
-
-        viewPager.setAdapter(slidePagerAdapter);
-        slidePagerAdapter.notifyDataSetChanged();
-        updateValidity(slidePagerAdapter.item.isValid());
-        btn.setImageResource(R.drawable.ic_check);
-        slidePagerAdapter.item.addChangeListener(this::updateValidity);
-        btn.setOnClickListener(v -> {
-            Bundle bundle = new Bundle();
-            slidePagerAdapter.item.getData(bundle);
-
-            Intent result = new Intent();
-            result.putExtra("extra", bundle);
-            setResult(RESULT_OK, result);
-            finish();
-        });
-    }
-
-    public void updateValidity(boolean validity) {
-        btn.setVisibility(validity ? View.VISIBLE : View.GONE);
-        slidePagerAdapter.notifyDataSetChanged();
-    }
-
-    private class SlidePagerAdapter extends FragmentPagerAdapter {
-        private final SlideFragment item = new AccountSelectSlide();
-
-        public SlidePagerAdapter(FragmentManager fm) {
-            super(fm);
-        }
-
-        @Override
-        public SlideFragment getItem(int position) {
-            return item;
-        }
-
-        @Override
-        public int getCount() {
-            return 1;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
deleted file mode 100644
index d5ee9b0e3..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/AccountSetupActivity.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDelegate;
-import android.view.View;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSetupCoreSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSetupNameSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.AccountSetupUserSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.accounts.AccountManager;
-
-public class AccountSetupActivity extends AppCompatActivity implements ValidUpdateCallback {
-    static {
-        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
-    }
-
-    @Bind(R.id.view_pager)
-    ViewPager viewPager;
-    @Bind(R.id.btn)
-    FloatingActionButton btn;
-    private SlidePagerAdapter slidePagerAdapter;
-    private int lastValidPage = -1;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_setup);
-        ButterKnife.bind(this);
-
-        slidePagerAdapter = new SlidePagerAdapter(getSupportFragmentManager());
-        viewPager.setAdapter(slidePagerAdapter);
-
-        slidePagerAdapter.addFragment(new AccountSetupCoreSlide());
-        slidePagerAdapter.addFragment(new AccountSetupUserSlide());
-        slidePagerAdapter.addFragment(new AccountSetupNameSlide());
-
-        SlideFragment item = slidePagerAdapter.getItem(viewPager.getCurrentItem());
-
-        updateValidity(item.isValid());
-
-        btn.setOnClickListener(v -> {
-            if (viewPager.getCurrentItem() == slidePagerAdapter.getCount() - 1) {
-                onDone();
-            } else {
-                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
-            }
-        });
-
-        slidePagerAdapter.getItem(viewPager.getCurrentItem()).addChangeListener(AccountSetupActivity.this);
-        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
-            @Override
-            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
-            }
-
-            @Override
-            public void onPageSelected(int position) {
-                SlideFragment slideFragment = slidePagerAdapter.getItem(viewPager.getCurrentItem());
-                for (int i = 0; i < slidePagerAdapter.getCount(); i++) {
-                    slidePagerAdapter.getItem(i).removeChangeListener(AccountSetupActivity.this);
-                }
-                slideFragment.addChangeListener(AccountSetupActivity.this);
-                updateValidity(slideFragment.isValid());
-                if (viewPager.getCurrentItem() == slidePagerAdapter.list.size() - 1) {
-                    btn.setImageResource(R.drawable.ic_check);
-                } else {
-                    btn.setImageResource(R.drawable.ic_arrow_right);
-                }
-            }
-
-            @Override
-            public void onPageScrollStateChanged(int state) {
-
-            }
-        });
-    }
-
-    private void onDone() {
-        Bundle bundle = new Bundle();
-        for (SlideFragment fragment : slidePagerAdapter.list) {
-            fragment.getData(bundle);
-        }
-
-        setupAccount(bundle);
-
-        Intent result = new Intent();
-        result.putExtra("extra", bundle);
-        setResult(RESULT_OK, result);
-        finish();
-    }
-
-    private void setupAccount(Bundle bundle) {
-        AccountManager manager = new AccountManager(this);
-        manager.add(new Account(
-                UUID.randomUUID(),
-                bundle.getString("name"),
-                bundle.getString("host"),
-                bundle.getInt("port"),
-                bundle.getString("user"),
-                bundle.getString("pass")
-        ));
-    }
-
-    public void updateValidity(boolean validity) {
-        btn.setVisibility(validity ? View.VISIBLE : View.GONE);
-        if (validity) {
-            lastValidPage = viewPager.getCurrentItem();
-        } else {
-            lastValidPage = viewPager.getCurrentItem() - 1;
-        }
-        slidePagerAdapter.notifyDataSetChanged();
-    }
-
-    private class SlidePagerAdapter extends FragmentPagerAdapter {
-        final List<SlideFragment> list = new ArrayList<>();
-
-        public SlidePagerAdapter(FragmentManager fm) {
-            super(fm);
-        }
-
-        @Override
-        public SlideFragment getItem(int position) {
-            return list.get(position);
-        }
-
-        @Override
-        public int getCount() {
-            return Math.min(lastValidPage + 2, list.size());
-        }
-
-        public void addFragment(SlideFragment fragment) {
-            list.add(fragment);
-            notifyDataSetChanged();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
deleted file mode 100644
index c459aa991..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CoreSetupActivity.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDelegate;
-import android.view.View;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.CoreBackendSelectSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.CoreBackendSetupSlide;
-import de.kuschku.quasseldroid_ng.ui.setup.slides.SlideFragment;
-
-public class CoreSetupActivity extends AppCompatActivity implements ValidUpdateCallback {
-    static {
-        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
-    }
-
-    @Bind(R.id.view_pager)
-    ViewPager viewPager;
-    @Bind(R.id.btn)
-    FloatingActionButton btn;
-    private SlidePagerAdapter slidePagerAdapter;
-    private int lastValidPage = -1;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        Intent intent = getIntent();
-        if (intent == null) {
-            finish();
-            return;
-        }
-
-        setContentView(R.layout.activity_setup);
-        ButterKnife.bind(this);
-
-        slidePagerAdapter = new SlidePagerAdapter(getSupportFragmentManager());
-        viewPager.setAdapter(slidePagerAdapter);
-
-        CoreBackendSelectSlide backendSelectSlide = new CoreBackendSelectSlide();
-        backendSelectSlide.setArguments(intent.getExtras());
-        CoreBackendSetupSlide backendSetupSlide = new CoreBackendSetupSlide();
-        backendSetupSlide.setArguments(intent.getExtras());
-
-        slidePagerAdapter.addFragment(backendSelectSlide);
-        slidePagerAdapter.addFragment(backendSetupSlide);
-
-        SlideFragment item = slidePagerAdapter.getItem(viewPager.getCurrentItem());
-
-        updateValidity(item.isValid());
-
-        btn.setOnClickListener(v -> {
-            if (viewPager.getCurrentItem() == slidePagerAdapter.getCount() - 1) {
-                onDone();
-            } else {
-                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
-            }
-        });
-
-        slidePagerAdapter.getItem(viewPager.getCurrentItem()).addChangeListener(CoreSetupActivity.this);
-        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
-            @Override
-            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
-            }
-
-            @Override
-            public void onPageSelected(int position) {
-                SlideFragment slideFragment = slidePagerAdapter.getItem(viewPager.getCurrentItem());
-                Bundle bundle = new Bundle();
-                for (int i = 0; i < slidePagerAdapter.getCount(); i++) {
-                    slidePagerAdapter.getItem(i).removeChangeListener(CoreSetupActivity.this);
-                    slidePagerAdapter.getItem(i).getData(bundle);
-                }
-                slideFragment.addChangeListener(CoreSetupActivity.this);
-                slidePagerAdapter.getItem(position).setData(bundle);
-                updateValidity(slideFragment.isValid());
-                if (viewPager.getCurrentItem() == slidePagerAdapter.list.size() - 1) {
-                    btn.setImageResource(R.drawable.ic_check);
-                } else {
-                    btn.setImageResource(R.drawable.ic_arrow_right);
-                }
-            }
-
-            @Override
-            public void onPageScrollStateChanged(int state) {
-
-            }
-        });
-    }
-
-    private void onDone() {
-        Bundle bundle = new Bundle();
-        for (SlideFragment fragment : slidePagerAdapter.list) {
-            fragment.getData(bundle);
-        }
-
-        Intent result = new Intent();
-        result.putExtras(bundle);
-        setResult(RESULT_OK, result);
-        finish();
-    }
-
-    public void updateValidity(boolean validity) {
-        btn.setVisibility(validity ? View.VISIBLE : View.GONE);
-        if (validity) {
-            lastValidPage = viewPager.getCurrentItem();
-        } else {
-            lastValidPage = viewPager.getCurrentItem() - 1;
-        }
-        slidePagerAdapter.notifyDataSetChanged();
-    }
-
-    private class SlidePagerAdapter extends FragmentPagerAdapter {
-        final List<SlideFragment> list = new ArrayList<>();
-
-        public SlidePagerAdapter(FragmentManager fm) {
-            super(fm);
-        }
-
-        @Override
-        public SlideFragment getItem(int position) {
-            return list.get(position);
-        }
-
-        @Override
-        public int getCount() {
-            return Math.min(lastValidPage + 2, list.size());
-        }
-
-        public void addFragment(SlideFragment fragment) {
-            list.add(fragment);
-            notifyDataSetChanged();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CreateAccountItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CreateAccountItem.java
deleted file mode 100644
index 25a8c58ec..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/CreateAccountItem.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.support.annotation.ColorInt;
-import android.support.v7.widget.RecyclerView;
-import android.util.Pair;
-import android.view.View;
-
-import com.mikepenz.fastadapter.utils.ViewHolderFactory;
-import com.mikepenz.materialdrawer.model.AbstractDrawerItem;
-import com.mikepenz.materialdrawer.util.DrawerUIUtils;
-
-import de.kuschku.quasseldroid_ng.R;
-
-public class CreateAccountItem extends AbstractDrawerItem<CreateAccountItem, CreateAccountItem.ViewHolder> {
-    protected Pair<Integer, ColorStateList> colorStateList;
-
-    @Override
-    public int getType() {
-        return R.id.item_create_account;
-    }
-
-    @Override
-    public int getLayoutRes() {
-        return R.layout.widget_core_account_add;
-    }
-
-    @Override
-    public void bindView(ViewHolder viewHolder) {
-        //set the identifier from the drawerItem here. It can be used to run tests
-        viewHolder.itemView.setId(hashCode());
-
-        //set the item selected if it is
-        viewHolder.itemView.setSelected(isSelected());
-
-        //for android API 17 --> Padding not applied via xml
-        DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view);
-
-        //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
-        onPostBindView(this, viewHolder.itemView);
-    }
-
-    @Override
-    public ViewHolderFactory<ViewHolder> getFactory() {
-        return new ItemFactory();
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getColor(Context ctx) {
-        int color;
-        if (this.isEnabled()) {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_primary_text;
-        } else {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_hint_text;
-        }
-        return color;
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getSelectedTextColor(Context ctx) {
-        return com.mikepenz.materialdrawer.R.color.material_drawer_selected_text;
-    }
-
-    /**
-     * helper to get the ColorStateList for the text and remembering it so we do not have to recreate it all the time
-     *
-     * @param color
-     * @param selectedTextColor
-     * @return
-     */
-    protected ColorStateList getTextColorStateList(@ColorInt int color, @ColorInt int selectedTextColor) {
-        if (colorStateList == null || color + selectedTextColor != colorStateList.first) {
-            colorStateList = new Pair<>(color + selectedTextColor, DrawerUIUtils.getTextColorStateList(color, selectedTextColor));
-        }
-
-        return colorStateList.second;
-    }
-
-    public static class ItemFactory implements ViewHolderFactory<ViewHolder> {
-        public ViewHolder create(View v) {
-            return new ViewHolder(v);
-        }
-    }
-
-    protected static class ViewHolder extends RecyclerView.ViewHolder {
-        private final View view;
-
-        private ViewHolder(View view) {
-            super(view);
-            this.view = view;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/StorageBackendItem.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/StorageBackendItem.java
deleted file mode 100644
index 0d1928f28..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/StorageBackendItem.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.support.annotation.ColorInt;
-import android.support.v7.widget.AppCompatRadioButton;
-import android.support.v7.widget.RecyclerView;
-import android.util.Pair;
-import android.view.View;
-import android.widget.TextView;
-
-import com.mikepenz.fastadapter.utils.ViewHolderFactory;
-import com.mikepenz.materialdrawer.model.AbstractDrawerItem;
-import com.mikepenz.materialdrawer.util.DrawerUIUtils;
-
-import de.kuschku.quasseldroid_ng.R;
-
-public class StorageBackendItem extends AbstractDrawerItem<StorageBackendItem, StorageBackendItem.ViewHolder> {
-    private final String displayName;
-    private final String description;
-    protected Pair<Integer, ColorStateList> colorStateList;
-
-    public StorageBackendItem(String displayName, String description) {
-        this.displayName = displayName;
-        this.description = description;
-    }
-
-    @Override
-    public int getType() {
-        return R.id.item_backend;
-    }
-
-    @Override
-    public int getLayoutRes() {
-        return R.layout.widget_core_backend;
-    }
-
-    @Override
-    public boolean isSelectable() {
-        return true;
-    }
-
-    @Override
-    public void bindView(ViewHolder viewHolder) {
-        Context ctx = viewHolder.itemView.getContext();
-
-        //set the identifier from the drawerItem here. It can be used to run tests
-        viewHolder.itemView.setId(hashCode());
-
-        //set the item selected if it is
-        viewHolder.itemView.setSelected(isSelected());
-
-        //get the correct color for the text
-        int color = getColor(ctx);
-        int selectedTextColor = getSelectedTextColor(ctx);
-
-        viewHolder.name.setText(displayName);
-
-        viewHolder.select.setChecked(isSelected());
-        viewHolder.select.setClickable(false);
-
-        viewHolder.description.setText(description);
-
-        viewHolder.name.setTextColor(getTextColorStateList(color, selectedTextColor));
-
-        viewHolder.description.setTextColor(getTextColorStateList(color, selectedTextColor));
-
-        //for android API 17 --> Padding not applied via xml
-        DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view);
-
-        //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
-        onPostBindView(this, viewHolder.itemView);
-    }
-
-    @Override
-    public ViewHolderFactory<ViewHolder> getFactory() {
-        return new ItemFactory();
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getColor(Context ctx) {
-        int color;
-        if (this.isEnabled()) {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_primary_text;
-        } else {
-            color = com.mikepenz.materialdrawer.R.color.material_drawer_hint_text;
-        }
-        return color;
-    }
-
-    /**
-     * helper method to decide for the correct color
-     *
-     * @param ctx
-     * @return
-     */
-    protected int getSelectedTextColor(Context ctx) {
-        return com.mikepenz.materialdrawer.R.color.material_drawer_selected_text;
-    }
-
-    /**
-     * helper to get the ColorStateList for the text and remembering it so we do not have to recreate it all the time
-     *
-     * @param color
-     * @param selectedTextColor
-     * @return
-     */
-    protected ColorStateList getTextColorStateList(@ColorInt int color, @ColorInt int selectedTextColor) {
-        if (colorStateList == null || color + selectedTextColor != colorStateList.first) {
-            colorStateList = new Pair<>(color + selectedTextColor, DrawerUIUtils.getTextColorStateList(color, selectedTextColor));
-        }
-
-        return colorStateList.second;
-    }
-
-    public String getDisplayName() {
-        return displayName;
-    }
-
-    public static class ItemFactory implements ViewHolderFactory<ViewHolder> {
-        public ViewHolder create(View v) {
-            return new ViewHolder(v);
-        }
-    }
-
-    protected static class ViewHolder extends RecyclerView.ViewHolder {
-        private final View view;
-        private final AppCompatRadioButton select;
-        private final TextView name;
-        private final TextView description;
-
-        private ViewHolder(View view) {
-            super(view);
-            this.view = view;
-            this.select = (AppCompatRadioButton) view.findViewById(R.id.backend_select);
-            this.name = (TextView) view.findViewById(R.id.backend_name);
-            this.description = (TextView) view.findViewById(R.id.backend_description);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/ValidUpdateCallback.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/ValidUpdateCallback.java
deleted file mode 100644
index 05328f085..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/ValidUpdateCallback.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup;
-
-public interface ValidUpdateCallback {
-    void updateValidity(boolean isValid);
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java
deleted file mode 100644
index c5be22b95..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSelectSlide.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.mikepenz.fastadapter.FastAdapter;
-import com.mikepenz.fastadapter.IItem;
-import com.mikepenz.fastadapter.adapters.ItemAdapter;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.AccountItem;
-import de.kuschku.quasseldroid_ng.ui.setup.AccountSetupActivity;
-import de.kuschku.quasseldroid_ng.ui.setup.CreateAccountItem;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.accounts.AccountManager;
-import de.kuschku.util.backports.Optional;
-import de.kuschku.util.backports.Optionals;
-
-public class AccountSelectSlide extends SlideFragment implements AccountItem.OnDeleteListener {
-    private ItemAdapter<IItem> itemAdapter;
-    private FastAdapter<IItem> fastAdapter;
-    private AccountManager manager;
-
-    @Override
-    public Bundle getData(Bundle in) {
-        AccountItem item = (AccountItem) findAny(fastAdapter.getSelectedItems()).get();
-        in.putString("account", item.account.id.toString());
-        return in;
-    }
-
-    private <T> Optional<T> findAny(Set<T> selections) {
-        Iterator<T> iterator = selections.iterator();
-        if (iterator.hasNext()) {
-            return Optionals.of(iterator.next());
-        } else {
-            return Optionals.absent();
-        }
-    }
-
-    @Override
-    public boolean isValid() {
-        return fastAdapter != null && fastAdapter.getSelections().size() == 1 && findAny(fastAdapter.getSelectedItems()).get() instanceof AccountItem;
-    }
-
-    @Override
-    protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
-        RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.slide_select, container, false);
-
-        manager = new AccountManager(getContext());
-
-        fastAdapter = new FastAdapter<>();
-        itemAdapter = new ItemAdapter<>();
-        itemAdapter.wrap(fastAdapter);
-        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-        recyclerView.setItemAnimator(new DefaultItemAnimator());
-        updateContent();
-        recyclerView.setAdapter(fastAdapter);
-
-        fastAdapter.withSelectWithItemUpdate(true);
-        fastAdapter.withOnClickListener((v, adapter, item, position) -> {
-            if (item instanceof CreateAccountItem) {
-                createNew();
-                return true;
-            } else {
-                fastAdapter.deselect();
-                fastAdapter.select(position);
-                updateValidity();
-                return false;
-            }
-        });
-
-
-        return recyclerView;
-    }
-
-    private void createNew() {
-        Intent intent = new Intent(getContext(), AccountSetupActivity.class);
-        startActivityForResult(intent, 0);
-    }
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (findAny(fastAdapter.getSelectedItems()).get() instanceof CreateAccountItem)
-            fastAdapter.deselect();
-
-        super.onActivityResult(requestCode, resultCode, data);
-        if (resultCode == Activity.RESULT_OK) {
-            updateContent();
-        } else if (fastAdapter.getItemCount() == 0) {
-            getActivity().finish();
-        }
-    }
-
-    private void updateContent() {
-        itemAdapter.clear();
-        Set<Account> accounts = manager.accounts();
-        for (Account account : accounts) {
-            AccountItem accountItem = new AccountItem(account);
-            accountItem.setOnDeleteListener(this);
-            itemAdapter.add(accountItem);
-        }
-        itemAdapter.add(new CreateAccountItem());
-
-        if (accounts.size() == 0) {
-            createNew();
-        }
-    }
-
-    @Override
-    protected int getTitle() {
-        return R.string.slideAccountSelectTitle;
-    }
-
-    @Override
-    protected int getDescription() {
-        return R.string.slideAccountSelectDescription;
-    }
-
-    @Override
-    public void onDelete(AccountItem item) {
-        manager.remove(item.account);
-        updateContent();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java
deleted file mode 100644
index 16e6d7b98..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupCoreSlide.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TextInputEditText;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-
-public class AccountSetupCoreSlide extends SlideFragment {
-    final TextWatcher watcher = new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-            updateValidity();
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-        }
-    };
-    @Bind(R.id.host)
-    TextInputEditText hostField;
-    @Bind(R.id.port)
-    TextInputEditText portField;
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.slide_account_core, container, false);
-        ButterKnife.bind(this, view);
-        hostField.addTextChangedListener(watcher);
-        portField.addTextChangedListener(watcher);
-        return view;
-    }
-
-    @Override
-    public Bundle getData(Bundle in) {
-        in.putString("host", hostField.getText().toString());
-        in.putInt("port", Integer.valueOf(portField.getText().toString()));
-        return in;
-    }
-
-    @Override
-    public boolean isValid() {
-        return validHost() && validPort();
-    }
-
-    @Override
-    @StringRes
-    public int getTitle() {
-        return R.string.slideAccountCoreTitle;
-    }
-
-    @Override
-    @StringRes
-    public int getDescription() {
-        return R.string.slideAccountCoreDescription;
-    }
-
-    private boolean validPort() {
-        if (portField == null)
-            return false;
-
-        String portText = portField.getText().toString();
-        try {
-            int port = Integer.parseInt(portText);
-            return port <= 65536 && port > 0;
-        } catch (NumberFormatException e) {
-            return false;
-        }
-    }
-
-    private boolean validHost() {
-        if (hostField == null)
-            return false;
-
-        String hostText = hostField.getText().toString();
-        return !hostText.isEmpty();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java
deleted file mode 100644
index 729f64c62..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupNameSlide.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TextInputEditText;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-
-public class AccountSetupNameSlide extends SlideFragment {
-    final TextWatcher watcher = new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-            updateValidity();
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-        }
-    };
-    @Bind(R.id.name)
-    TextInputEditText nameField;
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.slide_account_name, container, false);
-        ButterKnife.bind(this, view);
-        nameField.addTextChangedListener(watcher);
-        return view;
-    }
-
-    @Override
-    public Bundle getData(Bundle in) {
-        in.putString("name", nameField.getText().toString());
-        return in;
-    }
-
-    @Override
-    public boolean isValid() {
-        return validName();
-    }
-
-    @Override
-    @StringRes
-    public int getTitle() {
-        return R.string.slideAccountNameTitle;
-    }
-
-    @Override
-    @StringRes
-    public int getDescription() {
-        return R.string.slideAccountNameDescription;
-    }
-
-    private boolean validName() {
-        if (nameField == null)
-            return false;
-
-        String hostText = nameField.getText().toString();
-        return !hostText.isEmpty();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java
deleted file mode 100644
index 39b544b13..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/AccountSetupUserSlide.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TextInputEditText;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-
-public class AccountSetupUserSlide extends SlideFragment {
-    final TextWatcher watcher = new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-            updateValidity();
-        }
-    };
-    @Bind(R.id.user)
-    TextInputEditText userField;
-    @Bind(R.id.pass)
-    TextInputEditText passField;
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    public View onCreateContent(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.slide_account_user, container, false);
-        ButterKnife.bind(this, view);
-        userField.addTextChangedListener(watcher);
-        passField.addTextChangedListener(watcher);
-        return view;
-    }
-
-    @Override
-    public Bundle getData(Bundle in) {
-        in.putString("user", userField.getText().toString());
-        in.putString("pass", passField.getText().toString());
-        return in;
-    }
-
-    @Override
-    public boolean isValid() {
-        return validUser() && validPass();
-    }
-
-    @Override
-    @StringRes
-    public int getTitle() {
-        return R.string.slideAccountUserTitle;
-    }
-
-    @Override
-    @StringRes
-    public int getDescription() {
-        return R.string.slideAccountUserDescription;
-    }
-
-    private boolean validUser() {
-        if (userField == null)
-            return false;
-
-        String hostText = userField.getText().toString();
-        return !hostText.isEmpty();
-    }
-
-    private boolean validPass() {
-        if (passField == null)
-            return false;
-
-        String hostText = passField.getText().toString();
-        return !hostText.isEmpty();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSelectSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSelectSlide.java
deleted file mode 100644
index c3e51069b..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSelectSlide.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.mikepenz.fastadapter.FastAdapter;
-import com.mikepenz.fastadapter.IItem;
-import com.mikepenz.fastadapter.adapters.ItemAdapter;
-
-import java.util.List;
-
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.StorageBackendItem;
-
-public class CoreBackendSelectSlide extends SlideFragment {
-    private FastAdapter<IItem> fastAdapter;
-
-    private List<Bundle> storageBackends;
-    private String selectedBackend;
-
-    @Override
-    public void setArguments(Bundle args) {
-        storageBackends = args.getParcelableArrayList("storageBackends");
-    }
-
-    @Override
-    public Bundle getData(Bundle in) {
-        in.putString("selectedBackend", selectedBackend);
-        return in;
-    }
-
-    @Override
-    public boolean isValid() {
-        return fastAdapter != null && fastAdapter.getSelections().size() == 1;
-    }
-
-    @Override
-    protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
-        RecyclerView recyclerView = (RecyclerView) inflater.inflate(R.layout.slide_select, container, false);
-
-        fastAdapter = new FastAdapter<>();
-        ItemAdapter<IItem> itemAdapter = new ItemAdapter<>();
-        itemAdapter.wrap(fastAdapter);
-        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-        recyclerView.setItemAnimator(new DefaultItemAnimator());
-
-        for (Bundle backend : storageBackends) {
-            itemAdapter.add(new StorageBackendItem(backend.getString("displayName"), backend.getString("description")));
-        }
-
-        recyclerView.setAdapter(fastAdapter);
-
-        fastAdapter.withSelectWithItemUpdate(true);
-        fastAdapter.withOnClickListener((v, adapter, item, position) -> {
-            fastAdapter.deselect();
-            fastAdapter.select(position);
-            selectedBackend = ((StorageBackendItem) item).getDisplayName();
-            updateValidity();
-            return false;
-        });
-
-
-        return recyclerView;
-    }
-
-    @Override
-    protected int getTitle() {
-        return R.string.slideCoreBackendSelectTitle;
-    }
-
-    @Override
-    protected int getDescription() {
-        return R.string.slideCoreBackendSelectDescription;
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSetupSlide.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSetupSlide.java
deleted file mode 100644
index 9ed2e7d71..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/CoreBackendSetupSlide.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.TextInputEditText;
-import android.support.design.widget.TextInputLayout;
-import android.support.v7.widget.AppCompatCheckBox;
-import android.text.Editable;
-import android.text.InputType;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-import de.kuschku.quasseldroid_ng.R;
-
-public class CoreBackendSetupSlide extends SlideFragment {
-    final TextWatcher watcher = new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-        }
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-            updateValidity();
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-        }
-    };
-    private final Map<String, InputItemWrapper> items = new HashMap<>();
-    private final Map<String, Bundle> storageBackends = new HashMap<>();
-    @Bind(R.id.container)
-    LinearLayout container;
-    Bundle storageBackend;
-
-    @Override
-    public void setArguments(Bundle args) {
-        ArrayList<Bundle> storageBackends = args.getParcelableArrayList("storageBackends");
-        if (storageBackends != null) {
-            for (Bundle bundle : storageBackends) {
-                this.storageBackends.put(bundle.getString("displayName"), bundle);
-            }
-        }
-    }
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    @Override
-    protected View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.slide_core_setup_backend, container, false);
-        ButterKnife.bind(this, view);
-
-        updateContent();
-
-        return view;
-    }
-
-    private void updateContent() {
-        container.removeAllViews();
-
-        for (InputItemWrapper wrapper : items.values()) {
-            wrapper.onDestroy();
-        }
-        items.clear();
-
-        if (storageBackend == null)
-            return;
-
-        Bundle types = storageBackend.getBundle("types");
-        Bundle defaults = storageBackend.getBundle("defaults");
-
-        if (types == null || defaults == null)
-            return;
-
-        for (String key : types.keySet()) {
-            String type = types.getString(key);
-            Object defValue = defaults.get(key);
-            InputItemWrapper wrapper = getInputItemWrapper(key, type, defValue);
-            items.put(key, wrapper);
-            container.addView(wrapper.getView(container.getContext(), container));
-        }
-    }
-
-    @Override
-    public void setData(Bundle in) {
-        storageBackend = storageBackends.get(in.getString("selectedBackend"));
-        updateContent();
-        updateValidity();
-    }
-
-    @Override
-    public Bundle getData(Bundle in) {
-        Bundle config = new Bundle();
-        for (InputItemWrapper inputItemWrapper : items.values()) {
-            if (inputItemWrapper.isValid())
-                inputItemWrapper.putValue(config);
-        }
-        in.putBundle("config", config);
-        return in;
-    }
-
-    @Override
-    public boolean isValid() {
-        for (InputItemWrapper inputItemWrapper : items.values()) {
-            if (!inputItemWrapper.isValid())
-                return false;
-        }
-        return true;
-    }
-
-    @Override
-    @StringRes
-    public int getTitle() {
-        return R.string.slideCoreBackendSetupTitle;
-    }
-
-    @Override
-    @StringRes
-    public int getDescription() {
-        return R.string.slideCoreBackendSetupDescription;
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> InputItemWrapper<T> getInputItemWrapper(String key, String type, T defValue) {
-        InputItemWrapper result;
-        switch (type) {
-            case "boolean": {
-                result = new BooleanInputItem(key, (Boolean) defValue);
-            }
-            break;
-            case "short":
-            case "int":
-            case "long":
-            case "float":
-            case "double": {
-                result = new NumberInputItem(key, (Number) defValue, type);
-            }
-            break;
-            default:
-            case "string": {
-                result = new StringInputItem(key, (String) defValue);
-            }
-            break;
-        }
-        return result;
-    }
-
-    private interface InputItemWrapper<T> {
-        String key();
-
-        T getValue();
-
-        boolean isValid();
-
-        View getView(Context context, ViewGroup parent);
-
-        void onDestroy();
-
-        void putValue(Bundle in);
-    }
-
-    class BooleanInputItem implements InputItemWrapper<Boolean> {
-        private final String key;
-        private final Boolean defValue;
-        @Bind(R.id.checkBox)
-        AppCompatCheckBox checkBox;
-        private View view;
-
-        public BooleanInputItem(String key, Boolean defValue) {
-            this.key = key;
-            this.defValue = defValue;
-        }
-
-        @Override
-        public String key() {
-            return key;
-        }
-
-        @Override
-        public Boolean getValue() {
-            return checkBox.isChecked();
-        }
-
-        @Override
-        public boolean isValid() {
-            return true;
-        }
-
-        @Override
-        public View getView(Context context, ViewGroup parent) {
-            if (view == null) {
-                view = LayoutInflater.from(context).inflate(R.layout.widget_input_boolean, parent, false);
-                ButterKnife.bind(this, view);
-                checkBox.setText(key);
-                if (defValue != null)
-                    checkBox.setChecked(defValue);
-            }
-            return view;
-        }
-
-        @Override
-        public void onDestroy() {
-
-        }
-
-        @Override
-        public void putValue(Bundle in) {
-            in.putBoolean(key, getValue());
-        }
-    }
-
-    class NumberInputItem implements InputItemWrapper<Number> {
-        private final String key;
-        private final Number defValue;
-        private final String type;
-        @Bind(R.id.inputLayout)
-        TextInputLayout inputLayout;
-        @Bind(R.id.editText)
-        TextInputEditText editText;
-        private View view;
-
-        public NumberInputItem(String key, Number defValue, String type) {
-            this.key = key;
-            this.defValue = defValue;
-            this.type = type;
-        }
-
-        @Override
-        public String key() {
-            return key;
-        }
-
-        @Override
-        public Number getValue() {
-            String text = editText.getText().toString();
-            try {
-                switch (type) {
-                    case "short":
-                        return Short.parseShort(text);
-                    case "int":
-                        return Integer.parseInt(text);
-                    case "long":
-                        return Long.parseLong(text);
-                    case "float":
-                        return Float.parseFloat(text);
-                    case "double":
-                        return Double.parseDouble(text);
-                    default:
-                        return null;
-                }
-            } catch (NumberFormatException e) {
-                return null;
-            }
-        }
-
-        @Override
-        public boolean isValid() {
-            return getValue() != null;
-        }
-
-        @Override
-        public View getView(Context context, ViewGroup parent) {
-            if (view == null) {
-                view = LayoutInflater.from(context).inflate(R.layout.widget_input_string, parent, false);
-                ButterKnife.bind(this, view);
-                if (defValue != null)
-                    editText.setText(defValue.toString());
-                editText.addTextChangedListener(watcher);
-                switch (type) {
-                    case "short":
-                    case "int":
-                    case "long":
-                        editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
-                        break;
-                    case "float":
-                    case "double":
-                        editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);
-                        break;
-                }
-                inputLayout.setHint(key);
-            }
-            return view;
-        }
-
-        @Override
-        public void onDestroy() {
-            editText.removeTextChangedListener(watcher);
-        }
-
-        @Override
-        public void putValue(Bundle in) {
-            switch (type) {
-                case "short": {
-                    in.putShort(key, (short) getValue());
-                }
-                break;
-                case "int": {
-                    in.putInt(key, (int) getValue());
-                }
-                break;
-                case "long": {
-                    in.putLong(key, (long) getValue());
-                }
-                break;
-                case "float": {
-                    in.putFloat(key, (float) getValue());
-                }
-                break;
-                case "double": {
-                    in.putDouble(key, (double) getValue());
-                }
-                break;
-            }
-        }
-    }
-
-    class StringInputItem implements InputItemWrapper<String> {
-        private final String key;
-        private final String defValue;
-        @Bind(R.id.inputLayout)
-        TextInputLayout inputLayout;
-        @Bind(R.id.editText)
-        TextInputEditText editText;
-        private View view;
-
-        public StringInputItem(String key, String defValue) {
-            this.key = key;
-            this.defValue = defValue;
-        }
-
-        @Override
-        public String key() {
-            return key;
-        }
-
-        @Override
-        public String getValue() {
-            return editText.getText().toString();
-        }
-
-        @Override
-        public boolean isValid() {
-            return !editText.getText().toString().isEmpty();
-        }
-
-        @Override
-        public View getView(Context context, ViewGroup parent) {
-            if (view == null) {
-                view = LayoutInflater.from(context).inflate(R.layout.widget_input_string, parent, false);
-                ButterKnife.bind(this, view);
-                if (defValue != null)
-                    editText.setText(defValue);
-                editText.addTextChangedListener(watcher);
-                inputLayout.setHint(key);
-            }
-            return view;
-        }
-
-        @Override
-        public void onDestroy() {
-            editText.removeTextChangedListener(watcher);
-        }
-
-        @Override
-        public void putValue(Bundle in) {
-            in.putString(key, getValue());
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java
deleted file mode 100644
index 1aee8a6fc..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/setup/slides/SlideFragment.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.setup.slides;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.ui.setup.ValidUpdateCallback;
-
-public abstract class SlideFragment extends Fragment {
-    private final Set<ValidUpdateCallback> callbacks = new HashSet<>();
-
-    public abstract Bundle getData(Bundle in);
-
-
-    public abstract boolean isValid();
-
-    public void addChangeListener(ValidUpdateCallback callback) {
-        callbacks.add(callback);
-    }
-
-    public void removeChangeListener(ValidUpdateCallback callback) {
-        callbacks.remove(callback);
-    }
-
-    protected void updateValidity() {
-        updateValidity(isValid());
-    }
-
-    protected void updateValidity(boolean validity) {
-        for (ValidUpdateCallback callback : callbacks) {
-            callback.updateValidity(validity);
-        }
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.slide, container, false);
-        ViewGroup viewGroup = (ViewGroup) view.findViewById(R.id.content_host);
-        viewGroup.addView(onCreateContent(inflater, viewGroup, savedInstanceState));
-
-        ((TextView) view.findViewById(R.id.title)).setText(getTitle());
-        ((TextView) view.findViewById(R.id.description)).setText(getDescription());
-
-        return view;
-    }
-
-    protected abstract View onCreateContent(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState);
-
-    @StringRes
-    protected abstract int getTitle();
-
-    @StringRes
-    protected abstract int getDescription();
-
-    public void setData(Bundle in) {
-
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java
deleted file mode 100644
index 2e701bf8e..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppContext.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.theme;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.quasseldroid_ng.ui.settings.Settings;
-import de.kuschku.util.irc.format.IrcFormatDeserializer;
-import de.kuschku.util.irc.format.IrcFormatSerializer;
-import de.kuschku.util.observables.lists.ObservableSet;
-
-public class AppContext {
-    private final ObservableSet<QBufferViewConfig.DisplayType> bufferDisplayTypes = new ObservableSet<>();
-    private ThemeUtil themeUtil;
-    private Settings settings;
-    private Client client;
-    private BusProvider provider;
-    private IrcFormatDeserializer deserializer;
-    private IrcFormatSerializer serializer;
-
-    public ThemeUtil themeUtil() {
-        return themeUtil;
-    }
-
-    public void setThemeUtil(ThemeUtil themeUtil) {
-        this.themeUtil = themeUtil;
-
-        this.serializer = new IrcFormatSerializer(this);
-        this.deserializer = new IrcFormatDeserializer(this);
-    }
-
-    @NonNull
-    public AppContext withThemeUtil(ThemeUtil themeUtil) {
-        setThemeUtil(themeUtil);
-        return this;
-    }
-
-    public Settings settings() {
-        return settings;
-    }
-
-    public void setSettings(Settings settings) {
-        this.settings = settings;
-    }
-
-    @NonNull
-    public AppContext withSettings(Settings settings) {
-        setSettings(settings);
-        return this;
-    }
-
-    public Client client() {
-        return client;
-    }
-
-    public void setClient(Client client) {
-        this.client = client;
-    }
-
-    @NonNull
-    public AppContext withClient(Client client) {
-        setClient(client);
-        return this;
-    }
-
-    public BusProvider provider() {
-        return provider;
-    }
-
-    public void setProvider(BusProvider provider) {
-        this.provider = provider;
-    }
-
-    @NonNull
-    public AppContext withProvider(BusProvider provider) {
-        setProvider(provider);
-        return this;
-    }
-
-    public IrcFormatDeserializer deserializer() {
-        return deserializer;
-    }
-
-    public IrcFormatSerializer serializer() {
-        return serializer;
-    }
-
-    public ObservableSet<QBufferViewConfig.DisplayType> bufferDisplayTypes() {
-        return bufferDisplayTypes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
deleted file mode 100644
index c77e5bab8..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/AppTheme.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.theme;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StyleRes;
-
-import de.kuschku.quasseldroid_ng.R;
-
-public enum AppTheme {
-    QUASSEL_LIGHT(R.style.Quassel_Light),
-    QUASSEL_DARK(R.style.Quassel_Dark),
-    SOLARIZED_LIGHT(R.style.Solarized_Light),
-    SOLARIZED_DARK(R.style.Solarized_Dark);
-
-    public final int themeId;
-
-    AppTheme(@StyleRes int themeId) {
-        this.themeId = themeId;
-    }
-
-    public static int resFromString(String s) {
-        return themeFromString(s).themeId;
-    }
-
-    @NonNull
-    public static AppTheme themeFromString(@Nullable String s) {
-        if (s == null) s = "";
-        switch (s) {
-            case "QUASSEL_DARK":
-                return QUASSEL_DARK;
-            case "SOLARIZED_LIGHT":
-                return SOLARIZED_LIGHT;
-            case "SOLARIZED_DARK":
-                return SOLARIZED_DARK;
-
-            default:
-            case "QUASSEL_LIGHT":
-                return QUASSEL_LIGHT;
-        }
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return name() + "{" +
-                "themeId=" + themeId +
-                '}';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/PreferenceStrings.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/PreferenceStrings.java
deleted file mode 100644
index d172bfeea..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/PreferenceStrings.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.theme;
-
-import android.content.Context;
-
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.annotationbind.AutoBinder;
-import de.kuschku.util.annotationbind.AutoString;
-
-public class PreferenceStrings {
-    @AutoString(R.string.preference_last_account)
-    public String preferenceLastAccount;
-
-    @AutoString(R.string.preference_font_size)
-    public String preferenceFontSize;
-
-    @AutoString(R.string.preference_theme)
-    public String preferenceTheme;
-
-    @AutoString(R.string.preference_colors)
-    public String preferenceColors;
-
-    @AutoString(R.string.preference_brackets)
-    public String preferenceBrackets;
-
-    @AutoString(R.string.preference_hostmask)
-    public String preferenceHostmask;
-
-    @AutoString(R.string.preference_lag)
-    public String preferenceLag;
-
-    public PreferenceStrings(Context wrapper) {
-        try {
-            AutoBinder.bind(this, wrapper);
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
deleted file mode 100644
index f9f801aae..000000000
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/theme/ThemeUtil.java
+++ /dev/null
@@ -1,969 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.quasseldroid_ng.ui.theme;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.view.ContextThemeWrapper;
-import android.util.SparseArray;
-import android.util.SparseIntArray;
-
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.libquassel.objects.types.NetworkServer;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QBufferViewConfig;
-import de.kuschku.libquassel.syncables.types.interfaces.QIgnoreListManager;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.util.annotationbind.AutoBinder;
-import de.kuschku.util.annotationbind.AutoColor;
-import de.kuschku.util.annotationbind.AutoDimen;
-import de.kuschku.util.annotationbind.AutoInt;
-import de.kuschku.util.annotationbind.AutoString;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-import de.kuschku.util.ui.DateTimeFormatHelper;
-import de.kuschku.util.ui.SpanFormatter;
-
-import static android.support.v4.content.res.ResourcesCompat.getDrawable;
-
-public class ThemeUtil {
-    @NonNull
-    public final Colors res = new Colors();
-
-    @NonNull
-    public final FormatStrings translations = new FormatStrings();
-
-    @NonNull
-    public final ChanModeStrings chanModes = new ChanModeStrings();
-
-    @NonNull
-    public final DateTimeFormatHelper formatter;
-
-    @NonNull
-    public final StatusDrawables statusDrawables;
-
-    public ThemeUtil(@NonNull Context ctx) {
-        ContextThemeWrapper themeWrapper = new ContextThemeWrapper(ctx, ctx.getTheme());
-        initColors(themeWrapper);
-        statusDrawables = new StatusDrawables(ctx, res, themeWrapper.getTheme());
-        formatter = new DateTimeFormatHelper(ctx);
-    }
-
-    public ThemeUtil(@NonNull Context ctx, @NonNull AppTheme theme) {
-        ContextThemeWrapper themeWrapper = new ContextThemeWrapper(ctx, theme.themeId);
-        initColors(themeWrapper);
-        statusDrawables = new StatusDrawables(ctx, res, themeWrapper.getTheme());
-        formatter = new DateTimeFormatHelper(ctx);
-    }
-
-    @UiThread
-    public void initColors(@NonNull ContextThemeWrapper wrapper) {
-        try {
-            res.colors = null;
-            AutoBinder.bind(res, wrapper);
-            res.bind(wrapper);
-            AutoBinder.bind(translations, wrapper);
-            AutoBinder.bind(chanModes, wrapper);
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public String statusName(ConnectionChangeEvent.Status status) {
-        switch (status) {
-            case HANDSHAKE:
-                return translations.statusHandshake;
-            case INITIALIZING_DATA:
-                return translations.statusInitData;
-            case LOADING_BACKLOG:
-                return translations.statusBacklog;
-            case CONNECTED:
-                return translations.statusWelcome;
-            case DISCONNECTED:
-            default:
-                return translations.statusDisconnected;
-        }
-    }
-
-    public static class StatusDrawables {
-        public final Drawable online;
-        public final Drawable away;
-        public final Drawable offline;
-
-        public final Drawable channelOnline;
-        public final Drawable channelOffline;
-
-        public StatusDrawables(Context ctx, Colors colors, Resources.Theme theme) {
-            Resources resources = ctx.getResources();
-            online = getDrawable(resources, R.drawable.ic_status, theme);
-            DrawableCompat.setTint(online, colors.colorAccent);
-            away = getDrawable(resources, R.drawable.ic_status, theme);
-            DrawableCompat.setTint(away, colors.colorAway);
-            offline = getDrawable(resources, R.drawable.ic_status_offline, theme);
-            DrawableCompat.setTint(offline, colors.colorOffline);
-
-            channelOnline = getDrawable(resources, R.drawable.ic_status_channel, theme);
-            DrawableCompat.setTint(channelOnline, colors.colorAccent);
-            channelOffline = getDrawable(resources, R.drawable.ic_status_channel_offline, theme);
-            DrawableCompat.setTint(channelOffline, colors.colorOffline);
-        }
-
-        public Drawable of(BufferInfo.Type type, BufferInfo.BufferStatus status) {
-            if (type == BufferInfo.Type.CHANNEL) {
-                if (status == BufferInfo.BufferStatus.ONLINE)
-                    return channelOnline;
-                else
-                    return channelOffline;
-            } else {
-                if (status == BufferInfo.BufferStatus.ONLINE)
-                    return online;
-                else if (status == BufferInfo.BufferStatus.AWAY)
-                    return away;
-                else
-                    return offline;
-            }
-        }
-    }
-
-    public static class ChanModeStrings {
-
-        @AutoString(R.string.chanMode_RESTRICT_TOPIC_NAME)
-        public String chanMode_RESTRICT_TOPIC_NAME;
-
-        @AutoString(R.string.chanMode_RESTRICT_TOPIC_DESCRIPTION)
-        public String chanMode_RESTRICT_TOPIC_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_COLORS_NAME)
-        public String chanMode_BLOCK_COLOR_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_COLORS_DESCRIPTION)
-        public String chanMode_BLOCK_COLOR_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_STRIP_COLORS_NAME)
-        public String chanMode_STRIP_COLOR_NAME;
-
-        @AutoString(R.string.chanMode_STRIP_COLORS_DESCRIPTION)
-        public String chanMode_STRIP_COLOR_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ONLY_INVITE_NAME)
-        public String chanMode_ONLY_INVITE_NAME;
-
-        @AutoString(R.string.chanMode_ONLY_INVITE_DESCRIPTION)
-        public String chanMode_ONLY_INVITE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ONLY_SSL_NAME)
-        public String chanMode_ONLY_SSL_NAME;
-
-        @AutoString(R.string.chanMode_ONLY_SSL_DESCRIPTION)
-        public String chanMode_ONLY_SSL_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_UNLISTED_NAME)
-        public String chanMode_UNLISTED_NAME;
-
-        @AutoString(R.string.chanMode_UNLISTED_DESCRIPTION)
-        public String chanMode_UNLISTED_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_UNIDENTIFIED_NAME)
-        public String chanMode_BLOCK_UNIDENTIFIED_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_UNIDENTIFIED_DESCRIPTION)
-        public String chanMode_BLOCK_UNIDENTIFIED_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_PARANOID_NAME)
-        public String chanMode_PARANOID_NAME;
-
-        @AutoString(R.string.chanMode_PARANOID_DESCRIPTION)
-        public String chanMode_PARANOID_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_REGISTERED_NAME)
-        public String chanMode_REGISTERED_NAME;
-
-        @AutoString(R.string.chanMode_REGISTERED_DESCRIPTION)
-        public String chanMode_REGISTERED_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_MODERATED_NAME)
-        public String chanMode_MODERATED_NAME;
-
-        @AutoString(R.string.chanMode_MODERATED_DESCRIPTION)
-        public String chanMode_MODERATED_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_EXTERNAL_NAME)
-        public String chanMode_BLOCK_EXTERNAL_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_EXTERNAL_DESCRIPTION)
-        public String chanMode_BLOCK_EXTERNAL_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ANTIFLOOD_NAME)
-        public String chanMode_ANTIFLOOD_NAME;
-
-        @AutoString(R.string.chanMode_ANTIFLOOD_DESCRIPTION)
-        public String chanMode_ANTIFLOOD_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_PASSWORD_NAME)
-        public String chanMode_PASSWORD_NAME;
-
-        @AutoString(R.string.chanMode_PASSWORD_DESCRIPTION)
-        public String chanMode_PASSWORD_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_LIMIT_NAME)
-        public String chanMode_LIMIT_NAME;
-
-        @AutoString(R.string.chanMode_LIMIT_DESCRIPTION)
-        public String chanMode_LIMIT_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_REDUCED_MODERATION_NAME)
-        public String chanMode_REDUCED_MODERATION_NAME;
-
-        @AutoString(R.string.chanMode_REDUCED_MODERATION_DESCRIPTION)
-        public String chanMode_REDUCED_MODERATION_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_NOTICE_NAME)
-        public String chanMode_BLOCK_NOTICE_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_NOTICE_DESCRIPTION)
-        public String chanMode_BLOCK_NOTICE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_DISABLE_INVITE_NAME)
-        public String chanMode_DISABLE_INVITE_NAME;
-
-        @AutoString(R.string.chanMode_DISABLE_INVITE_DESCRIPTION)
-        public String chanMode_DISABLE_INVITE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_AUDITORIUM_NAME)
-        public String chanMode_AUDITORIUM_NAME;
-
-        @AutoString(R.string.chanMode_AUDITORIUM_DESCRIPTION)
-        public String chanMode_AUDITORIUM_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_QUIET_UNIDENTIFIED_NAME)
-        public String chanMode_QUIET_UNIDENTIFIED_NAME;
-
-        @AutoString(R.string.chanMode_QUIET_UNIDENTIFIED_DESCRIPTION)
-        public String chanMode_QUIET_UNIDENTIFIED_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_KICK_NAME)
-        public String chanMode_BLOCK_KICK_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_KICK_DESCRIPTION)
-        public String chanMode_BLOCK_KICK_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_PERMANENT_NAME)
-        public String chanMode_PERMANENT_NAME;
-
-        @AutoString(R.string.chanMode_PERMANENT_DESCRIPTION)
-        public String chanMode_PERMANENT_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ONLY_OPER_NAME)
-        public String chanMode_ONLY_OPER_NAME;
-
-        @AutoString(R.string.chanMode_ONLY_OPER_DESCRIPTION)
-        public String chanMode_ONLY_OPER_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ONLY_HELPOPER_NAME)
-        public String chanMode_ONLY_HELPOPER_NAME;
-
-        @AutoString(R.string.chanMode_ONLY_HELPOPER_DESCRIPTION)
-        public String chanMode_ONLY_HELPOPER_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_NICKCHANGE_NAME)
-        public String chanMode_BLOCK_NICKCHANGE_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_NICKCHANGE_DESCRIPTION)
-        public String chanMode_BLOCK_NICKCHANGE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_JOIN_THROTTLE_NAME)
-        public String chanMode_JOIN_THROTTLE_NAME;
-
-        @AutoString(R.string.chanMode_JOIN_THROTTLE_DESCRIPTION)
-        public String chanMode_JOIN_THROTTLE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ALLOW_INVITE_NAME)
-        public String chanMode_ALLOW_INVITE_NAME;
-
-        @AutoString(R.string.chanMode_ALLOW_INVITE_DESCRIPTION)
-        public String chanMode_ALLOW_INVITE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_FORWARDING_NAME)
-        public String chanMode_BLOCK_FORWARDING_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_FORWARDING_DESCRIPTION)
-        public String chanMode_BLOCK_FORWARDING_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ALLOW_FORWARD_NAME)
-        public String chanMode_ALLOW_FORWARD_NAME;
-
-        @AutoString(R.string.chanMode_ALLOW_FORWARD_DESCRIPTION)
-        public String chanMode_ALLOW_FORWARD_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_ACTION_NAME)
-        public String chanMode_BLOCK_ACTION_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_ACTION_DESCRIPTION)
-        public String chanMode_BLOCK_ACTION_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_CAPS_NAME)
-        public String chanMode_BLOCK_CAPS_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_CAPS_DESCRIPTION)
-        public String chanMode_BLOCK_CAPS_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_KNOCK_NAME)
-        public String chanMode_BLOCK_KNOCK_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_KNOCK_DESCRIPTION)
-        public String chanMode_BLOCK_KNOCK_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_CENSOR_NAME)
-        public String chanMode_CENSOR_NAME;
-
-        @AutoString(R.string.chanMode_CENSOR_DESCRIPTION)
-        public String chanMode_CENSOR_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_HIDE_JOINS_NAME)
-        public String chanMode_HIDE_JOINS_NAME;
-
-        @AutoString(R.string.chanMode_HIDE_JOINS_DESCRIPTION)
-        public String chanMode_HIDE_JOINS_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_REPEAT_NAME)
-        public String chanMode_BLOCK_REPEAT_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_REPEAT_DESCRIPTION)
-        public String chanMode_BLOCK_REPEAT_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_AUTOREJOIN_NAME)
-        public String chanMode_BLOCK_AUTOREJOIN_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_AUTOREJOIN_DESCRIPTION)
-        public String chanMode_BLOCK_AUTOREJOIN_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_IS_SECURE_NAME)
-        public String chanMode_IS_SECURE_NAME;
-
-        @AutoString(R.string.chanMode_IS_SECURE_DESCRIPTION)
-        public String chanMode_IS_SECURE_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_BLOCK_CTCP_NAME)
-        public String chanMode_BLOCK_CTCP_NAME;
-
-        @AutoString(R.string.chanMode_BLOCK_CTCP_DESCRIPTION)
-        public String chanMode_BLOCK_CTCP_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_ONLY_ADMIN_NAME)
-        public String chanMode_ONLY_ADMIN_NAME;
-
-        @AutoString(R.string.chanMode_ONLY_ADMIN_DESCRIPTION)
-        public String chanMode_ONLY_ADMIN_DESCRIPTION;
-
-        @AutoString(R.string.chanMode_FORWARD_NAME)
-        public String chanMode_FORWARD_NAME;
-
-        @AutoString(R.string.chanMode_FORWARD_DESCRIPTION)
-        public String chanMode_FORWARD_DESCRIPTION;
-
-
-        public String chanModeToDescription(ChanMode mode) {
-            switch (mode) {
-                case RESTRICT_TOPIC:
-                    return chanMode_RESTRICT_TOPIC_DESCRIPTION;
-                case BLOCK_CTCP:
-                    return chanMode_BLOCK_CTCP_DESCRIPTION;
-                case BLOCK_COLOR:
-                    return chanMode_BLOCK_COLOR_DESCRIPTION;
-                case STRIP_COLOR:
-                    return chanMode_STRIP_COLOR_DESCRIPTION;
-                case ONLY_INVITE:
-                    return chanMode_ONLY_INVITE_DESCRIPTION;
-                case ONLY_ADMIN:
-                    return chanMode_ONLY_ADMIN_DESCRIPTION;
-                case ONLY_SSL:
-                    return chanMode_ONLY_SSL_DESCRIPTION;
-                case UNLISTED:
-                    return chanMode_UNLISTED_DESCRIPTION;
-                case BLOCK_UNIDENTIFIED:
-                    return chanMode_BLOCK_UNIDENTIFIED_DESCRIPTION;
-                case PARANOID:
-                    return chanMode_PARANOID_DESCRIPTION;
-                case REGISTERED:
-                    return chanMode_REGISTERED_DESCRIPTION;
-                case MODERATED:
-                    return chanMode_MODERATED_DESCRIPTION;
-                case BLOCK_EXTERNAL:
-                    return chanMode_BLOCK_EXTERNAL_DESCRIPTION;
-                case ANTIFLOOD:
-                    return chanMode_ANTIFLOOD_DESCRIPTION;
-                case PASSWORD:
-                    return chanMode_PASSWORD_DESCRIPTION;
-                case LIMIT:
-                    return chanMode_LIMIT_DESCRIPTION;
-                case REDUCED_MODERATION:
-                    return chanMode_REDUCED_MODERATION_DESCRIPTION;
-                case BLOCK_NOTICE:
-                    return chanMode_BLOCK_NOTICE_DESCRIPTION;
-                case DISABLE_INVITE:
-                    return chanMode_DISABLE_INVITE_DESCRIPTION;
-                case AUDITORIUM:
-                    return chanMode_AUDITORIUM_DESCRIPTION;
-                case QUIET_UNIDENTIFIED:
-                    return chanMode_QUIET_UNIDENTIFIED_DESCRIPTION;
-                case BLOCK_KICK:
-                    return chanMode_BLOCK_KICK_DESCRIPTION;
-                case PERMANENT:
-                    return chanMode_PERMANENT_DESCRIPTION;
-                case ONLY_OPER:
-                    return chanMode_ONLY_OPER_DESCRIPTION;
-                case ONLY_HELPOPER:
-                    return chanMode_ONLY_HELPOPER_DESCRIPTION;
-                case BLOCK_NICKCHANGE:
-                    return chanMode_BLOCK_NICKCHANGE_DESCRIPTION;
-                case JOIN_THROTTLE:
-                    return chanMode_JOIN_THROTTLE_DESCRIPTION;
-                case ALLOW_INVITE:
-                    return chanMode_ALLOW_INVITE_DESCRIPTION;
-                case BLOCK_FORWARDING:
-                    return chanMode_BLOCK_FORWARDING_DESCRIPTION;
-                case ALLOW_FORWARD:
-                    return chanMode_ALLOW_FORWARD_DESCRIPTION;
-                case BLOCK_ACTION:
-                    return chanMode_BLOCK_ACTION_DESCRIPTION;
-                case BLOCK_CAPS:
-                    return chanMode_BLOCK_CAPS_DESCRIPTION;
-                case BLOCK_KNOCK:
-                    return chanMode_BLOCK_KNOCK_DESCRIPTION;
-                case CENSOR:
-                    return chanMode_CENSOR_DESCRIPTION;
-                case HIDE_JOINS:
-                    return chanMode_HIDE_JOINS_DESCRIPTION;
-                case BLOCK_REPEAT:
-                    return chanMode_BLOCK_REPEAT_DESCRIPTION;
-                case BLOCK_AUTOREJOIN:
-                    return chanMode_BLOCK_AUTOREJOIN_DESCRIPTION;
-                case IS_SECURE:
-                    return chanMode_IS_SECURE_DESCRIPTION;
-                case FORWARD:
-                    return chanMode_FORWARD_DESCRIPTION;
-            }
-            return null;
-        }
-
-        public String chanModeToName(ChanMode mode) {
-            switch (mode) {
-                case RESTRICT_TOPIC:
-                    return chanMode_RESTRICT_TOPIC_NAME;
-                case BLOCK_CTCP:
-                    return chanMode_BLOCK_CTCP_NAME;
-                case BLOCK_COLOR:
-                    return chanMode_BLOCK_COLOR_NAME;
-                case STRIP_COLOR:
-                    return chanMode_STRIP_COLOR_NAME;
-                case ONLY_INVITE:
-                    return chanMode_ONLY_INVITE_NAME;
-                case ONLY_ADMIN:
-                    return chanMode_ONLY_ADMIN_NAME;
-                case ONLY_SSL:
-                    return chanMode_ONLY_SSL_NAME;
-                case UNLISTED:
-                    return chanMode_UNLISTED_NAME;
-                case BLOCK_UNIDENTIFIED:
-                    return chanMode_BLOCK_UNIDENTIFIED_NAME;
-                case PARANOID:
-                    return chanMode_PARANOID_NAME;
-                case REGISTERED:
-                    return chanMode_REGISTERED_NAME;
-                case MODERATED:
-                    return chanMode_MODERATED_NAME;
-                case BLOCK_EXTERNAL:
-                    return chanMode_BLOCK_EXTERNAL_NAME;
-                case ANTIFLOOD:
-                    return chanMode_ANTIFLOOD_NAME;
-                case PASSWORD:
-                    return chanMode_PASSWORD_NAME;
-                case LIMIT:
-                    return chanMode_LIMIT_NAME;
-                case REDUCED_MODERATION:
-                    return chanMode_REDUCED_MODERATION_NAME;
-                case BLOCK_NOTICE:
-                    return chanMode_BLOCK_NOTICE_NAME;
-                case DISABLE_INVITE:
-                    return chanMode_DISABLE_INVITE_NAME;
-                case AUDITORIUM:
-                    return chanMode_AUDITORIUM_NAME;
-                case QUIET_UNIDENTIFIED:
-                    return chanMode_QUIET_UNIDENTIFIED_NAME;
-                case BLOCK_KICK:
-                    return chanMode_BLOCK_KICK_NAME;
-                case PERMANENT:
-                    return chanMode_PERMANENT_NAME;
-                case ONLY_OPER:
-                    return chanMode_ONLY_OPER_NAME;
-                case ONLY_HELPOPER:
-                    return chanMode_ONLY_HELPOPER_NAME;
-                case BLOCK_NICKCHANGE:
-                    return chanMode_BLOCK_NICKCHANGE_NAME;
-                case JOIN_THROTTLE:
-                    return chanMode_JOIN_THROTTLE_NAME;
-                case ALLOW_INVITE:
-                    return chanMode_ALLOW_INVITE_NAME;
-                case BLOCK_FORWARDING:
-                    return chanMode_BLOCK_FORWARDING_NAME;
-                case ALLOW_FORWARD:
-                    return chanMode_ALLOW_FORWARD_NAME;
-                case BLOCK_ACTION:
-                    return chanMode_BLOCK_ACTION_NAME;
-                case BLOCK_CAPS:
-                    return chanMode_BLOCK_CAPS_NAME;
-                case BLOCK_KNOCK:
-                    return chanMode_BLOCK_KNOCK_NAME;
-                case CENSOR:
-                    return chanMode_CENSOR_NAME;
-                case HIDE_JOINS:
-                    return chanMode_HIDE_JOINS_NAME;
-                case BLOCK_REPEAT:
-                    return chanMode_BLOCK_REPEAT_NAME;
-                case BLOCK_AUTOREJOIN:
-                    return chanMode_BLOCK_AUTOREJOIN_NAME;
-                case IS_SECURE:
-                    return chanMode_IS_SECURE_NAME;
-                case FORWARD:
-                    return chanMode_FORWARD_NAME;
-            }
-            return null;
-        }
-    }
-
-    public static class FormatStrings {
-        @AutoString(R.string.usernameHostmask)
-        public String usernameHostmask;
-
-        @AutoString(R.string.messagePlain)
-        public String messagePlain;
-
-        @AutoString(R.string.messageJoin)
-        public String messageJoin;
-
-        @AutoString(R.string.messagePart)
-        public String messagePart;
-
-        @AutoString(R.string.messagePartExtra)
-        public String messagePartExtra;
-
-        @AutoString(R.string.messageQuit)
-        public String messageQuit;
-
-        @AutoString(R.string.messageQuitExtra)
-        public String messageQuitExtra;
-
-        @AutoString(R.string.messageKill)
-        public String messageKill;
-
-        @AutoString(R.string.messageKillExtra)
-        public String messageKillExtra;
-
-        @AutoString(R.string.messageKick)
-        public String messageKick;
-
-        @AutoString(R.string.messageKickExtra)
-        public String messageKickExtra;
-
-        @AutoString(R.string.messageMode)
-        public String messageMode;
-
-        @AutoString(R.string.messageNickSelf)
-        public String messageNickSelf;
-
-        @AutoString(R.string.messageNickOther)
-        public String messageNickOther;
-
-        @AutoString(R.string.messageDayChange)
-        public String messageDaychange;
-
-        @AutoString(R.string.messageAction)
-        public String messageAction;
-
-        @AutoString(R.string.messageTopic)
-        public String messageTopic;
-
-        @AutoString(R.string.confirmationCertficate)
-        public String warningCertificate;
-
-        @AutoString(R.string.statusConnecting)
-        public String statusConnecting;
-
-        @AutoString(R.string.statusHandshake)
-        public String statusHandshake;
-
-        @AutoString(R.string.statusInitData)
-        public String statusInitData;
-
-        @AutoString(R.string.statusBacklog)
-        public String statusBacklog;
-
-        @AutoString(R.string.statusConnected)
-        public String statusConnected;
-
-        @AutoString(R.string.statusDisconnected)
-        public String statusDisconnected;
-
-        @AutoString(R.string.statusWelcome)
-        public String statusWelcome;
-
-        @AutoString(R.string.labelNetworkServerProxyDefault)
-        public String labelNetworkServerProxyDefault;
-
-        @AutoString(R.string.labelNetworkServerProxySocks5)
-        public String labelNetworkServerProxySocks5;
-
-        @AutoString(R.string.labelNetworkServerProxyHttp)
-        public String labelNetworkServerProxyHttp;
-
-        @AutoString(R.string.labelChatlistMinimumActivityNone)
-        public String labelChatlistMinimumActivityNone;
-
-        @AutoString(R.string.labelChatlistMinimumActivityOther)
-        public String labelChatlistMinimumActivityOther;
-
-        @AutoString(R.string.labelChatlistMinimumActivityMessage)
-        public String labelChatlistMinimumActivityMessage;
-
-        @AutoString(R.string.labelChatlistMinimumActivityHighlight)
-        public String labelChatlistMinimumActivityHighlight;
-
-        @AutoString(R.string.labelIgnoreStrictnessUnmatched)
-        public String labelIgnoreStrictnessUnmatched;
-
-        @AutoString(R.string.labelIgnoreStrictnessSoft)
-        public String labelIgnoreStrictnessSoft;
-
-        @AutoString(R.string.labelIgnoreStrictnessHard)
-        public String labelIgnoreStrictnessHard;
-
-        @AutoString(R.string.labelIgnoreRuleSender)
-        public String labelIgnoreRuleSender;
-
-        @AutoString(R.string.labelIgnoreRuleMessage)
-        public String labelIgnoreRuleMessage;
-
-        @AutoString(R.string.labelIgnoreRuleCtcp)
-        public String labelIgnoreRuleCtcp;
-
-        @AutoString(R.string.labelIgnoreScopeGlobal)
-        public String labelIgnoreScopeGlobal;
-
-        @AutoString(R.string.labelIgnoreScopeNetwork)
-        public String labelIgnoreScopeNetwork;
-
-        @AutoString(R.string.labelIgnoreScopeChannel)
-        public String labelIgnoreScopeChannel;
-
-        @NonNull
-        public CharSequence formatUsername(@NonNull CharSequence nick, @NonNull CharSequence hostmask) {
-            return SpanFormatter.format(usernameHostmask, nick, hostmask);
-        }
-
-        @NonNull
-        public CharSequence formatJoin(@NonNull CharSequence user, @NonNull CharSequence channel) {
-            return SpanFormatter.format(messageJoin, user, channel);
-        }
-
-        @NonNull
-        public CharSequence formatPart(@NonNull CharSequence user, @NonNull CharSequence channel) {
-            return SpanFormatter.format(messagePart, user, channel);
-        }
-
-        @NonNull
-        public CharSequence formatPart(@NonNull CharSequence user, @NonNull CharSequence channel, @Nullable CharSequence reason) {
-            if (reason == null || reason.length() == 0) return formatPart(user, channel);
-
-            return SpanFormatter.format(messagePartExtra, user, channel, reason);
-        }
-
-        @NonNull
-        public CharSequence formatQuit(@NonNull CharSequence user) {
-            return SpanFormatter.format(messageQuit, user);
-        }
-
-        @NonNull
-        public CharSequence formatQuit(@NonNull CharSequence user, @Nullable CharSequence reason) {
-            if (reason == null || reason.length() == 0) return formatQuit(user);
-
-            return SpanFormatter.format(messageQuitExtra, user, reason);
-        }
-
-        @NonNull
-        public CharSequence formatKill(@NonNull CharSequence user, @NonNull CharSequence subject) {
-            return SpanFormatter.format(messageKill, user, subject);
-        }
-
-        @NonNull
-        public CharSequence formatKill(@NonNull CharSequence user, @NonNull CharSequence subject, @Nullable CharSequence reason) {
-            return SpanFormatter.format(messageKillExtra, user, subject, reason);
-        }
-
-        @NonNull
-        public CharSequence formatKick(@NonNull CharSequence user, @NonNull CharSequence kicked, @NonNull CharSequence channel) {
-            return SpanFormatter.format(messageKick, user, kicked, channel);
-        }
-
-        @NonNull
-        public CharSequence formatKick(@NonNull CharSequence user, @NonNull CharSequence kicked, @Nullable CharSequence reason, @NonNull CharSequence channel) {
-            if (reason == null || reason.length() == 0) return formatKick(user, kicked, channel);
-
-            return SpanFormatter.format(messageKickExtra, user, kicked, reason, channel);
-        }
-
-        @NonNull
-        public CharSequence formatMode(@NonNull CharSequence mode, @NonNull CharSequence user) {
-            return SpanFormatter.format(messageMode, mode, user);
-        }
-
-        @NonNull
-        public CharSequence formatNick(@NonNull CharSequence newNick) {
-            return SpanFormatter.format(messageNickSelf, newNick);
-        }
-
-        @NonNull
-        public CharSequence formatNick(@NonNull CharSequence oldNick, @Nullable CharSequence newNick) {
-            if (newNick == null || newNick.length() == 0) return formatNick(oldNick);
-
-            return SpanFormatter.format(messageNickOther, oldNick, newNick);
-        }
-
-        @NonNull
-        public CharSequence formatDayChange(@NonNull CharSequence day) {
-            return SpanFormatter.format(messageDaychange, day);
-        }
-
-        @NonNull
-        public CharSequence formatAction(@NonNull CharSequence user, @NonNull CharSequence channel) {
-            return SpanFormatter.format(messageAction, user, channel);
-        }
-
-        @NonNull
-        public CharSequence formatPlain(@NonNull CharSequence nick, @NonNull CharSequence message) {
-            return SpanFormatter.format(messagePlain, nick, message);
-        }
-
-        public String proxyType(NetworkServer.ProxyType type) {
-            switch (type) {
-                default:
-                case DefaultProxy:
-                    return labelNetworkServerProxyDefault;
-                case Socks5Proxy:
-                    return labelNetworkServerProxySocks5;
-                case HttpProxy:
-                    return labelNetworkServerProxyHttp;
-            }
-        }
-
-        public String minimumActivity(QBufferViewConfig.MinimumActivity minimumActivity) {
-            switch (minimumActivity) {
-                default:
-                case NONE:
-                    return labelChatlistMinimumActivityNone;
-                case OTHER:
-                    return labelChatlistMinimumActivityOther;
-                case MESSAGE:
-                    return labelChatlistMinimumActivityMessage;
-                case HIGHLIGHT:
-                    return labelChatlistMinimumActivityHighlight;
-            }
-        }
-
-        public String strictnessType(QIgnoreListManager.StrictnessType strictnessType) {
-            switch (strictnessType) {
-                default:
-                case UnmatchedStrictness:
-                    return labelIgnoreStrictnessUnmatched;
-                case SoftStrictness:
-                    return labelIgnoreStrictnessSoft;
-                case HardStrictness:
-                    return labelIgnoreStrictnessHard;
-            }
-        }
-
-        public String ignoreType(QIgnoreListManager.IgnoreType ignoreType) {
-            switch (ignoreType) {
-                default:
-                case SenderIgnore:
-                    return labelIgnoreRuleSender;
-                case MessageIgnore:
-                    return labelIgnoreRuleMessage;
-                case CtcpIgnore:
-                    return labelIgnoreRuleCtcp;
-            }
-        }
-
-        public String scopeType(QIgnoreListManager.ScopeType scopeType) {
-            switch (scopeType) {
-                default:
-                case GlobalScope:
-                    return labelIgnoreScopeGlobal;
-                case NetworkScope:
-                    return labelIgnoreScopeNetwork;
-                case ChannelScope:
-                    return labelIgnoreScopeChannel;
-            }
-        }
-    }
-
-    public static class Colors {
-        @AutoColor(android.R.color.transparent)
-        @ColorInt
-        public int transparent;
-
-        @AutoColor(R.attr.colorPrimary)
-        @ColorInt
-        public int colorPrimary;
-
-        @AutoColor(R.attr.colorPrimaryDark)
-        @ColorInt
-        public int colorPrimaryDark;
-
-        @AutoColor(R.attr.colorAccent)
-        @ColorInt
-        public int colorAccent;
-
-        @AutoColor(R.attr.colorControlHighlight)
-        @ColorInt
-        public int colorAccentFocus;
-
-        @AutoColor(R.attr.colorFill)
-        @ColorInt
-        public int colorFill;
-
-        @AutoColor(R.attr.colorOffline)
-        @ColorInt
-        public int colorOffline;
-
-        @AutoColor(R.attr.colorAway)
-        @ColorInt
-        public int colorAway;
-
-        @AutoInt(R.attr.colorForegroundMirc)
-        public int colorForegroundMirc;
-
-        @AutoColor({R.attr.senderColor0, R.attr.senderColor1, R.attr.senderColor2, R.attr.senderColor3,
-                R.attr.senderColor4, R.attr.senderColor5, R.attr.senderColor6, R.attr.senderColor7,
-                R.attr.senderColor8, R.attr.senderColor9, R.attr.senderColorA, R.attr.senderColorB,
-                R.attr.senderColorC, R.attr.senderColorD, R.attr.senderColorE, R.attr.senderColorF})
-        @ColorInt
-        public int[] senderColors;
-
-        @AutoColor({R.attr.mircColor0, R.attr.mircColor1, R.attr.mircColor2, R.attr.mircColor3,
-                R.attr.mircColor4, R.attr.mircColor5, R.attr.mircColor6, R.attr.mircColor7,
-                R.attr.mircColor8, R.attr.mircColor9, R.attr.mircColorA, R.attr.mircColorB,
-                R.attr.mircColorC, R.attr.mircColorD, R.attr.mircColorE, R.attr.mircColorF})
-        @ColorInt
-        public int[] mircColors;
-
-        @AutoColor(R.attr.colorForeground)
-        @ColorInt
-        public int colorForeground;
-
-        @AutoColor(R.attr.colorForegroundHighlight)
-        @ColorInt
-        public int colorForegroundHighlight;
-
-        @AutoColor(R.attr.colorForegroundSecondary)
-        @ColorInt
-        public int colorForegroundSecondary;
-
-        @AutoColor(R.attr.colorForegroundAction)
-        @ColorInt
-        public int colorForegroundAction;
-
-        @AutoColor(R.attr.colorForegroundError)
-        @ColorInt
-        public int colorForegroundError;
-
-        @AutoColor(R.attr.colorBackground)
-        @ColorInt
-        public int colorBackground;
-
-        @AutoColor(R.attr.colorBackgroundHighlight)
-        @ColorInt
-        public int colorBackgroundHighlight;
-
-        @AutoColor(R.attr.colorBackgroundSecondary)
-        @ColorInt
-        public int colorBackgroundSecondary;
-
-        @AutoColor(R.attr.colorBackgroundCard)
-        @ColorInt
-        public int colorBackgroundCard;
-
-        @AutoColor(R.attr.colorTintActivity)
-        @ColorInt
-        public int colorTintActivity;
-
-        @AutoColor(R.attr.colorTintMessage)
-        @ColorInt
-        public int colorTintMessage;
-
-        @AutoColor(R.attr.colorTintHighlight)
-        @ColorInt
-        public int colorTintHighlight;
-
-        @AutoColor(R.attr.colorControlHighlight)
-        @ColorInt
-        public int colorSelected;
-
-        @AutoDimen(R.attr.actionBarSize)
-        @ColorInt
-        public int actionBarSize;
-
-        private SparseIntArray colors;
-        private SparseArray<Drawable> badges;
-
-        public int colorToId(int foregroundColor) {
-            return colors.get(foregroundColor, -1);
-        }
-
-        public Drawable badge(int sendercolor) {
-            return badges.get(sendercolor, null);
-        }
-
-        public void bind(ContextThemeWrapper wrapper) {
-            if (badges == null) {
-                badges = new SparseArray<>(16);
-                for (int i = 0; i < senderColors.length; i++) {
-                    Drawable drawable = ResourcesCompat.getDrawable(wrapper.getResources(), R.drawable.badge, wrapper.getTheme());
-                    DrawableCompat.setTint(drawable, senderColors[i]);
-                    badges.put(i, drawable);
-                }
-            }
-
-            if (colors == null) {
-                colors = new SparseIntArray(16);
-                for (int i = 0; i < mircColors.length; i++) {
-                    colors.put(mircColors[i], i);
-                }
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/CompatibilityUtils.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/CompatibilityUtils.kt
new file mode 100644
index 000000000..9447b3f5f
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/CompatibilityUtils.kt
@@ -0,0 +1,157 @@
+package de.kuschku.quasseldroid_ng.util
+
+import android.annotation.TargetApi
+import android.app.Activity
+import android.app.ActivityManager
+import android.content.Context
+import android.content.res.Resources
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
+import android.os.Build
+import android.support.annotation.ColorInt
+import android.support.annotation.ColorRes
+import android.support.annotation.DrawableRes
+import android.support.annotation.StringRes
+import java.io.OutputStream
+import java.util.*
+import java.util.zip.Deflater
+import java.util.zip.DeflaterOutputStream
+
+object CompatibilityUtils {
+  /**
+   * This method is used to check if the current device supports Sockets with the KeepAlive flag.
+   *
+   *
+   * As that feature is only missing on Chromium devices, we just check for that
+   *
+   * @return Does the current device support KeepAlive sockets?
+   */
+  fun deviceSupportsKeepAlive(): Boolean {
+    return !isChromeBook()
+  }
+
+  fun isChromeBook(): Boolean {
+    return Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("chromium") ||
+      Build.MANUFACTURER.toLowerCase(Locale.ENGLISH).contains("chrome") ||
+      Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chromium") ||
+      Build.BRAND.toLowerCase(Locale.ENGLISH).contains("chrome")
+  }
+
+  /**
+   * This method is used to check if the device supports SyncFlush
+   * As that feature was only added in KitKat, we just check for the device version.
+   *
+   * @return Does the current device support SyncFlush natively?
+   */
+  fun deviceSupportsCompression(): Boolean {
+    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
+  }
+
+  /**
+   * Creates a SyncFlush output stream, even if the current device does not support doing so
+   * natively.
+   *
+   * @param rawOut the raw output stream to be wrapped
+   * @return The wrapping output stream
+   */
+  fun createDeflaterOutputStream(rawOut: OutputStream?): DeflaterOutputStream {
+    return if (deviceSupportsCompression())
+      DeflaterOutputStream(rawOut, true)
+    else
+      DeflaterOutputStream(rawOut, createSyncFlushDeflater())
+  }
+
+  /**
+   * Creates a SyncFlush Deflater for use on pre-KitKat Android
+   *
+   * @return The modified Deflater, or null if the creation failed
+   */
+  private fun createSyncFlushDeflater(): Deflater? {
+    val def = Deflater()
+    try {
+      val f = def.javaClass.getDeclaredField("flushParm")
+      f.isAccessible = true
+      f.setInt(def, 2) // Z_SYNC_FLUSH
+    } catch (e: Exception) {
+      return null
+    }
+
+    return def
+  }
+}
+
+fun Context.getStatusBarHeight(): Int {
+  var result = 0
+  val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
+  if (resourceId > 0) {
+    result = resources.getDimensionPixelSize(resourceId)
+  }
+  return result
+}
+
+/**
+ * Because Android’s String::split is broken
+ *
+ * @return A list with all substrings of length 1, in order
+ */
+fun String.split(): Array<String> {
+  val chars = arrayOfNulls<String>(length)
+  val charArray = toCharArray()
+  return chars.indices.map { String(charArray, it, 1) }.toTypedArray()
+}
+
+/**
+ * Modifies the display of an {@see Activity} in the Android Recents menu if the current version
+ * of Android supports doing so.
+ *
+ * @param label The text shown as label - passed as Android String Resource
+ * @param icon The icon displayed in recents - passed as Android Drawable Resource
+ * @param colorPrimary The color used as background for the header of the recents card - passed as Android
+ * Color Resource
+ */
+fun Activity.updateRecentsHeaderIfExisting(@StringRes label: Int, @DrawableRes icon: Int, @ColorRes colorPrimary: Int) {
+  val labelRaw = resources.getString(label)
+  val iconRaw = BitmapFactory.decodeResource(resources, icon)
+  val colorPrimaryRaw = getColor(colorPrimary, theme, resources)
+  updateRecentsHeaderIfExisting(labelRaw, iconRaw, colorPrimaryRaw)
+}
+
+@ColorInt
+private fun getColor(@ColorRes color: Int, theme: Resources.Theme, resources: Resources): Int {
+  return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+    resources.getColor(color, theme)
+  } else {
+    // We have to use this method on older systems that don’t yet support the new method
+    // which is used above
+    resources.getColor(color)
+  }
+}
+
+/**
+ * Modifies the display of an {@see Activity} in the Android Recents menu if the current version
+ * of Android supports doing so.
+ *
+ * @param label The text shown in recents as label
+ * @param icon The icon displayed in recents
+ * @param colorPrimary The color used as background for the header of the recents card
+ */
+fun Activity.updateRecentsHeaderIfExisting(label: String, icon: Bitmap, colorPrimary: Int) {
+  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    updateRecentsHeader(label, icon, colorPrimary)
+  }
+}
+
+/**
+ * Forcibly updated the recents card of an {@see Activity} in the Android Recents menu.
+ *
+ * @param label The text shown in recents as label
+ * @param icon The icon displayed in recents
+ * @param colorPrimary The color used as background for the header of the recents card
+ * @since Lollipop
+ */
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+private fun Activity.updateRecentsHeader(label: String, icon: Bitmap,
+                                         colorPrimary: Int) {
+  setTaskDescription(ActivityManager.TaskDescription(label,
+                                                     icon, colorPrimary))
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/Flag.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/Flag.kt
new file mode 100644
index 000000000..e7c22a09c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/Flag.kt
@@ -0,0 +1,70 @@
+package de.kuschku.quasseldroid_ng.util
+
+interface Flag<T> where T : Enum<T>, T : Flag<T> {
+  val bit: Int
+}
+
+data class Flags<E>(
+  val value: Int,
+  val values: Array<E>? = null
+) : Number(), Comparable<Int> where E : Enum<E>, E : Flag<E> {
+  override fun compareTo(other: Int) = value.compareTo(other)
+  override fun toByte() = value.toByte()
+  override fun toChar() = value.toChar()
+  override fun toDouble() = value.toDouble()
+  override fun toFloat() = value.toFloat()
+  override fun toInt() = value
+  override fun toLong() = value.toLong()
+  override fun toShort() = value.toShort()
+
+  override fun equals(other: Any?) = when (other) {
+    is Flags<*> -> other.value == value
+    is Flag<*>  -> other.bit == value
+    else        -> other === this
+  }
+
+  override fun hashCode(): Int {
+    return value
+  }
+
+  fun enabledValues() = values?.filter { hasFlag(it) }?.toSet() ?: emptySet()
+
+  override fun toString() = if (values != null) {
+    enabledValues().joinToString("|", "[", "]")
+  } else {
+    value.toString(16)
+  }
+
+  companion object {
+    inline fun <reified T> of(int: Int): Flags<T> where T : Flag<T>, T : Enum<T>
+      = Flags(int, enumValues())
+
+    inline fun <reified T> of(vararg flags: Flag<T>): Flags<T> where T : Flag<T>, T : Enum<T>
+      = Flags(flags.map(Flag<T>::bit).distinct().sum(), enumValues())
+  }
+
+  interface Factory<E> where E : Flag<E>, E : Enum<E> {
+    val NONE: Flags<E>
+    fun of(bit: Int): Flags<E>
+    fun of(vararg flags: E): Flags<E>
+  }
+}
+
+infix fun <T> Flags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Flag<T> {
+  // an Undefined flag is a special case.
+  if (value == 0 || (value > 0 && which.bit == 0)) return false
+
+  return value and which.bit == which.bit
+}
+
+infix fun <T> Flags<T>.or(other: Flag<T>): Flags<T> where T : kotlin.Enum<T>, T : Flag<T> = Flags(
+  value or other.bit)
+
+operator infix fun <T> Flags<T>.plus(
+  other: Flags<T>): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(value or other.value)
+
+operator infix fun <T> Flags<T>.plus(
+  other: Flag<T>): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(value or other.bit)
+
+infix fun <T> Flags<T>.unset(which: T): Flags<T>  where T : Enum<T>, T : Flag<T> = Flags(
+  value xor which.bit)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/LongFlag.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/LongFlag.kt
new file mode 100644
index 000000000..fb31a835c
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/LongFlag.kt
@@ -0,0 +1,74 @@
+package de.kuschku.quasseldroid_ng.util
+
+interface LongFlag<T> where T : Enum<T>, T : LongFlag<T> {
+  val bit: Long
+}
+
+data class LongFlags<E>(
+  val value: Long,
+  val values: Array<E>? = null
+) : Number(), Comparable<Long> where E : Enum<E>, E : LongFlag<E> {
+  override fun compareTo(other: Long) = value.compareTo(other)
+  override fun toByte() = value.toByte()
+  override fun toChar() = value.toChar()
+  override fun toDouble() = value.toDouble()
+  override fun toFloat() = value.toFloat()
+  override fun toInt() = value.toInt()
+  override fun toLong() = value
+  override fun toShort() = value.toShort()
+
+  override fun equals(other: Any?) = when (other) {
+    is LongFlags<*> -> other.value == value
+    is LongFlag<*>  -> other.bit == value
+    else            -> other === this
+  }
+
+  override fun hashCode(): Int {
+    return value.toInt()
+  }
+
+  fun enabledValues() = values?.filter { hasFlag(it) }?.toSet() ?: emptySet()
+
+  override fun toString() = if (values != null) {
+    enabledValues().joinToString("|", "[", "]")
+  } else {
+    value.toString(16)
+  }
+
+  companion object {
+    inline fun <reified T> of(int: Long): LongFlags<T> where T : LongFlag<T>, T : Enum<T>
+      = LongFlags(int, enumValues())
+
+    inline fun <reified T> of(
+      vararg flags: LongFlag<T>): LongFlags<T> where T : LongFlag<T>, T : Enum<T>
+      = LongFlags(flags.map(LongFlag<T>::bit).distinct().sum(), enumValues())
+  }
+
+  interface Factory<E> where E : LongFlag<E>, E : Enum<E> {
+    fun of(bit: Long): LongFlags<E>
+    fun of(vararg flags: E): LongFlags<E>
+  }
+}
+
+infix fun <T> LongFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : LongFlag<T> {
+  // an Undefined flag is a special case.
+  if (value == 0.toLong() || (value > 0 && which.bit == 0.toLong())) return false
+
+  return value and which.bit == which.bit
+}
+
+infix fun <T> LongFlags<T>.or(
+  other: LongFlag<T>): LongFlags<T> where T : kotlin.Enum<T>, T : LongFlag<T> = LongFlags(
+  value or other.bit)
+
+operator infix fun <T> LongFlags<T>.plus(
+  other: LongFlags<T>): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
+  value or other.value)
+
+operator infix fun <T> LongFlags<T>.plus(
+  other: LongFlag<T>): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
+  value or other.bit)
+
+infix fun <T> LongFlags<T>.unset(
+  which: T): LongFlags<T>  where T : Enum<T>, T : LongFlag<T> = LongFlags(
+  value xor which.bit)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/ShortFlag.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ShortFlag.kt
new file mode 100644
index 000000000..075ce9a17
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/ShortFlag.kt
@@ -0,0 +1,78 @@
+package de.kuschku.quasseldroid_ng.util
+
+import kotlin.experimental.and
+import kotlin.experimental.or
+import kotlin.experimental.xor
+
+interface ShortFlag<T> where T : Enum<T>, T : ShortFlag<T> {
+  val bit: Short
+}
+
+data class ShortFlags<E>(
+  val value: Short,
+  val values: Array<E>? = null
+) : Number(), Comparable<Short> where E : Enum<E>, E : ShortFlag<E> {
+  override fun compareTo(other: Short) = value.compareTo(other)
+  override fun toByte() = value.toByte()
+  override fun toChar() = value.toChar()
+  override fun toDouble() = value.toDouble()
+  override fun toFloat() = value.toFloat()
+  override fun toInt() = value.toInt()
+  override fun toLong() = value.toLong()
+  override fun toShort() = value
+
+  override fun equals(other: Any?) = when (other) {
+    is ShortFlags<*> -> other.value == value
+    is ShortFlag<*>  -> other.bit == value
+    else             -> other === this
+  }
+
+  override fun hashCode(): Int {
+    return value.toInt()
+  }
+
+  fun enabledValues() = values?.filter { hasFlag(it) }?.toSet() ?: emptySet()
+
+  override fun toString() = if (values != null) {
+    enabledValues().joinToString("|", "[", "]")
+  } else {
+    value.toString(16)
+  }
+
+  companion object {
+    inline fun <reified T> ofBitMask(int: Short): ShortFlags<T> where T : ShortFlag<T>, T : Enum<T>
+      = ShortFlags(int, enumValues())
+
+    inline fun <reified T> of(
+      vararg flags: ShortFlag<T>): ShortFlags<T> where T : ShortFlag<T>, T : Enum<T>
+      = ShortFlags(flags.map(ShortFlag<T>::bit).distinct().sum().toShort(), enumValues())
+  }
+
+  interface Factory<E> where E : ShortFlag<E>, E : Enum<E> {
+    fun of(bit: Short): ShortFlags<E>
+    fun of(vararg flags: E): ShortFlags<E>
+  }
+}
+
+infix fun <T> ShortFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : ShortFlag<T> {
+  // an Undefined flag is a special case.
+  if (value == 0.toShort() || (value > 0 && which.bit == 0.toShort())) return false
+
+  return value and which.bit == which.bit
+}
+
+infix fun <T> ShortFlags<T>.or(
+  other: ShortFlag<T>): ShortFlags<T> where T : kotlin.Enum<T>, T : ShortFlag<T> = ShortFlags(
+  value or other.bit)
+
+operator infix fun <T> ShortFlags<T>.plus(
+  other: ShortFlags<T>): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
+  value or other.value)
+
+operator infix fun <T> ShortFlags<T>.plus(
+  other: ShortFlag<T>): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
+  value or other.bit)
+
+infix fun <T> ShortFlags<T>.unset(
+  which: T): ShortFlags<T>  where T : Enum<T>, T : ShortFlag<T> = ShortFlags(
+  value xor which.bit)
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ByteBufferHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ByteBufferHelper.kt
new file mode 100644
index 000000000..f1cbe5336
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ByteBufferHelper.kt
@@ -0,0 +1,10 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+import java.nio.ByteBuffer
+
+fun ByteBuffer.copyTo(target: ByteBuffer) {
+  while (target.remaining() > 8)
+    target.putLong(this.long)
+  while (target.hasRemaining())
+    target.put(this.get())
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ContextHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ContextHelper.kt
new file mode 100644
index 000000000..9d3d49ce8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/ContextHelper.kt
@@ -0,0 +1,10 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+import android.content.Context
+import android.os.Build
+
+inline fun <reified T> Context.systemService(): T = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+  getSystemService(T::class.java)
+} else {
+  getSystemService(T::class.java.simpleName) as T
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/LogHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/LogHelper.kt
new file mode 100644
index 000000000..47ba0abbf
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/LogHelper.kt
@@ -0,0 +1,233 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+import android.util.Log
+import de.kuschku.quasseldroid_ng.BuildConfig
+
+class Logger {
+  companion object {
+    var handler: ((String, String?, Throwable?) -> Unit)? = null
+  }
+}
+
+inline fun Logger.Companion.loggable(tag: String, level: Int, f: Logger.Companion.() -> Unit) {
+  if (BuildConfig.DEBUG || Log.isLoggable(tag, level) || true) {
+    Logger.Companion.f()
+  }
+}
+
+/* VERBOSE */
+
+inline fun Logger.Companion.verbose(tag: String, msg: String)
+  = loggable(tag, Log.VERBOSE) {
+  Log.v(tag, msg)
+  handler?.invoke(tag, msg, null)
+}
+
+inline fun Logger.Companion.verbose(tag: String, msg: () -> String)
+  = loggable(tag, Log.VERBOSE) {
+  val msg1 = msg()
+  Log.v(tag, msg1)
+  handler?.invoke(tag, msg1, null)
+}
+
+inline fun Logger.Companion.verbose(tag: String, msg: String, tr: Throwable)
+  = loggable(tag, Log.VERBOSE) {
+  Log.v(tag, msg, tr)
+  handler?.invoke(tag, msg, tr)
+}
+
+inline fun Logger.Companion.verbose(tag: String, msg: () -> String, tr: Throwable)
+  = loggable(tag, Log.VERBOSE) {
+  val msg1 = msg()
+  Log.v(tag, msg1, tr)
+  handler?.invoke(tag, msg1, tr)
+}
+
+inline fun Logger.Companion.verbose(tag: String, msg: String, tr: () -> Throwable)
+  = loggable(tag, Log.VERBOSE) {
+  val tr1 = tr()
+  Log.v(tag, msg, tr1)
+  handler?.invoke(tag, msg, tr1)
+}
+
+inline fun Logger.Companion.verbose(tag: String, msg: () -> String, tr: () -> Throwable)
+  = loggable(tag, Log.VERBOSE) {
+  val tr1 = tr()
+  val msg1 = msg()
+  Log.v(tag, msg1, tr1)
+  handler?.invoke(tag, msg1, tr1)
+}
+
+
+/* DEBUG */
+
+inline fun Logger.Companion.debug(tag: String, msg: String)
+  = loggable(tag, Log.DEBUG) {
+  Log.d(tag, msg)
+  handler?.invoke(tag, msg, null)
+}
+
+inline fun Logger.Companion.debug(tag: String, msg: () -> String)
+  = loggable(tag, Log.DEBUG) {
+  val msg1 = msg()
+  Log.d(tag, msg1)
+  handler?.invoke(tag, msg1, null)
+}
+
+inline fun Logger.Companion.debug(tag: String, msg: String, tr: Throwable)
+  = loggable(tag, Log.DEBUG) {
+  Log.d(tag, msg, tr)
+  handler?.invoke(tag, msg, tr)
+}
+
+inline fun Logger.Companion.debug(tag: String, msg: () -> String, tr: Throwable)
+  = loggable(tag, Log.DEBUG) {
+  val msg1 = msg()
+  Log.d(tag, msg1, tr)
+  handler?.invoke(tag, msg1, tr)
+}
+
+inline fun Logger.Companion.debug(tag: String, msg: String, tr: () -> Throwable)
+  = loggable(tag, Log.DEBUG) {
+  val tr1 = tr()
+  Log.d(tag, msg, tr1)
+  handler?.invoke(tag, msg, tr1)
+}
+
+inline fun Logger.Companion.debug(tag: String, msg: () -> String, tr: () -> Throwable)
+  = loggable(tag, Log.DEBUG) {
+  val tr1 = tr()
+  val msg1 = msg()
+  Log.d(tag, msg1, tr1)
+  handler?.invoke(tag, msg1, tr1)
+}
+
+
+/* INFO */
+
+inline fun Logger.Companion.info(tag: String, msg: String)
+  = loggable(tag, Log.INFO) {
+  Log.i(tag, msg)
+  handler?.invoke(tag, msg, null)
+}
+
+inline fun Logger.Companion.info(tag: String, msg: () -> String)
+  = loggable(tag, Log.INFO) {
+  val msg1 = msg()
+  Log.i(tag, msg1)
+  handler?.invoke(tag, msg1, null)
+}
+
+inline fun Logger.Companion.info(tag: String, msg: String, tr: Throwable)
+  = loggable(tag, Log.INFO) {
+  Log.i(tag, msg, tr)
+  handler?.invoke(tag, msg, tr)
+}
+
+inline fun Logger.Companion.info(tag: String, msg: () -> String, tr: Throwable)
+  = loggable(tag, Log.INFO) {
+  val msg1 = msg()
+  Log.i(tag, msg1, tr)
+  handler?.invoke(tag, msg1, tr)
+}
+
+inline fun Logger.Companion.info(tag: String, msg: String, tr: () -> Throwable)
+  = loggable(tag, Log.INFO) {
+  val tr1 = tr()
+  Log.i(tag, msg, tr1)
+  handler?.invoke(tag, msg, tr1)
+}
+
+inline fun Logger.Companion.info(tag: String, msg: () -> String, tr: () -> Throwable)
+  = loggable(tag, Log.INFO) {
+  val tr1 = tr()
+  val msg1 = msg()
+  Log.i(tag, msg1, tr1)
+  handler?.invoke(tag, msg1, tr1)
+}
+
+/* WARN */
+
+inline fun Logger.Companion.warn(tag: String, msg: String)
+  = loggable(tag, Log.WARN) {
+  Log.w(tag, msg)
+  handler?.invoke(tag, msg, null)
+}
+
+inline fun Logger.Companion.warn(tag: String, msg: () -> String)
+  = loggable(tag, Log.WARN) {
+  val msg1 = msg()
+  Log.w(tag, msg1)
+  handler?.invoke(tag, msg1, null)
+}
+
+inline fun Logger.Companion.warn(tag: String, msg: String, tr: Throwable)
+  = loggable(tag, Log.WARN) {
+  Log.w(tag, msg, tr)
+  handler?.invoke(tag, msg, tr)
+}
+
+inline fun Logger.Companion.warn(tag: String, msg: () -> String, tr: Throwable)
+  = loggable(tag, Log.WARN) {
+  val msg1 = msg()
+  Log.w(tag, msg1, tr)
+  handler?.invoke(tag, msg1, tr)
+}
+
+inline fun Logger.Companion.warn(tag: String, msg: String, tr: () -> Throwable)
+  = loggable(tag, Log.WARN) {
+  val tr1 = tr()
+  Log.w(tag, msg, tr1)
+  handler?.invoke(tag, msg, tr1)
+}
+
+inline fun Logger.Companion.warn(tag: String, msg: () -> String, tr: () -> Throwable)
+  = loggable(tag, Log.WARN) {
+  val tr1 = tr()
+  val msg1 = msg()
+  Log.w(tag, msg1, tr1)
+  handler?.invoke(tag, msg1, tr1)
+}
+
+/* ERROR */
+
+inline fun Logger.Companion.error(tag: String, msg: String)
+  = loggable(tag, Log.ERROR) {
+  Log.e(tag, msg)
+  handler?.invoke(tag, msg, null)
+}
+
+inline fun Logger.Companion.error(tag: String, msg: () -> String)
+  = loggable(tag, Log.ERROR) {
+  val msg1 = msg()
+  Log.e(tag, msg1)
+  handler?.invoke(tag, msg1, null)
+}
+
+inline fun Logger.Companion.error(tag: String, msg: String, tr: Throwable)
+  = loggable(tag, Log.ERROR) {
+  Log.e(tag, msg, tr)
+  handler?.invoke(tag, msg, tr)
+}
+
+inline fun Logger.Companion.error(tag: String, msg: () -> String, tr: Throwable)
+  = loggable(tag, Log.ERROR) {
+  val msg1 = msg()
+  Log.e(tag, msg1, tr)
+  handler?.invoke(tag, msg1, tr)
+}
+
+inline fun Logger.Companion.error(tag: String, msg: String, tr: () -> Throwable)
+  = loggable(tag, Log.ERROR) {
+  val tr1 = tr()
+  Log.e(tag, msg, tr1)
+  handler?.invoke(tag, msg, tr1)
+}
+
+inline fun Logger.Companion.error(tag: String, msg: () -> String, tr: () -> Throwable)
+  = loggable(tag, Log.ERROR) {
+  val tr1 = tr()
+  val msg1 = msg()
+  Log.e(tag, msg1, tr1)
+  handler?.invoke(tag, msg1, tr1)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MapHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MapHelper.kt
new file mode 100644
index 000000000..ea31a4dc8
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MapHelper.kt
@@ -0,0 +1,4 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+fun <K, V> Map<K, V>.getOr(key: K, defValue: V)
+  = this[key] ?: defValue
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MathHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MathHelper.kt
new file mode 100644
index 000000000..692bd6fd4
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/MathHelper.kt
@@ -0,0 +1,2 @@
+inline fun Int.clamp(lowerBound: Int, upperBound: Int): Int
+  = maxOf(lowerBound, minOf(this, upperBound))
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/TransformationsHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/TransformationsHelper.kt
new file mode 100644
index 000000000..85d9fc0bb
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/TransformationsHelper.kt
@@ -0,0 +1,69 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+import android.arch.lifecycle.LifecycleOwner
+import android.arch.lifecycle.LiveData
+import android.arch.lifecycle.MediatorLiveData
+import android.arch.lifecycle.Observer
+import android.support.annotation.MainThread
+
+@MainThread
+fun <X, Y> stickySwitchMapNotNull(
+  trigger: LiveData<X?>,
+  func: (X) -> LiveData<Y>?,
+  defaultValue: Y
+): LiveData<Y> {
+  val result = object : MediatorLiveData<Y>() {
+    override fun observe(owner: LifecycleOwner?, observer: Observer<Y>?) {
+      super.observe(owner, observer)
+      observer?.onChanged(value ?: defaultValue)
+    }
+
+    override fun observeForever(observer: Observer<Y>?) {
+      super.observeForever(observer)
+      observer?.onChanged(value ?: defaultValue)
+    }
+  }
+  result.addSource(trigger, object : Observer<X?> {
+    internal var mSource: LiveData<Y>? = null
+
+    override fun onChanged(x: X?) {
+      val newLiveData = if (x != null) func(x) else null
+      if (mSource === newLiveData) {
+        return
+      }
+      if (mSource != null) {
+        result.removeSource(mSource)
+      }
+      mSource = newLiveData
+      if (mSource != null) {
+        result.addSource(mSource) { y -> result.value = y ?: defaultValue }
+      } else {
+        result.value = defaultValue
+      }
+    }
+  })
+  return result
+}
+
+@MainThread
+fun <X, Y> stickyMapNotNull(
+  trigger: LiveData<X?>,
+  func: (X) -> Y?,
+  defaultValue: Y
+): LiveData<Y> {
+  val result = object : MediatorLiveData<Y>() {
+    override fun observe(owner: LifecycleOwner?, observer: Observer<Y>?) {
+      super.observe(owner, observer)
+      observer?.onChanged(value ?: defaultValue)
+    }
+
+    override fun observeForever(observer: Observer<Y>?) {
+      super.observeForever(observer)
+      observer?.onChanged(value ?: defaultValue)
+    }
+  }
+  result.addSource(trigger) { x ->
+    result.setValue(if (x == null) defaultValue else func(x) ?: defaultValue)
+  }
+  return result
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/WritableByteChannelHelper.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/WritableByteChannelHelper.kt
new file mode 100644
index 000000000..32ad45b7a
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/helpers/WritableByteChannelHelper.kt
@@ -0,0 +1,9 @@
+package de.kuschku.quasseldroid_ng.util.helpers
+
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import java.nio.channels.WritableByteChannel
+
+fun WritableByteChannel.write(buffer: ChainedByteBuffer) {
+  buffer.write(this)
+  buffer.clear()
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/ChainedByteBuffer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/ChainedByteBuffer.kt
new file mode 100644
index 000000000..348ecf329
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/ChainedByteBuffer.kt
@@ -0,0 +1,111 @@
+package de.kuschku.quasseldroid_ng.util.nio
+
+import java.nio.ByteBuffer
+import java.nio.channels.WritableByteChannel
+import java.util.*
+
+
+class ChainedByteBuffer(private val bufferSize: Int = 1024, private val direct: Boolean = false) {
+  private val bufferList: MutableList<ByteBuffer> = ArrayList()
+
+  var size = 0
+    private set
+
+  private var currentBuffer = 0
+
+  private fun allocate(size: Int) = when (direct) {
+    true  -> ByteBuffer.allocateDirect(size)
+    false -> ByteBuffer.allocate(size)
+  }
+
+  private fun ensureSpace(size: Int) {
+    if (bufferList.isEmpty()) {
+      bufferList.add(allocate(bufferSize))
+    }
+    if (bufferList[currentBuffer].remaining() < size) {
+      currentBuffer += 1
+    }
+    if (currentBuffer == bufferList.size) {
+      bufferList.add(allocate(bufferSize))
+    }
+    this.size += size
+  }
+
+  fun put(value: Byte) {
+    ensureSpace(1)
+
+    bufferList.last().put(value)
+  }
+
+  fun putChar(value: Char) {
+    ensureSpace(2)
+
+    bufferList.last().putChar(value)
+  }
+
+  fun putShort(value: Short) {
+    ensureSpace(2)
+
+    bufferList.last().putShort(value)
+  }
+
+  fun putInt(value: Int) {
+    ensureSpace(4)
+
+    bufferList.last().putInt(value)
+  }
+
+  fun putLong(value: Long) {
+    ensureSpace(8)
+
+    bufferList.last().putLong(value)
+  }
+
+  fun putFloat(value: Float) {
+    ensureSpace(4)
+
+    bufferList.last().putFloat(value)
+  }
+
+  fun putDouble(value: Double) {
+    ensureSpace(8)
+
+    bufferList.last().putDouble(value)
+  }
+
+  fun put(value: ByteBuffer) {
+    while (value.remaining() > 8) {
+      putLong(value.long)
+    }
+    while (value.hasRemaining()) {
+      put(value.get())
+    }
+  }
+
+  fun put(value: ByteArray) {
+    value.forEach(this::put)
+  }
+
+  fun clear() {
+    bufferList.clear()
+    currentBuffer = 0
+    size = 0
+  }
+
+  fun write(channel: WritableByteChannel) {
+    for (buffer in bufferList) {
+      buffer.flip()
+      channel.write(buffer)
+    }
+  }
+
+  fun toBuffer(): ByteBuffer {
+    val byteBuffer = allocate(size)
+    for (buffer in bufferList) {
+      buffer.flip()
+      byteBuffer.put(buffer)
+    }
+    byteBuffer.flip()
+    return byteBuffer
+  }
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/WrappedChannel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/WrappedChannel.kt
new file mode 100644
index 000000000..70156f382
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/nio/WrappedChannel.kt
@@ -0,0 +1,192 @@
+package de.kuschku.quasseldroid_ng.util.nio
+
+import de.kuschku.quasseldroid_ng.session.SocketAddress
+import de.kuschku.quasseldroid_ng.util.CompatibilityUtils
+import java.io.Flushable
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
+import java.net.Socket
+import java.net.SocketException
+import java.nio.ByteBuffer
+import java.nio.channels.*
+import java.security.GeneralSecurityException
+import java.util.zip.InflaterInputStream
+import javax.net.ssl.SSLContext
+import javax.net.ssl.SSLSocket
+import javax.net.ssl.X509TrustManager
+
+
+class WrappedChannel(
+  private val socket: Socket,
+  private val rawInStream: InputStream? = null,
+  private val rawOutStream: OutputStream? = null,
+  private var flusher: (() -> Unit)? = null
+) : Flushable, ByteChannel, InterruptibleChannel {
+  private var rawIn: ReadableByteChannel? = null
+  private var rawOut: WritableByteChannel? = null
+
+  init {
+    this.rawIn = Channels.newChannel(rawInStream)
+    this.rawOut = Channels.newChannel(rawOutStream)
+  }
+
+  companion object {
+    fun ofSocket(s: Socket): WrappedChannel {
+      return WrappedChannel(s, s.getInputStream(),
+                            s.getOutputStream())
+    }
+  }
+
+  fun withCompression(): WrappedChannel {
+    val deflaterOutputStream = CompatibilityUtils.createDeflaterOutputStream(rawOutStream)
+    return WrappedChannel(socket, InflaterInputStream(rawInStream), deflaterOutputStream,
+                          deflaterOutputStream::flush
+    )
+  }
+
+  @Throws(GeneralSecurityException::class, IOException::class)
+  fun withSSL(certificateManager: X509TrustManager, address: SocketAddress): WrappedChannel {
+    val context = SSLContext.getInstance("TLSv1.2")
+    val managers = arrayOf(certificateManager)
+    context.init(null, managers, null)
+    val factory = context.socketFactory
+    val socket = factory.createSocket(socket, address.host, address.port.toInt(), true) as SSLSocket
+    socket.useClientMode = true
+    socket.startHandshake()
+    return WrappedChannel.ofSocket(socket)
+  }
+
+  /**
+   * Reads a sequence of bytes from this channel into the given buffer.
+   * <p>
+   * <p> An attempt is made to read up to <i>r</i> bytes from the channel,
+   * where <i>r</i> is the number of bytes remaining in the buffer, that is,
+   * <tt>dst.remaining()</tt>, at the moment this method is invoked.
+   * <p>
+   * <p> Suppose that a byte sequence of length <i>n</i> is read, where
+   * <tt>0</tt>&nbsp;<tt>&lt;=</tt>&nbsp;<i>n</i>&nbsp;<tt>&lt;=</tt>&nbsp;<i>r</i>.
+   * This byte sequence will be transferred into the buffer so that the first
+   * byte in the sequence is at index <i>p</i> and the last byte is at index
+   * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>&nbsp;<tt>-</tt>&nbsp;<tt>1</tt>,
+   * where <i>p</i> is the buffer's position at the moment this method is
+   * invoked.  Upon return the buffer's position will be equal to
+   * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>; its limit will not have changed.
+   * <p>
+   * <p> A read operation might not fill the buffer, and in fact it might not
+   * read any bytes at all.  Whether or not it does so depends upon the
+   * nature and state of the channel.  A socket channel in non-blocking mode,
+   * for example, cannot read any more bytes than are immediately available
+   * from the socket's input buffer; similarly, a file channel cannot read
+   * any more bytes than remain in the file.  It is guaranteed, however, that
+   * if a channel is in blocking mode and there is at least one byte
+   * remaining in the buffer then this method will block until at least one
+   * byte is read.
+   * <p>
+   * <p> This method may be invoked at any time.  If another thread has
+   * already initiated a read operation upon this channel, however, then an
+   * invocation of this method will block until the first operation is
+   * complete.
+   *
+   * @param dst The buffer into which bytes are to be transferred
+   * @return The number of bytes read, possibly zero, or <tt>-1</tt> if the
+   * channel has reached end-of-stream
+   * @throws IOException If some other I/O Error occurs
+   */
+  @Throws(IOException::class)
+  override fun read(dst: ByteBuffer): Int {
+    val stream = rawIn ?: throw SocketException("Socket Closed")
+    return stream.read(dst)
+  }
+
+  /**
+   * Writes a sequence of bytes to this channel from the given buffer.
+   * <p>
+   * <p> An attempt is made to write up to <i>r</i> bytes to the channel,
+   * where <i>r</i> is the number of bytes remaining in the buffer, that is,
+   * <tt>src.remaining()</tt>, at the moment this method is invoked.
+   * <p>
+   * <p> Suppose that a byte sequence of length <i>n</i> is written, where
+   * <tt>0</tt>&nbsp;<tt>&lt;=</tt>&nbsp;<i>n</i>&nbsp;<tt>&lt;=</tt>&nbsp;<i>r</i>.
+   * This byte sequence will be transferred from the buffer starting at index
+   * <i>p</i>, where <i>p</i> is the buffer's position at the moment this
+   * method is invoked; the index of the last byte written will be
+   * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>&nbsp;<tt>-</tt>&nbsp;<tt>1</tt>.
+   * Upon return the buffer's position will be equal to
+   * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>; its limit will not have changed.
+   * <p>
+   * <p> Unless otherwise specified, a write operation will return only after
+   * writing all of the <i>r</i> requested bytes.  Some types of channels,
+   * depending upon their state, may write only some of the bytes or possibly
+   * none at all.  A socket channel in non-blocking mode, for example, cannot
+   * write any more bytes than are free in the socket's output buffer.
+   * <p>
+   * <p> This method may be invoked at any time.  If another thread has
+   * already initiated a write operation upon this channel, however, then an
+   * invocation of this method will block until the first operation is
+   * complete. </p>
+   *
+   * @param src The buffer from which bytes are to be retrieved
+   * @return The number of bytes written, possibly zero
+   * @throws IOException If some other I/O Error occurs
+   */
+  @Throws(IOException::class)
+  override fun write(src: ByteBuffer): Int {
+    val stream = rawOut ?: throw SocketException("Socket Closed")
+    return stream.write(src)
+  }
+
+  override fun isOpen(): Boolean {
+    return rawIn != null || rawOut != null
+  }
+
+  /**
+   * Closes this channel.
+   * <p>
+   * <p> After a channel is closed, any further attempt to invoke I/O
+   * operations upon it will cause a {@link ClosedChannelException} to be
+   * thrown.
+   * <p>
+   * <p> If this channel is already closed then invoking this method has no
+   * effect.
+   * <p>
+   * <p> This method may be invoked at any time.  If some other thread has
+   * already invoked it, however, then another invocation will block until
+   * the first invocation is complete, after which it will return without
+   * effect. </p>
+   *
+   * @throws IOException If an I/O Error occurs
+   */
+  @Throws(IOException::class)
+  override fun close() {
+    rawIn?.close()
+    rawIn = null
+    rawOut?.close()
+    rawOut = null
+  }
+
+  /**
+   * Flushes this stream by writing any buffered output to the underlying
+   * stream.
+   *
+   * @throws IOException If an I/O Error occurs
+   */
+  @Throws(IOException::class)
+  override fun flush() {
+    flusher?.invoke()
+  }
+}
+
+fun ByteArray.toHexDump(): String {
+  val buf = StringBuffer()
+  var i = 0
+  buf.append("HexDump ========================================================================\n")
+  while (i < this.size) {
+    buf.append(String.format("%02x ", this[i]))
+    if (i > 0 && (i + 1) % 32 == 0) {
+      buf.append("\n")
+    }
+    i++
+  }
+  return buf.toString()
+}
diff --git a/app/src/main/java/de/kuschku/util/AndroidAssert.java b/app/src/main/java/de/kuschku/util/AndroidAssert.java
deleted file mode 100644
index 055db4b0d..000000000
--- a/app/src/main/java/de/kuschku/util/AndroidAssert.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import junit.framework.Assert;
-
-import de.kuschku.quasseldroid_ng.BuildConfig;
-import de.kuschku.util.backports.Objects;
-
-/**
- * Class to provide the Assert functionality of JUnit at runtime for debug builds
- */
-@SuppressWarnings({"unused", "WeakerAccess", "Contract"})
-public class AndroidAssert extends Assert {
-    private AndroidAssert() {
-    }
-
-    public static void assertTrue(Throwable message, boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (!condition) fail(message);
-        }
-    }
-
-    public static void assertTrue(@Nullable String message, boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (!condition) fail(message);
-        }
-    }
-
-    public static void assertTrue(boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (!condition) fail();
-        }
-    }
-
-    public static void assertFalse(Throwable message, boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (condition) fail(message);
-        }
-    }
-
-    public static void assertFalse(String message, boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (condition) fail(message);
-        }
-    }
-
-    public static void assertFalse(boolean condition) {
-        if (BuildConfig.DEBUG) {
-            if (condition) fail();
-        }
-    }
-
-    public static void fail(Throwable message) {
-        if (BuildConfig.DEBUG) {
-            throw new RuntimeException(message);
-        }
-    }
-
-    public static void fail(@Nullable String message) {
-        if (BuildConfig.DEBUG) {
-            throw new AssertionError(message);
-        }
-    }
-
-    public static void fail() {
-        if (BuildConfig.DEBUG) {
-            throw new AssertionError();
-        }
-    }
-
-    public static void assertEquals(Throwable message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, String expected, String actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, String expected, String actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String expected, String actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, double expected, double actual, double delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-
-    public static void assertEquals(String message, double expected, double actual, double delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(double expected, double actual, double delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, float expected, float actual, float delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, float expected, float actual, float delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(float expected, float actual, float delta) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, long expected, long actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, long expected, long actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(long expected, long actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, boolean expected, boolean actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, boolean expected, boolean actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(boolean expected, boolean actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, byte expected, byte actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, byte expected, byte actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(byte expected, byte actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, char expected, char actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, char expected, char actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(char expected, char actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, short expected, short actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, short expected, short actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(short expected, short actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(Throwable message, int expected, int actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(String message, int expected, int actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertEquals(int expected, int actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(Objects.equals(expected, actual));
-        }
-    }
-
-    public static void assertNotNull(@Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(object != null);
-        }
-    }
-
-    public static void assertNotNull(@Nullable String message, @Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, object != null);
-        }
-    }
-
-    public static void assertNotNull(Throwable message, @Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, object != null);
-        }
-    }
-
-    public static void assertNull(@Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(object == null);
-        }
-    }
-
-    public static void assertNull(String message, @Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, object == null);
-        }
-    }
-
-    public static void assertNull(Throwable message, @Nullable Object object) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, object == null);
-        }
-    }
-
-
-    public static void assertSame(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, expected == actual);
-        }
-    }
-
-    public static void assertSame(Throwable message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, expected == actual);
-        }
-    }
-
-    public static void assertSame(Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(expected == actual);
-        }
-    }
-
-    public static void assertNotSame(Throwable message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, expected != actual);
-        }
-    }
-
-    public static void assertNotSame(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(message, expected != actual);
-        }
-    }
-
-    public static void assertNotSame(Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertTrue(expected != actual);
-        }
-    }
-
-    public static void failSame(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertNotSame(message, expected, actual);
-        }
-    }
-
-    public static void failNotSame(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertSame(message, expected, actual);
-        }
-    }
-
-    public static void failNotEquals(String message, Object expected, Object actual) {
-        if (BuildConfig.DEBUG) {
-            assertEquals(message, expected, actual);
-        }
-    }
-
-    public static void assertEquals(@NonNull int... elements) {
-        if (BuildConfig.DEBUG) {
-            if (elements.length > 0) {
-                int first = elements[0];
-                for (int i = 1; i < elements.length; i++) {
-                    if (first != elements[i])
-                        fail();
-                }
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/CompatibilityUtils.java b/app/src/main/java/de/kuschku/util/CompatibilityUtils.java
deleted file mode 100644
index 79a8b942b..000000000
--- a/app/src/main/java/de/kuschku/util/CompatibilityUtils.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util;
-
-import android.content.Context;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-import java.util.zip.Deflater;
-import java.util.zip.DeflaterOutputStream;
-
-public class CompatibilityUtils {
-    private CompatibilityUtils() {
-    }
-
-    /**
-     * This method is used to check if the current device supports Sockets with the KeepAlive flag.
-     * <p>
-     * As that feature is only missing on Chromium devices, we just check for that
-     *
-     * @return Does the current device support KeepAlive sockets?
-     */
-    public static boolean deviceSupportsKeepAlive() {
-        return !(Build.MANUFACTURER.toLowerCase().contains("chromium") && Build.BRAND.toLowerCase().contains("chromium"));
-    }
-
-    /**
-     * This method is used to check if the device supports SyncFlush
-     * <p>
-     * As that feature was only added in KitKat, we just check for the device version.
-     *
-     * @return Does the current device support SyncFlush natively?
-     */
-    public static boolean deviceSupportsCompression() {
-        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
-    }
-
-    /**
-     * Creates a SyncFlush output stream, even if the current device does not support doing so
-     * natively.
-     *
-     * @param rawOut the raw output stream to be wrapped
-     * @return The wrapping output stream
-     */
-    @NonNull
-    public static DeflaterOutputStream createDeflaterOutputStream(@Nullable OutputStream rawOut) {
-        if (deviceSupportsCompression()) return new DeflaterOutputStream(rawOut, true);
-        else return new DeflaterOutputStream(rawOut, createSyncFlushDeflater());
-    }
-
-    /**
-     * Creates a SyncFlush Deflater for use on pre-KitKat Android
-     *
-     * @return The modified Deflater, or null if the creation failed
-     */
-    @Nullable
-    private static Deflater createSyncFlushDeflater() {
-        Deflater def = new Deflater();
-        try {
-            Field f = def.getClass().getDeclaredField("flushParm");
-            f.setAccessible(true);
-            f.setInt(def, 2); // Z_SYNC_FLUSH
-        } catch (Exception e) {
-            return null;
-        }
-        return def;
-    }
-
-    /**
-     * Because Android’s String::split is broken
-     *
-     * @param str The string to be broken into chars
-     * @return A list with all substrings of length 1 of the first string, in order
-     */
-    @NonNull
-    public static String[] partStringByChar(@NonNull String str) {
-        String[] chars = new String[str.length()];
-        char[] charArray = str.toCharArray();
-        for (int i = 0; i < chars.length; i++) {
-            chars[i] = new String(charArray, i, 1);
-        }
-        return chars;
-    }
-
-    public static int getStatusBarHeight(Context context) {
-        int result = 0;
-        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
-        if (resourceId > 0) {
-            result = context.getResources().getDimensionPixelSize(resourceId);
-        }
-        return result;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/accounts/Account.java b/app/src/main/java/de/kuschku/util/accounts/Account.java
deleted file mode 100644
index f43146389..000000000
--- a/app/src/main/java/de/kuschku/util/accounts/Account.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.accounts;
-
-import java.util.UUID;
-
-public class Account {
-    public final UUID id;
-
-    public final String name;
-
-    public final String host;
-    public final int port;
-
-    public final String user;
-    public final String pass;
-
-    public Account(UUID id, String name, String host, int port, String user, String pass) {
-        this.id = id;
-        this.name = name;
-        this.host = host;
-        this.port = port;
-        this.user = user;
-        this.pass = pass;
-    }
-
-    public ServerAddress toAddress() {
-        return new ServerAddress(host, port);
-    }
-
-    public Account withLoginData(String user, String pass) {
-        return new Account(id, name, host, port, user, pass);
-    }
-
-    public Account withServerData(String host, int port) {
-        return new Account(id, name, host, port, user, pass);
-    }
-
-    public Account withName(String name) {
-        return new Account(id, name, host, port, user, pass);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/accounts/AccountManager.java b/app/src/main/java/de/kuschku/util/accounts/AccountManager.java
deleted file mode 100644
index e6126f4eb..000000000
--- a/app/src/main/java/de/kuschku/util/accounts/AccountManager.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.accounts;
-
-import android.content.Context;
-
-import java.util.Set;
-import java.util.UUID;
-
-public class AccountManager {
-    final AccountManagerHelper helper;
-
-    public AccountManager(Context context) {
-        helper = new AccountManagerHelper(context);
-    }
-
-    public Set<Account> accounts() {
-        return helper.findAllAccounts();
-    }
-
-    public void add(Account account) {
-        helper.addAccount(account);
-    }
-
-    public void update(Account account) {
-        helper.updateAccount(account);
-    }
-
-    public void remove(String id) {
-        remove(UUID.fromString(id));
-    }
-
-    public void remove(UUID id) {
-        helper.removeAccount(id);
-    }
-
-    public void remove(Account account) {
-        remove(account.id);
-    }
-
-    public Account account(String id) {
-        return helper.account(id);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/accounts/AccountManagerHelper.java b/app/src/main/java/de/kuschku/util/accounts/AccountManagerHelper.java
deleted file mode 100644
index db1a817e8..000000000
--- a/app/src/main/java/de/kuschku/util/accounts/AccountManagerHelper.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.accounts;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteStatement;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
-
-public class AccountManagerHelper extends SQLiteOpenHelper {
-    private static final int DATABASE_VERSION = 1;
-    @NonNull
-    private static final String DATABASE_NAME = "accounts";
-    @NonNull
-    private static final String TABLE_ACCOUNTS = "accounts";
-
-    @NonNull
-    private static final String KEY_ID = "account_id";
-    @NonNull
-    private static final String KEY_NAME = "account_name";
-    @NonNull
-    private static final String KEY_HOST = "account_host";
-    @NonNull
-    private static final String KEY_PORT = "account_port";
-    @NonNull
-    private static final String KEY_USER = "account_user";
-    @NonNull
-    private static final String KEY_PASS = "account_pass";
-
-    // Again we can only use String.format, as SQL doesn’t support table or column names to be bound
-    // in prepared statements
-    @NonNull
-    private static final String STATEMENT_INSERT =
-            String.format("INSERT OR IGNORE INTO %s(%s, %s, %s, %s, %s, %s) VALUES (?, ?, ?, ?, ?, ?)",
-                    TABLE_ACCOUNTS, KEY_ID, KEY_NAME, KEY_HOST, KEY_PORT, KEY_USER, KEY_PASS);
-    @NonNull
-    private static final String STATEMENT_DELETE =
-            String.format("DELETE FROM %s WHERE %s = ?",
-                    TABLE_ACCOUNTS, KEY_ID);
-
-    @NonNull
-    private static final String SPECIFIER_FIND =
-            String.format("%s = ?", KEY_ID);
-
-    public AccountManagerHelper(Context context) {
-        super(context, DATABASE_NAME, null, DATABASE_VERSION);
-    }
-
-    @Override
-    public void onCreate(SQLiteDatabase db) {
-        // Why do we use String.format and not prepared statements? Because we can’t bind table or
-        // column names in prepared statements
-        String statement = String.format("CREATE TABLE %s (%s, %s, %s, %s, %s, %s, PRIMARY KEY (%s), UNIQUE(%s));",
-                TABLE_ACCOUNTS,
-                KEY_ID, KEY_NAME, KEY_HOST, KEY_PORT, KEY_USER, KEY_PASS,
-                KEY_ID,
-                KEY_ID);
-        db.execSQL(statement);
-    }
-
-    @Override
-    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
-    }
-
-    public boolean addAccount(Account account) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_INSERT);
-        statement.bindString(1, account.id.toString());
-        statement.bindString(2, account.name);
-        statement.bindString(3, account.host);
-        statement.bindLong(4, account.port);
-        statement.bindString(5, account.user);
-        statement.bindString(6, account.pass);
-        // executeInsert returns -1 if unsuccessful
-        return statement.executeInsert() != -1;
-    }
-
-    public boolean updateAccount(Account account) {
-        removeAccount(account.id);
-        return addAccount(account);
-    }
-
-    public boolean removeAccount(UUID id) {
-        return removeAccount(id.toString());
-    }
-
-    public boolean removeAccount(String id) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_DELETE);
-        statement.bindString(1, id);
-        // executeUpdateDelete returns amount of modified rows
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    private Cursor cursorFindAllAccounts() {
-        SQLiteDatabase db = this.getReadableDatabase();
-        return db.query(
-                // table name
-                TABLE_ACCOUNTS,
-                // column names
-                new String[]{KEY_ID, KEY_NAME, KEY_HOST, KEY_PORT, KEY_USER, KEY_PASS},
-                null,
-                null,
-                null,
-                null,
-                null,
-                null
-        );
-    }
-
-    private Cursor cursorFindAccount(String id) {
-        SQLiteDatabase db = this.getReadableDatabase();
-        return db.query(
-                // table name
-                TABLE_ACCOUNTS,
-                // column names
-                new String[]{KEY_ID, KEY_NAME, KEY_HOST, KEY_PORT, KEY_USER, KEY_PASS},
-                // where clause
-                SPECIFIER_FIND,
-                // binds for where clause
-                new String[]{id},
-                null,
-                null,
-                null,
-                null
-        );
-    }
-
-    @NonNull
-    public Set<Account> findAllAccounts() {
-        Cursor cursor = cursorFindAllAccounts();
-
-        Set<Account> accounts = new HashSet<>(cursor.getCount());
-
-        if (cursor.moveToFirst()) {
-            do {
-                String id = cursor.getString(0);
-                String name = cursor.getString(1);
-                String host = cursor.getString(2);
-                int port = (int) cursor.getLong(3);
-                String user = cursor.getString(4);
-                String pass = cursor.getString(5);
-                try {
-                    accounts.add(new Account(UUID.fromString(id), name, host, port, user, pass));
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    Log.e("AccountManager", "Removing account because invalid", e);
-                    removeAccount(id);
-                }
-            } while (cursor.moveToNext());
-        }
-
-        return accounts;
-    }
-
-    public Account account(String query_id) {
-        Cursor cursor = cursorFindAccount(query_id);
-
-        if (cursor.moveToFirst()) {
-            do {
-                String id = cursor.getString(0);
-                String name = cursor.getString(1);
-                String host = cursor.getString(2);
-                int port = (int) cursor.getLong(3);
-                String user = cursor.getString(4);
-                String pass = cursor.getString(5);
-                try {
-                    return new Account(UUID.fromString(id), name, host, port, user, pass);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    Log.e("AccountManager", "Removing account because invalid", e);
-                    removeAccount(id);
-                }
-            } while (cursor.moveToNext());
-        }
-
-        return null;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/accounts/ServerAddress.java b/app/src/main/java/de/kuschku/util/accounts/ServerAddress.java
deleted file mode 100644
index 7684395df..000000000
--- a/app/src/main/java/de/kuschku/util/accounts/ServerAddress.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.accounts;
-
-public class ServerAddress {
-    public final String host;
-    public final int port;
-
-    public ServerAddress(String host, int port) {
-        this.host = host;
-        this.port = port;
-    }
-
-    public String print() {
-        return String.format("%s:%s", host, port);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
deleted file mode 100644
index 8a75c3f95..000000000
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoBinder.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.annotationbind;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-
-import java.lang.reflect.Field;
-
-public class AutoBinder {
-    private AutoBinder() {
-
-    }
-
-    public static void bind(@NonNull Object o, @NonNull Resources.Theme t) throws IllegalAccessException {
-        for (Field f : o.getClass().getFields()) {
-            if (f.isAnnotationPresent(AutoColor.class)) {
-                int[] colors = obtainColors(f.getAnnotation(AutoColor.class).value(), t);
-                if (f.getType().isArray())
-                    f.set(o, colors);
-                else if (colors.length == 1)
-                    f.set(o, colors[0]);
-                else
-                    throw new IllegalAccessException("Field length does not correspond to argument length");
-            }
-        }
-    }
-
-    public static void bind(@NonNull Object o, @NonNull Context t) throws IllegalAccessException {
-        Resources.Theme theme = t.getTheme();
-        for (Field f : o.getClass().getFields()) {
-            if (f.isAnnotationPresent(AutoColor.class)) {
-                int[] colors = obtainColors(f.getAnnotation(AutoColor.class).value(), theme);
-                if (f.getType().isArray())
-                    f.set(o, colors);
-                else if (colors.length == 1)
-                    f.set(o, colors[0]);
-                else
-                    throw new IllegalAccessException("Field length does not correspond to argument length");
-            } else if (f.isAnnotationPresent(AutoString.class)) {
-                String[] strings = obtainStrings(f.getAnnotation(AutoString.class).value(), t);
-                if (f.getType().isArray())
-                    f.set(o, strings);
-                else if (strings.length == 1)
-                    f.set(o, strings[0]);
-                else
-                    throw new IllegalAccessException("Field length does not correspond to argument length");
-            } else if (f.isAnnotationPresent(AutoDimen.class)) {
-                int[] dimens = obtainDimen(f.getAnnotation(AutoDimen.class).value(), theme);
-                if (f.getType().isArray())
-                    f.set(o, dimens);
-                else if (dimens.length == 1)
-                    f.set(o, dimens[0]);
-                else
-                    throw new IllegalAccessException("Field length does not correspond to argument length");
-            } else if (f.isAnnotationPresent(AutoInt.class)) {
-                int[] ints = obtainInts(f.getAnnotation(AutoInt.class).value(), theme);
-                if (f.getType().isArray())
-                    f.set(o, ints);
-                else if (ints.length == 1)
-                    f.set(o, ints[0]);
-                else
-                    throw new IllegalAccessException("Field length does not correspond to argument length");
-            }
-        }
-    }
-
-    @ColorInt
-    public static int obtainColor(int res, @NonNull Resources.Theme theme) {
-        int result;
-        TypedArray t = theme.obtainStyledAttributes(new int[]{res});
-        result = t.getColor(0, 0x00000000);
-        t.recycle();
-        return result;
-    }
-
-    @NonNull
-    @ColorInt
-    private static int[] obtainColors(@NonNull int[] res, @NonNull Resources.Theme theme) {
-        int[] result = new int[res.length];
-        TypedArray t = theme.obtainStyledAttributes(res);
-        for (int i = 0; i < res.length; i++) {
-            result[i] = t.getColor(i, 0x00000000);
-        }
-        t.recycle();
-        return result;
-    }
-
-    @NonNull
-    private static String[] obtainStrings(@NonNull int[] res, @NonNull Context ctx) {
-        String[] result = new String[res.length];
-        for (int i = 0; i < res.length; i++) {
-            result[i] = ctx.getString(res[i]);
-        }
-        return result;
-    }
-
-    @NonNull
-    private static int[] obtainDimen(@NonNull int[] res, @NonNull Resources.Theme theme) {
-        int[] result = new int[res.length];
-        TypedArray t = theme.obtainStyledAttributes(res);
-        for (int i = 0; i < res.length; i++) {
-            result[i] = (int) t.getDimension(i, 0x00000000);
-        }
-        t.recycle();
-        return result;
-    }
-
-    @NonNull
-    private static int[] obtainInts(@NonNull int[] res, @NonNull Resources.Theme theme) {
-        int[] result = new int[res.length];
-        TypedArray t = theme.obtainStyledAttributes(res);
-        for (int i = 0; i < res.length; i++) {
-            result[i] = t.getInt(i, 0x00000000);
-        }
-        t.recycle();
-        return result;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoColor.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoColor.java
deleted file mode 100644
index dda4fd750..000000000
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoColor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.annotationbind;
-
-import android.support.annotation.AnyRes;
-import android.support.annotation.NonNull;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface AutoColor {
-    @NonNull @AnyRes int[] value() default {};
-}
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoDimen.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoDimen.java
deleted file mode 100644
index 5c87c0108..000000000
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoDimen.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.annotationbind;
-
-import android.support.annotation.AnyRes;
-import android.support.annotation.NonNull;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface AutoDimen {
-    @NonNull @AnyRes int[] value() default {};
-}
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java
deleted file mode 100644
index 66bb0e879..000000000
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoInt.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.annotationbind;
-
-import android.support.annotation.AnyRes;
-import android.support.annotation.NonNull;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface AutoInt {
-    @NonNull @AnyRes int[] value() default {};
-}
diff --git a/app/src/main/java/de/kuschku/util/annotationbind/AutoString.java b/app/src/main/java/de/kuschku/util/annotationbind/AutoString.java
deleted file mode 100644
index fb150578d..000000000
--- a/app/src/main/java/de/kuschku/util/annotationbind/AutoString.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.annotationbind;
-
-import android.support.annotation.AnyRes;
-import android.support.annotation.NonNull;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface AutoString {
-    @NonNull @AnyRes int[] value() default {};
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Absent.java b/app/src/main/java/de/kuschku/util/backports/Absent.java
deleted file mode 100644
index a1b3fe108..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Absent.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-
-public class Absent<T> implements Optional<T> {
-    Absent() {
-
-    }
-
-    @NonNull
-    @Override
-    public Optional<T> filter(@NonNull Predicate<? super T> predicate) {
-        return this;
-    }
-
-    @Nullable
-    @Override
-    public <U> Optional<U> flatMap(@NonNull Function<? super T, Optional<U>> mapper) {
-        return Optionals.absent();
-    }
-
-    @NonNull
-    @Override
-    public <U> Optional<U> map(@NonNull Function<? super T, U> mapper) {
-        return Optionals.absent();
-    }
-
-    @Nullable
-    @Override
-    public T get() {
-        return null;
-    }
-
-    @Override
-    public void ifPresent(@NonNull Consumer<? super T> consumer) {
-    }
-
-    @Override
-    public boolean isPresent() {
-        return false;
-    }
-
-    @NonNull
-    @Override
-    public T orElse(@NonNull T other) {
-        return other;
-    }
-
-    @Nullable
-    @Override
-    public T orElseGet(@NonNull Supplier<? extends T> other) {
-        return other.get();
-    }
-
-    @NonNull
-    @Override
-    public <X extends Throwable> T orElseThrow(@NonNull Supplier<? extends X> exceptionSupplier) throws X {
-        throw exceptionSupplier.get();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/BinaryFunction.java b/app/src/main/java/de/kuschku/util/backports/BinaryFunction.java
deleted file mode 100644
index cd54caabb..000000000
--- a/app/src/main/java/de/kuschku/util/backports/BinaryFunction.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-
-public interface BinaryFunction<A, B, C> {
-    @NonNull
-    C apply(A arg0, B arg1);
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Consumer.java b/app/src/main/java/de/kuschku/util/backports/Consumer.java
deleted file mode 100644
index 6857ad4f4..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Consumer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-public interface Consumer<T> {
-    void apply(T elem);
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/ICollector.java b/app/src/main/java/de/kuschku/util/backports/ICollector.java
deleted file mode 100644
index 9da94d226..000000000
--- a/app/src/main/java/de/kuschku/util/backports/ICollector.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-
-public interface ICollector<T, R> {
-    @NonNull
-    R collect(Stream<T> stream);
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/NumberHelper.java b/app/src/main/java/de/kuschku/util/backports/NumberHelper.java
deleted file mode 100644
index cecc76ab6..000000000
--- a/app/src/main/java/de/kuschku/util/backports/NumberHelper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-public class NumberHelper {
-    public static int parseInt(String text, int or) {
-        try {
-            return Integer.parseInt(text);
-        } catch (NumberFormatException e) {
-            return or;
-        }
-    }
-
-    public static short parseShort(String text, short or) {
-        try {
-            return Short.parseShort(text);
-        } catch (NumberFormatException e) {
-            return or;
-        }
-    }
-
-    public static long parseLong(String text, long or) {
-        try {
-            return Long.parseLong(text);
-        } catch (NumberFormatException e) {
-            return or;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Objects.java b/app/src/main/java/de/kuschku/util/backports/Objects.java
deleted file mode 100644
index 2e68013ef..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Objects.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * Utility methods for objects.
- *
- * @see java.util.Objects
- * @since 1.7
- */
-public final class Objects {
-    private Objects() {
-    }
-
-    /**
-     * Returns 0 if {@code a == b}, or {@code c.compare(a, b)} otherwise.
-     * That is, this makes {@code c} null-safe.
-     */
-    public static <T> int compare(T a, T b, @NonNull Comparator<? super T> c) {
-        if (a == b) {
-            return 0;
-        }
-        return c.compare(a, b);
-    }
-
-    /**
-     * Returns true if both arguments are null,
-     * the result of {@link Arrays#equals} if both arguments are primitive arrays,
-     * the result of {@link Arrays#deepEquals} if both arguments are arrays of reference types,
-     * and the result of {@link #equals} otherwise.
-     */
-    public static boolean deepEquals(@Nullable Object a, @Nullable Object b) {
-        if (a == null || b == null) {
-            return a == b;
-        } else if (a instanceof Object[] && b instanceof Object[]) {
-            return Arrays.deepEquals((Object[]) a, (Object[]) b);
-        } else if (a instanceof boolean[] && b instanceof boolean[]) {
-            return Arrays.equals((boolean[]) a, (boolean[]) b);
-        } else if (a instanceof byte[] && b instanceof byte[]) {
-            return Arrays.equals((byte[]) a, (byte[]) b);
-        } else if (a instanceof char[] && b instanceof char[]) {
-            return Arrays.equals((char[]) a, (char[]) b);
-        } else if (a instanceof double[] && b instanceof double[]) {
-            return Arrays.equals((double[]) a, (double[]) b);
-        } else if (a instanceof float[] && b instanceof float[]) {
-            return Arrays.equals((float[]) a, (float[]) b);
-        } else if (a instanceof int[] && b instanceof int[]) {
-            return Arrays.equals((int[]) a, (int[]) b);
-        } else if (a instanceof long[] && b instanceof long[]) {
-            return Arrays.equals((long[]) a, (long[]) b);
-        } else if (a instanceof short[] && b instanceof short[]) {
-            return Arrays.equals((short[]) a, (short[]) b);
-        }
-        return a.equals(b);
-    }
-
-    /**
-     * Null-safe equivalent of {@code a.equals(b)}.
-     */
-    public static boolean equals(@Nullable Object a, @Nullable Object b) {
-        return (a == null) ? (b == null) : a.equals(b);
-    }
-
-    /**
-     * Convenience wrapper for {@link Arrays#hashCode}, adding varargs.
-     * This can be used to compute a hash code for an object's fields as follows:
-     * {@code Objects.hash(a, b, c)}.
-     */
-    public static int hash(Object... values) {
-        return Arrays.hashCode(values);
-    }
-
-    /**
-     * Returns 0 for null or {@code o.hashCode()}.
-     */
-    public static int hashCode(@Nullable Object o) {
-        return (o == null) ? 0 : o.hashCode();
-    }
-
-    /**
-     * Returns {@code o} if non-null, or throws {@code NullPointerException}.
-     */
-    @Nullable
-    public static <T> T requireNonNull(@Nullable T o) {
-        if (o == null) {
-            throw new NullPointerException();
-        }
-        return o;
-    }
-
-    /**
-     * Returns {@code o} if non-null, or throws {@code NullPointerException}
-     * with the given detail message.
-     */
-    @Nullable
-    public static <T> T requireNonNull(@Nullable T o, String message) {
-        if (o == null) {
-            throw new NullPointerException(message);
-        }
-        return o;
-    }
-
-    /**
-     * Returns "null" for null or {@code o.toString()}.
-     */
-    @NonNull
-    public static String toString(@Nullable Object o) {
-        return (o == null) ? "null" : o.toString();
-    }
-
-    /**
-     * Returns {@code nullString} for null or {@code o.toString()}.
-     */
-    public static String toString(@Nullable Object o, String nullString) {
-        return (o == null) ? nullString : o.toString();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Optional.java b/app/src/main/java/de/kuschku/util/backports/Optional.java
deleted file mode 100644
index 028ece676..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Optional.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-
-public interface Optional<T> {
-    @NonNull
-    Optional<T> filter(@NonNull Predicate<? super T> predicate);
-
-    @Nullable
-    <U> Optional<U> flatMap(@NonNull Function<? super T, Optional<U>> mapper);
-
-    @NonNull
-    <U> Optional<U> map(@NonNull Function<? super T, U> mapper);
-
-    @Nullable
-    T get();
-
-    void ifPresent(@NonNull Consumer<? super T> consumer);
-
-    boolean isPresent();
-
-    @NonNull
-    T orElse(@NonNull T other);
-
-    @Nullable
-    T orElseGet(@NonNull Supplier<? extends T> other);
-
-    @NonNull
-    <X extends Throwable> T orElseThrow(@NonNull Supplier<? extends X> exceptionSupplier) throws X;
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Optionals.java b/app/src/main/java/de/kuschku/util/backports/Optionals.java
deleted file mode 100644
index 1d516cfd1..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Optionals.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-public class Optionals {
-    private Optionals() {
-
-    }
-
-    @NonNull
-    public static <T> Optional<T> of(@NonNull T elem) {
-        return new Present<>(elem);
-    }
-
-    @NonNull
-    public static <T> Optional<T> absent() {
-        return new Absent<>();
-    }
-
-    @NonNull
-    public static <T> Optional<T> ofNullable(@Nullable T elem) {
-        if (elem == null) {
-            return absent();
-        } else {
-            return of(elem);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Present.java b/app/src/main/java/de/kuschku/util/backports/Present.java
deleted file mode 100644
index 9a5872c02..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Present.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-
-public class Present<T> implements Optional<T> {
-    private final T value;
-
-    Present(T value) {
-        this.value = value;
-    }
-
-    @NonNull
-    @Override
-    public Optional<T> filter(@NonNull Predicate<? super T> predicate) {
-        if (predicate.apply(value)) return this;
-        else return Optionals.absent();
-    }
-
-    @Nullable
-    @Override
-    public <U> Optional<U> flatMap(@NonNull Function<? super T, Optional<U>> mapper) {
-        return mapper.apply(value);
-    }
-
-    @NonNull
-    @Override
-    public <U> Optional<U> map(@NonNull Function<? super T, U> mapper) {
-        return Optionals.ofNullable(mapper.apply(value));
-    }
-
-    @Nullable
-    @Override
-    public T get() {
-        return value;
-    }
-
-    @Override
-    public void ifPresent(@NonNull Consumer<? super T> consumer) {
-        consumer.apply(value);
-    }
-
-    @Override
-    public boolean isPresent() {
-        return true;
-    }
-
-    @NonNull
-    @Override
-    public T orElse(@NonNull T other) {
-        return value;
-    }
-
-    @Nullable
-    @Override
-    public T orElseGet(@NonNull Supplier<? extends T> other) {
-        return value;
-    }
-
-    @NonNull
-    @Override
-    public <X extends Throwable> T orElseThrow(@NonNull Supplier<? extends X> exceptionSupplier) throws X {
-        return value;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/Stream.java b/app/src/main/java/de/kuschku/util/backports/Stream.java
deleted file mode 100644
index ab3c11531..000000000
--- a/app/src/main/java/de/kuschku/util/backports/Stream.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Lists;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import de.kuschku.util.backports.collectors.Collectors;
-
-public class Stream<T> {
-    @NonNull
-    private final List<T> list;
-
-    public Stream(@NonNull List<T> list) {
-        this.list = list;
-    }
-
-    public Stream(@NonNull Collection<T> observers) {
-        list = new ArrayList<>(observers);
-    }
-
-    public boolean allMatch(@NonNull Predicate<T> predicate) {
-        return filter(predicate).count() == count();
-    }
-
-
-    public boolean anyMatch(@NonNull Predicate<T> predicate) {
-        return filter(predicate).count() > 0;
-    }
-
-
-    public int count() {
-        return list.size();
-    }
-
-
-    @NonNull
-    public Stream<T> filter(Predicate<? super T> predicate) {
-        return new Stream<>(Lists.newArrayList(Collections2.filter(list, predicate)));
-    }
-
-
-    @NonNull
-    public Optional<T> findFirst() {
-        if (list.size() > 0) {
-            return Optionals.of(list.get(0));
-        } else {
-            return Optionals.absent();
-        }
-    }
-
-
-    @NonNull
-    public Optional<T> findAny() {
-        return findFirst();
-    }
-
-
-    @NonNull
-    public <S> Stream<S> map(@NonNull Function<T, S> function) {
-        return new Stream<>(Lists.transform(list, function));
-    }
-
-
-    public void forEach(@NonNull Consumer<T> function) {
-        for (T elem : Collectors.toList(this)) {
-            function.apply(elem);
-        }
-    }
-
-
-    @NonNull
-    public Stream<T> limit(int maxSize) {
-        return new Stream<>(list.subList(0, Math.min(maxSize, list.size())));
-    }
-
-
-    public boolean noneMatch(@NonNull Predicate<T> predicate) {
-        return !anyMatch(predicate);
-    }
-
-
-    @NonNull
-    public Stream<T> skip(int n) {
-        if (count() <= n) {
-            return new Stream<>(Lists.newArrayList());
-        } else {
-            return new Stream<>(list.subList(n, list.size()));
-        }
-    }
-
-
-    @Nullable
-    public <R> R collect(@NonNull ICollector<T, R> collector) {
-        return collector.collect(this);
-    }
-
-
-    @NonNull
-    public Iterator<T> iterator() {
-        return list.iterator();
-    }
-
-    @NonNull
-    public List<T> list() {
-        return list;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/collectors/Collectors.java b/app/src/main/java/de/kuschku/util/backports/collectors/Collectors.java
deleted file mode 100644
index a89373f0b..000000000
--- a/app/src/main/java/de/kuschku/util/backports/collectors/Collectors.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports.collectors;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.util.backports.Stream;
-
-public class Collectors {
-    private Collectors() {
-
-    }
-
-    @NonNull
-    public static <T> List<T> toList(@NonNull Stream<T> stream) {
-        return new ListCollector<T>().collect(stream);
-    }
-
-    @NonNull
-    public static <T> Map<T, T> toMap(@NonNull Stream<T> stream) {
-        return new MapCollector<T>().collect(stream);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/collectors/ListCollector.java b/app/src/main/java/de/kuschku/util/backports/collectors/ListCollector.java
deleted file mode 100644
index cb66c2a10..000000000
--- a/app/src/main/java/de/kuschku/util/backports/collectors/ListCollector.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports.collectors;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.util.backports.ICollector;
-import de.kuschku.util.backports.Stream;
-
-public class ListCollector<T> implements ICollector<T, List<T>> {
-    @NonNull
-    @Override
-    public List<T> collect(@NonNull Stream<T> stream) {
-        return stream.list();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/backports/collectors/MapCollector.java b/app/src/main/java/de/kuschku/util/backports/collectors/MapCollector.java
deleted file mode 100644
index c57cd67e6..000000000
--- a/app/src/main/java/de/kuschku/util/backports/collectors/MapCollector.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.backports.collectors;
-
-import android.support.annotation.NonNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.util.backports.ICollector;
-import de.kuschku.util.backports.Stream;
-
-public class MapCollector<T> implements ICollector<T, Map<T, T>> {
-    @NonNull
-    @Override
-    public Map<T, T> collect(@NonNull Stream<T> stream) {
-        Map<T, T> map = new HashMap<>(stream.count() / 2);
-
-        if (stream.count() % 2 == 1)
-            throw new IllegalArgumentException("This only works with equally many keys and values");
-
-        List<T> list = Collectors.toList(stream);
-
-        for (int i = 0; i < stream.count(); i += 2) {
-            map.put(list.get(i), list.get(i + 1));
-        }
-
-        return map;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java b/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java
deleted file mode 100644
index 4f77c91bc..000000000
--- a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataHelper.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.buffermetadata;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteStatement;
-import android.support.annotation.NonNull;
-
-public class BufferMetaDataHelper extends SQLiteOpenHelper {
-    private static final int DATABASE_VERSION = 1;
-    @NonNull
-    private static final String DATABASE_NAME = "bufferdata";
-    @NonNull
-    private static final String TABLE_ACCOUNTS = "bufferdata";
-
-    @NonNull
-    private static final String KEY_CORE = "core";
-    @NonNull
-    private static final String KEY_BUFFER = "buffer";
-    @NonNull
-    private static final String KEY_HIDDEN = "hiddenevents";
-    @NonNull
-    private static final String KEY_MARKERLINE = "markerline";
-
-    // Again we can only use String.format, as SQL doesn’t support table or column names to be bound
-    // in prepared statements
-    @NonNull
-    private static final String STATEMENT_INSERT =
-            String.format("INSERT OR IGNORE INTO %s(%s, %s, %s, %s) VALUES (?, ?, ?, ?)",
-                    TABLE_ACCOUNTS, KEY_CORE, KEY_BUFFER, KEY_HIDDEN, KEY_MARKERLINE);
-
-    @NonNull
-    private static final String STATEMENT_UPDATE_HIDDEN =
-            String.format("UPDATE %s SET %s=? WHERE %s=? AND %s=?",
-                    TABLE_ACCOUNTS, KEY_HIDDEN, KEY_CORE, KEY_BUFFER);
-
-    @NonNull
-    private static final String STATEMENT_UPDATE_MARKERLINE =
-            String.format("UPDATE %s SET %s=? WHERE %s=? AND %s=?",
-                    TABLE_ACCOUNTS, KEY_MARKERLINE, KEY_CORE, KEY_BUFFER);
-    @NonNull
-    private static final String STATEMENT_DELETE_BUFFER =
-            String.format("DELETE FROM %s WHERE %s = ? AND %s = ?",
-                    TABLE_ACCOUNTS, KEY_CORE, KEY_BUFFER);
-
-    @NonNull
-    private static final String STATEMENT_DELETE_CORE =
-            String.format("DELETE FROM %s WHERE %s = ?",
-                    TABLE_ACCOUNTS, KEY_CORE);
-
-    @NonNull
-    private static final String SPECIFIER_FIND =
-            String.format("%s = ? ", KEY_CORE);
-
-    public BufferMetaDataHelper(Context context) {
-        super(context, DATABASE_NAME, null, DATABASE_VERSION);
-    }
-
-    @Override
-    public void onCreate(SQLiteDatabase db) {
-        // Why do we use String.format and not prepared statements? Because we can’t bind table or
-        // column names in prepared statements
-        String statement = String.format("CREATE TABLE %s (%s, %s, %s, %s, PRIMARY KEY (%s, %s), UNIQUE(%s, %s));",
-                TABLE_ACCOUNTS,
-                KEY_CORE, KEY_BUFFER, KEY_HIDDEN, KEY_MARKERLINE,
-                KEY_CORE, KEY_BUFFER,
-                KEY_CORE, KEY_BUFFER);
-        db.execSQL(statement);
-    }
-
-    @Override
-    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
-    }
-
-    public boolean storeMarkerline(String coreid, int bufferid, int messageid) {
-        ensureExisting(coreid, bufferid);
-
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_UPDATE_MARKERLINE);
-        statement.bindLong(1, messageid);
-        statement.bindString(2, coreid);
-        statement.bindLong(3, bufferid);
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    public boolean storeHiddenData(String coreid, int bufferid, int hiddendata) {
-        ensureExisting(coreid, bufferid);
-
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_UPDATE_HIDDEN);
-        statement.bindLong(1, hiddendata);
-        statement.bindString(2, coreid);
-        statement.bindLong(3, bufferid);
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    private boolean ensureExisting(String coreid, int bufferid) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_INSERT);
-        statement.bindString(1, coreid);
-        statement.bindLong(2, bufferid);
-        statement.bindLong(3, 0);
-        statement.bindLong(4, -1);
-        // executeInsert returns -1 if unsuccessful
-        return statement.executeInsert() != -1;
-    }
-
-    private Cursor cursorFindData(String coreid) {
-        SQLiteDatabase db = this.getReadableDatabase();
-        return db.query(
-                // table name
-                TABLE_ACCOUNTS,
-                // column names
-                new String[]{KEY_CORE, KEY_BUFFER, KEY_HIDDEN, KEY_MARKERLINE},
-                // where clause
-                SPECIFIER_FIND,
-                // binds for where clause
-                new String[]{coreid},
-                null,
-                null,
-                null,
-                null
-        );
-    }
-
-    public int markerLine(String coreid, int bufferid) {
-        Cursor cursor = cursorFindData(coreid);
-        if (cursor.moveToFirst()) {
-            do {
-                if (cursor.getInt(1) == bufferid) {
-                    return cursor.getInt(3);
-                }
-            } while (cursor.moveToNext());
-        }
-        return -1;
-    }
-
-    public int hiddenData(String coreid, int bufferid) {
-        ensureExisting(coreid, bufferid);
-        Cursor cursor = cursorFindData(coreid);
-        if (cursor.moveToFirst()) {
-            do {
-                if (cursor.getInt(1) == bufferid) {
-                    return cursor.getInt(2);
-                }
-            } while (cursor.moveToNext());
-        }
-        return 0;
-    }
-
-    public boolean deleteCore(String coreid) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_DELETE_CORE);
-        statement.bindString(1, coreid);
-        // executeUpdateDelete returns amount of modified rows
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    public boolean deleteBuffer(String coreid, int bufferid) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_DELETE_BUFFER);
-        statement.bindString(1, coreid);
-        statement.bindLong(2, bufferid);
-        // executeUpdateDelete returns amount of modified rows
-        return statement.executeUpdateDelete() > 0;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataManager.java b/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataManager.java
deleted file mode 100644
index 592c966c4..000000000
--- a/app/src/main/java/de/kuschku/util/buffermetadata/BufferMetaDataManager.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.buffermetadata;
-
-public interface BufferMetaDataManager {
-    int markerline(String coreid, int bufferid);
-
-    int hiddendata(String coreid, int bufferid);
-
-    void setMarkerline(String coreid, int bufferid, int markerline);
-
-    void setHiddendata(String coreid, int bufferid, int hiddendata);
-
-    void removeBuffer(String coreid, int bufferid);
-
-    void removeCore(String coreid);
-}
diff --git a/app/src/main/java/de/kuschku/util/buffermetadata/SQLiteBufferMetaDataManager.java b/app/src/main/java/de/kuschku/util/buffermetadata/SQLiteBufferMetaDataManager.java
deleted file mode 100644
index ebd265295..000000000
--- a/app/src/main/java/de/kuschku/util/buffermetadata/SQLiteBufferMetaDataManager.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.buffermetadata;
-
-import android.content.Context;
-
-public class SQLiteBufferMetaDataManager implements BufferMetaDataManager {
-    private final BufferMetaDataHelper helper;
-
-    public SQLiteBufferMetaDataManager(Context context) {
-        helper = new BufferMetaDataHelper(context);
-    }
-
-    @Override
-    public int markerline(String coreid, int bufferid) {
-        return helper.markerLine(coreid, bufferid);
-    }
-
-    @Override
-    public int hiddendata(String coreid, int bufferid) {
-        return helper.hiddenData(coreid, bufferid);
-    }
-
-    @Override
-    public void setMarkerline(String coreid, int bufferid, int markerline) {
-        helper.storeMarkerline(coreid, bufferid, markerline);
-    }
-
-    @Override
-    public void setHiddendata(String coreid, int bufferid, int hiddendata) {
-        helper.storeHiddenData(coreid, bufferid, hiddendata);
-    }
-
-    @Override
-    public void removeBuffer(String coreid, int bufferid) {
-        helper.deleteBuffer(coreid, bufferid);
-    }
-
-    @Override
-    public void removeCore(String coreid) {
-        helper.deleteCore(coreid);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/certificates/CertificateDatabaseHandler.java b/app/src/main/java/de/kuschku/util/certificates/CertificateDatabaseHandler.java
deleted file mode 100644
index 0f6277df5..000000000
--- a/app/src/main/java/de/kuschku/util/certificates/CertificateDatabaseHandler.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.certificates;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteStatement;
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-
-public class CertificateDatabaseHandler extends SQLiteOpenHelper {
-    private static final int DATABASE_VERSION = 1;
-    @NonNull
-    private static final String DATABASE_NAME = "certificates";
-    @NonNull
-    private static final String TABLE_CERTIFICATES = "certificates";
-
-    @NonNull
-    private static final String KEY_CORE_ADDRESS = "core_address";
-    @NonNull
-    private static final String KEY_FINGERPRINT = "fingerprint";
-
-    // Again we can only use String.format, as SQL doesn’t support table or column names to be bound
-    // in prepared statements
-    @NonNull
-    private static final String STATEMENT_INSERT =
-            String.format("INSERT OR IGNORE INTO %s(%s, %s) VALUES (?, ?)",
-                    TABLE_CERTIFICATES, KEY_CORE_ADDRESS, KEY_FINGERPRINT);
-    @NonNull
-    private static final String STATEMENT_DELETE =
-            String.format("DELETE FROM %s WHERE %s = ? AND %s = ?",
-                    TABLE_CERTIFICATES, KEY_CORE_ADDRESS, KEY_FINGERPRINT);
-    @NonNull
-    private static final String STATEMENT_DELETE_ALL =
-            String.format("DELETE FROM %s WHERE %s = ?",
-                    TABLE_CERTIFICATES, KEY_CORE_ADDRESS);
-
-    @NonNull
-    private static final String SPECIFIER_FIND_ALL = String.format("%s = ?", KEY_CORE_ADDRESS);
-
-    public CertificateDatabaseHandler(Context context) {
-        super(context, DATABASE_NAME, null, DATABASE_VERSION);
-    }
-
-    @Override
-    public void onCreate(@NonNull SQLiteDatabase db) {
-        // Why do we use String.format and not prepared statements? Because we can’t bind table or
-        // column names in prepared statements
-        String statement = String.format("CREATE TABLE %s (%s, %s, PRIMARY KEY (%s, %s), UNIQUE(%s, %s));",
-                TABLE_CERTIFICATES,
-                KEY_CORE_ADDRESS, KEY_FINGERPRINT,
-                KEY_CORE_ADDRESS, KEY_FINGERPRINT,
-                KEY_CORE_ADDRESS, KEY_FINGERPRINT);
-        db.execSQL(statement);
-    }
-
-    @Override
-    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
-    }
-
-    public boolean addCertificate(String fingerprint, String coreAddress) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_INSERT);
-        statement.bindString(1, coreAddress);
-        statement.bindString(2, fingerprint);
-        // executeInsert returns -1 if unsuccessful
-        return statement.executeInsert() != -1;
-    }
-
-    public boolean removeCertificate(String fingerprint, String coreAddress) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_DELETE);
-        statement.bindString(1, coreAddress);
-        statement.bindString(2, fingerprint);
-        // executeUpdateDelete returns amount of modified rows
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    public boolean removeCertificates(String coreAddress) {
-        SQLiteDatabase db = this.getWritableDatabase();
-        SQLiteStatement statement = db.compileStatement(STATEMENT_DELETE_ALL);
-        statement.bindString(1, coreAddress);
-        // executeUpdateDelete returns amount of modified rows
-        return statement.executeUpdateDelete() > 0;
-    }
-
-    public Cursor cursorFindCertificates(String coreAddress) {
-        SQLiteDatabase db = this.getReadableDatabase();
-        return db.query(
-                // table name
-                TABLE_CERTIFICATES,
-                // column names
-                new String[]{KEY_FINGERPRINT},
-                // where clause
-                SPECIFIER_FIND_ALL,
-                // binds for where clause
-                new String[]{coreAddress},
-                null,
-                null,
-                null,
-                null
-        );
-    }
-
-    public Cursor cursorFindAllCertificates() {
-        SQLiteDatabase db = this.getReadableDatabase();
-        return db.query(
-                // table name
-                TABLE_CERTIFICATES,
-                // column names
-                new String[]{KEY_CORE_ADDRESS, KEY_FINGERPRINT},
-                // where clause
-                null,
-                // binds for where clause
-                new String[0],
-                null,
-                null,
-                null,
-                null
-        );
-    }
-
-    @NonNull
-    public List<String> findCertificates(String coreAddress) {
-        Cursor cursor = cursorFindCertificates(coreAddress);
-        List<String> certificates = new ArrayList<>();
-
-        if (cursor != null && cursor.moveToFirst()) {
-            do {
-                certificates.add(cursor.getString(0));
-            } while (cursor.moveToNext());
-        }
-
-        return certificates;
-    }
-
-    @NonNull
-    public Map<String, Collection<String>> findAllCertificates() {
-        Cursor cursor = cursorFindAllCertificates();
-
-        Map<String, Collection<String>> certificates = new HashMap<>();
-
-        if (cursor != null && cursor.moveToFirst()) {
-            do {
-                String coreid = cursor.getString(0);
-                String fingerprint = cursor.getString(1);
-                if (certificates.get(coreid) == null)
-                    certificates.put(coreid, new HashSet<>());
-
-                certificates.get(coreid).add(fingerprint);
-            } while (cursor.moveToNext());
-        }
-
-        return certificates;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/certificates/CertificateUtils.java b/app/src/main/java/de/kuschku/util/certificates/CertificateUtils.java
deleted file mode 100644
index 13f26868a..000000000
--- a/app/src/main/java/de/kuschku/util/certificates/CertificateUtils.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.certificates;
-
-import android.support.annotation.NonNull;
-
-import com.google.common.base.Joiner;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateParsingException;
-import java.security.cert.X509Certificate;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.util.backports.Objects;
-
-public class CertificateUtils {
-    private CertificateUtils() {
-    }
-
-    public static String certificateToFingerprint(@NonNull X509Certificate certificate) throws NoSuchAlgorithmException, CertificateEncodingException {
-        return hashToFingerprint(getHash(certificate));
-    }
-
-    public static String certificateToFingerprint(@NonNull X509Certificate certificate, String defaultValue) {
-        try {
-            return certificateToFingerprint(certificate);
-        } catch (Exception e) {
-            return defaultValue;
-        }
-    }
-
-    private static byte[] getHash(@NonNull X509Certificate certificate) throws NoSuchAlgorithmException, CertificateEncodingException {
-        MessageDigest digest = java.security.MessageDigest.getInstance("SHA1");
-        digest.update(certificate.getEncoded());
-        return digest.digest();
-    }
-
-    public static String hashToFingerprint(@NonNull byte[] hash) {
-        String[] formattedBytes = new String[hash.length];
-        for (int i = 0; i < hash.length; i++) {
-            // Format each byte as hex string
-            formattedBytes[i] = Integer.toHexString(hash[i] & 0xff);
-        }
-        return Joiner.on(":").join(formattedBytes);
-    }
-
-    @NonNull
-    public static Collection<String> getHostnames(@NonNull X509Certificate certificate) throws CertificateParsingException {
-        Set<String> hostnames = new HashSet<>();
-        for (List<?> data : certificate.getSubjectAlternativeNames()) {
-            if (Objects.equals(data.get(0), 2) && data.get(1) instanceof String)
-                hostnames.add((String) data.get(1));
-        }
-        return hostnames;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/certificates/SQLiteCertificateManager.java b/app/src/main/java/de/kuschku/util/certificates/SQLiteCertificateManager.java
deleted file mode 100644
index 74f653d92..000000000
--- a/app/src/main/java/de/kuschku/util/certificates/SQLiteCertificateManager.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.certificates;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-
-import java.security.cert.X509Certificate;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.ssl.CertificateManager;
-import de.kuschku.libquassel.ssl.UnknownCertificateException;
-import de.kuschku.util.accounts.ServerAddress;
-
-public class SQLiteCertificateManager implements CertificateManager {
-    @NonNull
-    private final CertificateDatabaseHandler handler;
-
-    public SQLiteCertificateManager(Context context) {
-        this.handler = new CertificateDatabaseHandler(context);
-    }
-
-    @Override
-    public boolean isTrusted(@NonNull X509Certificate certificate, @NonNull ServerAddress core) {
-        try {
-            return handler.findCertificates(core.host).contains(CertificateUtils.certificateToFingerprint(certificate));
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean addCertificate(@NonNull X509Certificate certificate, @NonNull ServerAddress core) {
-        try {
-            return handler.addCertificate(CertificateUtils.certificateToFingerprint(certificate), core.host);
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean removeCertificate(@NonNull X509Certificate certificate, @NonNull ServerAddress core) {
-        try {
-            return handler.removeCertificate(CertificateUtils.certificateToFingerprint(certificate), core.host);
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean removeAllCertificates(@NonNull ServerAddress core) {
-        return handler.removeCertificates(core.host);
-    }
-
-    @Override
-    public void checkTrusted(@NonNull X509Certificate certificate, @NonNull ServerAddress address) throws UnknownCertificateException {
-        if (!isTrusted(certificate, address))
-            throw new UnknownCertificateException(certificate, address);
-    }
-
-    @NonNull
-    public List<String> findCertificates(@NonNull ServerAddress core) {
-        return handler.findCertificates(core.host);
-    }
-
-    @NonNull
-    public Map<String, Collection<String>> findAllCertificates() {
-        return handler.findAllCertificates();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/instancestateutil/Storable.java b/app/src/main/java/de/kuschku/util/instancestateutil/Storable.java
deleted file mode 100644
index 2a0ac3706..000000000
--- a/app/src/main/java/de/kuschku/util/instancestateutil/Storable.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.instancestateutil;
-
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-import android.util.SparseArray;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-
-@SuppressWarnings("unchecked")
-public class Storable {
-    public boolean onRestoreInstanceState(@NonNull Bundle in) {
-        try {
-            Field[] fields = getClass().getDeclaredFields();
-            for (Field field : fields) {
-                if (field.isAnnotationPresent(Store.class)) {
-                    Store annotation = field.getAnnotation(Store.class);
-                    String name = annotation.name().isEmpty() ? field.getName() : annotation.name();
-                    Store.Type type = annotation.type() == Store.Type.INVALID ? getTypeFromClass(field.getType()) : annotation.type();
-                    loadField(in, type, name, field);
-                }
-            }
-            return true;
-        } catch (IllegalAccessException e) {
-            return false;
-        }
-    }
-
-    public boolean onSaveInstanceState(@NonNull Bundle out) {
-        try {
-            Field[] fields = getClass().getDeclaredFields();
-            for (Field field : fields) {
-                if (field.isAnnotationPresent(Store.class)) {
-                    Store annotation = field.getAnnotation(Store.class);
-                    String name = annotation.name().isEmpty() ? field.getName() : annotation.name();
-                    Store.Type type = annotation.type() == Store.Type.INVALID ? getTypeFromClass(field.getType()) : annotation.type();
-                    storeField(out, type, name, field.get(this));
-                }
-            }
-            return true;
-        } catch (IllegalAccessException e) {
-            return false;
-        }
-    }
-
-    private void storeField(@NonNull Bundle out, @NonNull Store.Type type, @NonNull String name, Object data) {
-        switch (type) {
-            case BOOLEAN:
-                out.putBoolean(name, (Boolean) data);
-                break;
-            case BOOLEAN_ARRAY:
-                out.putBooleanArray(name, (boolean[]) data);
-                break;
-            case BYTE:
-                out.putByte(name, (byte) data);
-                break;
-            case BYTE_ARRAY:
-                out.putByteArray(name, (byte[]) data);
-                break;
-            case CHAR:
-                out.putChar(name, (char) data);
-                break;
-            case CHAR_ARRAY:
-                out.putCharArray(name, (char[]) data);
-                break;
-            case SHORT:
-                out.putShort(name, (short) data);
-                break;
-            case SHORT_ARRAY:
-                out.putShortArray(name, (short[]) data);
-                break;
-            case INT:
-                out.putInt(name, (int) data);
-                break;
-            case INT_ARRAY:
-                out.putIntArray(name, (int[]) data);
-                break;
-            case INTEGER_ARRAYLIST:
-                out.putIntegerArrayList(name, (ArrayList<Integer>) data);
-                break;
-            case LONG:
-                out.putLong(name, (long) data);
-                break;
-            case LONG_ARRAY:
-                out.putLongArray(name, (long[]) data);
-                break;
-            case FLOAT:
-                out.putFloat(name, (float) data);
-                break;
-            case FLOAT_ARRAY:
-                out.putFloatArray(name, (float[]) data);
-                break;
-            case DOUBLE:
-                out.putDouble(name, (double) data);
-                break;
-            case DOUBLE_ARRAY:
-                out.putDoubleArray(name, (double[]) data);
-                break;
-            case STRING:
-                out.putString(name, (String) data);
-                break;
-            case STRING_ARRAY:
-                out.putStringArray(name, (String[]) data);
-                break;
-            case STRING_ARRAYLIST:
-                out.putStringArrayList(name, (ArrayList<String>) data);
-                break;
-            case CHARSEQUENCE:
-                out.putCharSequence(name, (CharSequence) data);
-                break;
-            case CHARSEQUENCE_ARRAY:
-                out.putCharSequenceArray(name, (CharSequence[]) data);
-                break;
-            case CHARSEQUENCE_ARRAYLIST:
-                out.putCharSequenceArrayList(name, (ArrayList<CharSequence>) data);
-                break;
-            case PARCELABLE:
-                out.putParcelable(name, (Parcelable) data);
-                break;
-            case PARCELABLE_ARRAY:
-                out.putParcelableArray(name, (Parcelable[]) data);
-                break;
-            case PARCELABLE_ARRAYLIST:
-                out.putParcelableArrayList(name, (ArrayList<? extends Parcelable>) data);
-                break;
-            case SPARSEPARCELABLE_ARRAY:
-                out.putSparseParcelableArray(name, (SparseArray<? extends Parcelable>) data);
-                break;
-            case SERIALIZABLE:
-                out.putSerializable(name, (Serializable) data);
-                break;
-            case BUNDLE:
-                out.putBundle(name, (Bundle) data);
-                break;
-        }
-    }
-
-    private void loadField(@NonNull Bundle in, @NonNull Store.Type type, @NonNull String name, @NonNull Field field) throws IllegalAccessException {
-        if (!in.containsKey(name)) return;
-
-        switch (type) {
-            case BOOLEAN:
-                field.setBoolean(this, in.getBoolean(name));
-                break;
-            case BOOLEAN_ARRAY:
-                field.set(this, in.getBooleanArray(name));
-                break;
-            case BYTE:
-                field.setByte(this, in.getByte(name));
-                break;
-            case BYTE_ARRAY:
-                field.set(this, in.getByteArray(name));
-                break;
-            case CHAR:
-                field.setChar(this, in.getChar(name));
-                break;
-            case CHAR_ARRAY:
-                field.set(this, in.getCharArray(name));
-                break;
-            case SHORT:
-                field.setShort(this, in.getShort(name));
-                break;
-            case SHORT_ARRAY:
-                field.set(this, in.getShortArray(name));
-                break;
-            case INT:
-                field.setInt(this, in.getInt(name));
-                break;
-            case INT_ARRAY:
-                field.set(this, in.getIntArray(name));
-                break;
-            case INTEGER_ARRAYLIST:
-                field.set(this, in.getIntegerArrayList(name));
-                break;
-            case LONG:
-                field.setLong(this, in.getLong(name));
-                break;
-            case LONG_ARRAY:
-                field.set(this, in.getLongArray(name));
-                break;
-            case FLOAT:
-                field.setFloat(this, in.getFloat(name));
-                break;
-            case FLOAT_ARRAY:
-                field.set(this, in.getFloatArray(name));
-                break;
-            case DOUBLE:
-                field.setDouble(this, in.getDouble(name));
-                break;
-            case DOUBLE_ARRAY:
-                field.set(this, in.getDoubleArray(name));
-                break;
-            case STRING:
-                field.set(this, in.getString(name));
-                break;
-            case STRING_ARRAY:
-                field.set(this, in.getStringArray(name));
-                break;
-            case STRING_ARRAYLIST:
-                field.set(this, in.getStringArrayList(name));
-                break;
-            case CHARSEQUENCE:
-                field.set(this, in.getCharSequence(name));
-                break;
-            case CHARSEQUENCE_ARRAY:
-                field.set(this, in.getCharSequenceArray(name));
-                break;
-            case CHARSEQUENCE_ARRAYLIST:
-                field.set(this, in.getCharSequenceArrayList(name));
-                break;
-            case PARCELABLE:
-                field.set(this, in.getParcelable(name));
-                break;
-            case PARCELABLE_ARRAY:
-                field.set(this, in.getParcelableArray(name));
-                break;
-            case PARCELABLE_ARRAYLIST:
-                field.set(this, in.getParcelableArrayList(name));
-                break;
-            case SPARSEPARCELABLE_ARRAY:
-                field.set(this, in.getSparseParcelableArray(name));
-                break;
-            case SERIALIZABLE:
-                field.set(this, in.getSerializable(name));
-                break;
-            case BUNDLE:
-                field.set(this, in.getBundle(name));
-                break;
-        }
-    }
-
-    @NonNull
-    private Store.Type getTypeFromClass(@NonNull Class cl) {
-        if (boolean.class.isAssignableFrom(cl)) return Store.Type.BOOLEAN;
-        if (boolean[].class.isAssignableFrom(cl)) return Store.Type.BOOLEAN_ARRAY;
-        if (byte.class.isAssignableFrom(cl)) return Store.Type.BYTE;
-        if (byte[].class.isAssignableFrom(cl)) return Store.Type.BYTE_ARRAY;
-        if (char.class.isAssignableFrom(cl)) return Store.Type.CHAR;
-        if (char[].class.isAssignableFrom(cl)) return Store.Type.CHAR_ARRAY;
-        if (short.class.isAssignableFrom(cl)) return Store.Type.SHORT;
-        if (short[].class.isAssignableFrom(cl)) return Store.Type.SHORT_ARRAY;
-        if (int.class.isAssignableFrom(cl)) return Store.Type.INT;
-        if (int[].class.isAssignableFrom(cl)) return Store.Type.INT_ARRAY;
-        if (long.class.isAssignableFrom(cl)) return Store.Type.LONG;
-        if (long[].class.isAssignableFrom(cl)) return Store.Type.LONG_ARRAY;
-        if (float.class.isAssignableFrom(cl)) return Store.Type.FLOAT;
-        if (float[].class.isAssignableFrom(cl)) return Store.Type.FLOAT_ARRAY;
-        if (double.class.isAssignableFrom(cl)) return Store.Type.DOUBLE;
-        if (double[].class.isAssignableFrom(cl)) return Store.Type.DOUBLE_ARRAY;
-        if (String.class.isAssignableFrom(cl)) return Store.Type.STRING;
-        if (String[].class.isAssignableFrom(cl)) return Store.Type.STRING_ARRAY;
-        if (CharSequence.class.isAssignableFrom(cl)) return Store.Type.CHARSEQUENCE;
-        if (CharSequence[].class.isAssignableFrom(cl)) return Store.Type.CHARSEQUENCE_ARRAY;
-        if (Parcelable.class.isAssignableFrom(cl)) return Store.Type.PARCELABLE;
-        if (Parcelable[].class.isAssignableFrom(cl)) return Store.Type.PARCELABLE_ARRAY;
-        if (Serializable.class.isAssignableFrom(cl)) return Store.Type.SERIALIZABLE;
-        if (Bundle.class.isAssignableFrom(cl)) return Store.Type.BUNDLE;
-        return Store.Type.INVALID;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/instancestateutil/Store.java b/app/src/main/java/de/kuschku/util/instancestateutil/Store.java
deleted file mode 100644
index 62a6f531e..000000000
--- a/app/src/main/java/de/kuschku/util/instancestateutil/Store.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.instancestateutil;
-
-import android.support.annotation.NonNull;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Store {
-    @NonNull String name() default "";
-
-    @NonNull Type type() default Type.INVALID;
-
-    enum Type {
-        INVALID,
-        BOOLEAN,
-        BOOLEAN_ARRAY,
-        BYTE,
-        BYTE_ARRAY,
-        CHAR,
-        CHAR_ARRAY,
-        SHORT,
-        SHORT_ARRAY,
-        INT,
-        INT_ARRAY,
-        INTEGER_ARRAYLIST,
-        LONG,
-        LONG_ARRAY,
-        FLOAT,
-        FLOAT_ARRAY,
-        DOUBLE,
-        DOUBLE_ARRAY,
-        STRING,
-        STRING_ARRAY,
-        STRING_ARRAYLIST,
-        CHARSEQUENCE,
-        CHARSEQUENCE_ARRAY,
-        CHARSEQUENCE_ARRAYLIST,
-        PARCELABLE,
-        PARCELABLE_ARRAY,
-        PARCELABLE_ARRAYLIST,
-        SPARSEPARCELABLE_ARRAY,
-        SERIALIZABLE,
-        BUNDLE,
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/IrcCaseMappers.java b/app/src/main/java/de/kuschku/util/irc/IrcCaseMappers.java
deleted file mode 100644
index cd3dd28cc..000000000
--- a/app/src/main/java/de/kuschku/util/irc/IrcCaseMappers.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc;
-
-import android.support.annotation.Nullable;
-
-import java.util.Locale;
-
-public class IrcCaseMappers {
-    public static IrcCaseMapper irc = new UnicodeCaseMapper();
-    public static IrcCaseMapper unicode = new ClassicalIrcCaseMapper();
-
-    private IrcCaseMappers() {
-
-    }
-
-    public interface IrcCaseMapper {
-        boolean equalsIgnoreCase(@Nullable String a, @Nullable String b);
-
-        @Nullable
-        String toLowerCase(@Nullable String in);
-
-        @Nullable
-        String toUpperCase(@Nullable String in);
-    }
-
-    static class UnicodeCaseMapper implements IrcCaseMapper {
-
-        @Override
-        public boolean equalsIgnoreCase(@Nullable String a, @Nullable String b) {
-            if (a == null || b == null)
-                return a == null && b == null;
-            else
-                return a.equalsIgnoreCase(b);
-        }
-
-        @Nullable
-        @Override
-        public String toLowerCase(@Nullable String in) {
-            return in != null ? in.toLowerCase(Locale.US) : null;
-        }
-
-        @Nullable
-        @Override
-        public String toUpperCase(@Nullable String in) {
-            return in != null ? in.toUpperCase(Locale.US) : null;
-        }
-    }
-
-    static class ClassicalIrcCaseMapper implements IrcCaseMapper {
-        @Nullable
-        public String toLowerCase(@Nullable String s) {
-            return s != null ? s.toLowerCase(Locale.US)
-                    .replace('[', '{')
-                    .replace(']', '}')
-                    .replace('^', '~') : null;
-        }
-
-        @Nullable
-        public String toUpperCase(@Nullable String s) {
-            return s != null ? s.toUpperCase(Locale.US)
-                    .replace('{', '[')
-                    .replace('}', ']')
-                    .replace('~', '^') : null;
-        }
-
-        @Override
-        public boolean equalsIgnoreCase(@Nullable String a, @Nullable String b) {
-            if (a == null || b == null)
-                return a == null && b == null;
-            else
-                return toLowerCase(a).equals(toLowerCase(b)) || toUpperCase(a).equals(toUpperCase(b));
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/IrcUserUtils.java b/app/src/main/java/de/kuschku/util/irc/IrcUserUtils.java
deleted file mode 100644
index 47f5ba912..000000000
--- a/app/src/main/java/de/kuschku/util/irc/IrcUserUtils.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc;
-
-import android.support.annotation.NonNull;
-
-import java.nio.charset.Charset;
-import java.util.Locale;
-
-public class IrcUserUtils {
-    private IrcUserUtils() {
-
-    }
-
-    public static int getSenderColor(@NonNull String nick) {
-        nick = trimEnd(nick, '_').toLowerCase(Locale.US);
-        byte[] data = nick.getBytes(Charset.forName("ISO-8859-1"));
-        return (0xf & CRCUtils.qChecksum(data));
-    }
-
-    @NonNull
-    private static String trimEnd(@NonNull String str, char character) {
-        char[] val = str.toCharArray();
-        int len = val.length;
-        while ((0 < len) && (val[len - 1] == character)) {
-            len--;
-        }
-        return ((len < val.length)) ? str.substring(0, len) : str;
-    }
-
-    @NonNull
-    public static String getNick(@NonNull String hostmask) {
-        return hostmask.split("!", -1)[0];
-    }
-
-    @NonNull
-    public static String getUser(@NonNull String hostmask) {
-        return getMask(hostmask).split("@", -1)[0];
-    }
-
-    @NonNull
-    public static String getHost(@NonNull String hostmask) {
-        return getMask(hostmask).split("@", -1)[1];
-    }
-
-    @NonNull
-    public static String getMask(@NonNull String hostmask) {
-        return hostmask.split("!", -1)[1];
-    }
-
-    public static class CRCUtils {
-        private CRCUtils() {
-
-        }
-
-        public static int qChecksum(@NonNull byte[] data) {
-            int crc = 0xffff;
-            int crcHighBitMask = 0x8000;
-
-            for (byte b : data) {
-                int c = reflect(b, 8);
-                for (int j = 0x80; j > 0; j >>= 1) {
-                    int highBit = crc & crcHighBitMask;
-                    crc <<= 1;
-                    if ((c & j) > 0) {
-                        highBit ^= crcHighBitMask;
-                    }
-                    if (highBit > 0) {
-                        crc ^= 0x1021;
-                    }
-                }
-            }
-
-            crc = reflect(crc, 16);
-            crc ^= 0xffff;
-            crc &= 0xffff;
-
-            return crc;
-        }
-
-        private static int reflect(int crc, int n) {
-            int j = 1, crcout = 0;
-            for (int i = (1 << (n - 1)); i > 0; i >>= 1) {
-                if ((crc & i) > 0) {
-                    crcout |= j;
-                }
-                j <<= 1;
-            }
-            return crcout;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/ModeUtils.java b/app/src/main/java/de/kuschku/util/irc/ModeUtils.java
deleted file mode 100644
index 048ee6f5d..000000000
--- a/app/src/main/java/de/kuschku/util/irc/ModeUtils.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.CompatibilityUtils;
-
-public class ModeUtils {
-    @NonNull
-    public static Set<Character> toModes(@Nullable String modes) {
-        Set<Character> modeSet = new HashSet<>();
-        if (modes == null)
-            return modeSet;
-        for (String mode : CompatibilityUtils.partStringByChar(modes)) {
-            if (mode.length() == 1)
-                modeSet.add(toMode(mode));
-        }
-        return modeSet;
-    }
-
-    public static String fromModes(@NonNull Set<Character> d_channelModes) {
-        StringBuilder builder = new StringBuilder(d_channelModes.size());
-        for (char c : d_channelModes) {
-            builder.append(new char[]{c});
-        }
-        return builder.toString();
-    }
-
-    public static char toMode(@NonNull String mode) {
-        return mode.charAt(0);
-    }
-
-    public static String fromMode(char ch) {
-        return String.copyValueOf(new char[]{ch});
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/AbstractIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/AbstractIrcModeProvider.java
deleted file mode 100644
index ae23997cf..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/AbstractIrcModeProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-public abstract class AbstractIrcModeProvider implements IrcModeProvider {
-
-    @Override
-    public int matchQuality(Set<Character> modes) {
-        HashSet<Character> diff = new HashSet<>();
-        for (char c : modes) {
-            if (!supportedModes().contains(c))
-                diff.add(c);
-        }
-        for (char c : supportedModes()) {
-            if (!modes.contains(c))
-                diff.add(c);
-        }
-        return (diff.size());
-    }
-
-    public Set<ChanMode> modesFromString(String chanModes) {
-        Set<ChanMode> result = new HashSet<>();
-        for (char c : chanModes.toCharArray()) {
-            ChanMode mode = modeFromChar(c);
-            if (mode != null)
-                result.add(mode);
-        }
-        return result;
-    }
-
-    protected abstract Collection<Character> supportedModes();
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java
deleted file mode 100644
index da14888e4..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/ChanMode.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes;
-
-public enum ChanMode {
-    ALLOW_FORWARD,
-    ALLOW_INVITE,
-    ANTIFLOOD,
-    AUDITORIUM,
-    BLOCK_ACTION,
-    BLOCK_AUTOREJOIN,
-    BLOCK_CAPS,
-    BLOCK_CTCP,
-    BLOCK_COLOR,
-    BLOCK_EXTERNAL,
-    BLOCK_FORWARDING,
-    BLOCK_KICK,
-    BLOCK_KNOCK,
-    BLOCK_NICKCHANGE,
-    BLOCK_NOTICE,
-    BLOCK_REPEAT,
-    BLOCK_UNIDENTIFIED,
-    CENSOR,
-    DISABLE_INVITE,
-    HIDE_JOINS,
-    IS_SECURE,
-    JOIN_THROTTLE,
-    LIMIT,
-    MODERATED,
-    ONLY_HELPOPER,
-    ONLY_INVITE,
-    ONLY_OPER,
-    ONLY_ADMIN,
-    ONLY_SSL,
-    PARANOID,
-    PASSWORD,
-    PERMANENT,
-    QUIET_UNIDENTIFIED,
-    REDUCED_MODERATION,
-    REGISTERED,
-    RESTRICT_TOPIC,
-    STRIP_COLOR,
-    UNLISTED,
-    FORWARD,
-    BAN,
-    BAN_EXCEPTION,
-    INVITE_EXCEPTION,
-    MUTE
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java
deleted file mode 100644
index afc4c58e2..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes;
-
-import java.util.Set;
-
-public interface IrcModeProvider {
-    ChanMode modeFromChar(char mode);
-
-    char charFromMode(ChanMode mode);
-
-    int matchQuality(Set<Character> modes);
-
-    Set<ChanMode> modesFromString(String chanModes);
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java
deleted file mode 100644
index 70a613206..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/IrcModeProviderFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.impl.CharybdisIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.DalIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.DancerIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.FqIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.HybridIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.HyperionIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.InspireIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.NeoIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.ShadowIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.SolidIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.impl.UnrealIrcModeProvider;
-
-public class IrcModeProviderFactory {
-    private static final List<IrcModeProvider> servers = Arrays.asList(
-            new CharybdisIrcModeProvider(),
-            new DalIrcModeProvider(),
-            new DancerIrcModeProvider(),
-            new FqIrcModeProvider(),
-            new HybridIrcModeProvider(),
-            new HyperionIrcModeProvider(),
-            new InspireIrcModeProvider(),
-            new NeoIrcModeProvider(),
-            new ShadowIrcModeProvider(),
-            new SolidIrcModeProvider(),
-            new UnrealIrcModeProvider()
-    );
-
-    private static Set<Character> toModeSet(String chanModes) {
-        if (chanModes == null) chanModes = "";
-        String replaced = chanModes.replaceAll(",", "");
-        Set<Character> modeSet = new HashSet<>();
-        for (char c : replaced.toCharArray()) {
-            modeSet.add(c);
-        }
-        return modeSet;
-    }
-
-    public static IrcModeProvider identifyServer(String modeString) {
-        return identifyServer(toModeSet(modeString));
-    }
-
-    public static IrcModeProvider identifyServer(Set<Character> characters) {
-        IrcModeProvider bestMatch = null;
-        int bestMatchCount = Integer.MAX_VALUE;
-
-        for (IrcModeProvider server : servers) {
-            int matchQuality = server.matchQuality(characters);
-            if (bestMatchCount > matchQuality) {
-                bestMatch = server;
-                bestMatchCount = matchQuality;
-            }
-        }
-
-        return bestMatch;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java
deleted file mode 100644
index bcd9a8f1b..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/BewareIrcModeProvider.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class BewareIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'C', 'c', 'i', 'k', 'l', 'm', 'n', 'p', 's', 't'
-    ));
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'C':
-                return BLOCK_CTCP;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case BLOCK_CTCP:
-                return 'C';
-            case BLOCK_COLOR:
-                return 'c';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java
deleted file mode 100644
index fee25f5c3..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/CharybdisIrcModeProvider.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_FORWARD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MUTE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_ADMIN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class CharybdisIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'A', 'C', 'F', 'O', 'P', 'Q', 'S', 'T', 'c', 'f', 'g', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'A':
-                return ONLY_ADMIN;
-            case 'C':
-                return BLOCK_CTCP;
-            case 'F':
-                return ALLOW_FORWARD;
-            case 'O':
-                return ONLY_OPER;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_FORWARDING;
-            case 'S':
-                return ONLY_SSL;
-            case 'T':
-                return BLOCK_NOTICE;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'f':
-                return FORWARD;
-            case 'g':
-                return ALLOW_INVITE;
-            case 'i':
-                return ONLY_INVITE;
-            case 'j':
-                return JOIN_THROTTLE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return BLOCK_UNIDENTIFIED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'z':
-                return REDUCED_MODERATION;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-            case 'q':
-                return MUTE;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case ONLY_ADMIN:
-                return 'A';
-            case BLOCK_CTCP:
-                return 'C';
-            case ALLOW_FORWARD:
-                return 'F';
-            case ONLY_OPER:
-                return 'O';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_FORWARDING:
-                return 'Q';
-            case ONLY_SSL:
-                return 'S';
-            case BLOCK_NOTICE:
-                return 'T';
-            case BLOCK_COLOR:
-                return 'c';
-            case FORWARD:
-                return 'f';
-            case ALLOW_INVITE:
-                return 'g';
-            case ONLY_INVITE:
-                return 'i';
-            case JOIN_THROTTLE:
-                return 'j';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case BLOCK_UNIDENTIFIED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case REDUCED_MODERATION:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-            case MUTE:
-                return 'q';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java
deleted file mode 100644
index 20bcb0f0f..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DalIrcModeProvider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class DalIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'A', 'M', 'O', 'R', 'S', 'c', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'A':
-                return AUDITORIUM;
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'O':
-                return ONLY_OPER;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return ONLY_SSL;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'i':
-                return ONLY_INVITE;
-            case 'j':
-                return JOIN_THROTTLE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case AUDITORIUM:
-                return 'A';
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case ONLY_OPER:
-                return 'O';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case ONLY_SSL:
-                return 'S';
-            case BLOCK_COLOR:
-                return 'c';
-            case ONLY_INVITE:
-                return 'i';
-            case JOIN_THROTTLE:
-                return 'j';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java
deleted file mode 100644
index d4ab60753..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/DancerIrcModeProvider.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class DancerIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'J', 'P', 'Q', 'R', 'c', 'g', 'i', 'k', 'l', 'm', 'n', 'r', 's', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'J':
-                return JOIN_THROTTLE;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_FORWARDING;
-            case 'R':
-                return QUIET_UNIDENTIFIED;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'g':
-                return ALLOW_INVITE;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'r':
-                return BLOCK_UNIDENTIFIED;
-            case 's':
-                return UNLISTED;
-            case 'z':
-                return REDUCED_MODERATION;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case JOIN_THROTTLE:
-                return 'J';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_FORWARDING:
-                return 'Q';
-            case QUIET_UNIDENTIFIED:
-                return 'R';
-            case BLOCK_COLOR:
-                return 'c';
-            case ALLOW_INVITE:
-                return 'g';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case BLOCK_UNIDENTIFIED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case REDUCED_MODERATION:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java
deleted file mode 100644
index 8f67ed5c5..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/FqIrcModeProvider.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class FqIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'M', 'O', 'R', 'S', 'c', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'O':
-                return ONLY_OPER;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return ONLY_SSL;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'i':
-                return ONLY_INVITE;
-            case 'j':
-                return JOIN_THROTTLE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'q':
-                return BLOCK_UNIDENTIFIED;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case ONLY_OPER:
-                return 'O';
-            case ONLY_SSL:
-                return 'S';
-            case BLOCK_COLOR:
-                return 'c';
-            case ONLY_INVITE:
-                return 'i';
-            case JOIN_THROTTLE:
-                return 'j';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case BLOCK_UNIDENTIFIED:
-                return 'q';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java
deleted file mode 100644
index 13354aa50..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HybridIrcModeProvider.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class HybridIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'M', 'O', 'R', 'S', 'c', 'i', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'O':
-                return ONLY_OPER;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return ONLY_SSL;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case ONLY_OPER:
-                return 'O';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case ONLY_SSL:
-                return 'S';
-            case BLOCK_COLOR:
-                return 'c';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java
deleted file mode 100644
index e4dffc37c..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/HyperionIrcModeProvider.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class HyperionIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'Q', 'R', 'c', 'g', 'i', 'k', 'l', 'm', 'n', 'r', 's', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'Q':
-                return BLOCK_FORWARDING;
-            case 'R':
-                return QUIET_UNIDENTIFIED;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'g':
-                return ALLOW_INVITE;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'r':
-                return BLOCK_UNIDENTIFIED;
-            case 's':
-                return UNLISTED;
-            case 'z':
-                return REDUCED_MODERATION;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case BLOCK_FORWARDING:
-                return 'Q';
-            case QUIET_UNIDENTIFIED:
-                return 'R';
-            case BLOCK_COLOR:
-                return 'c';
-            case ALLOW_INVITE:
-                return 'g';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case BLOCK_UNIDENTIFIED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case REDUCED_MODERATION:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java
deleted file mode 100644
index 15a33499e..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/InspireIrcModeProvider.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.HIDE_JOINS;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class InspireIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'A', 'B', 'C', 'D', 'G', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'c', 'f', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'u', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'A':
-                return ALLOW_INVITE;
-            case 'B':
-                return BLOCK_CAPS;
-            case 'C':
-                return BLOCK_CTCP;
-            case 'D':
-                return HIDE_JOINS;
-            case 'G':
-                return CENSOR;
-            case 'K':
-                return BLOCK_KNOCK;
-            case 'L':
-                return FORWARD;
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'N':
-                return BLOCK_NICKCHANGE;
-            case 'O':
-                return ONLY_OPER;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_KICK;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return STRIP_COLOR;
-            case 'T':
-                return BLOCK_NOTICE;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'f':
-                return ANTIFLOOD;
-            case 'i':
-                return ONLY_INVITE;
-            case 'j':
-                return JOIN_THROTTLE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'u':
-                return AUDITORIUM;
-            case 'z':
-                return ONLY_SSL;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case ALLOW_INVITE:
-                return 'A';
-            case BLOCK_CAPS:
-                return 'B';
-            case BLOCK_CTCP:
-                return 'C';
-            case HIDE_JOINS:
-                return 'D';
-            case CENSOR:
-                return 'G';
-            case BLOCK_KNOCK:
-                return 'K';
-            case FORWARD:
-                return 'L';
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case BLOCK_NICKCHANGE:
-                return 'N';
-            case ONLY_OPER:
-                return 'O';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_KICK:
-                return 'Q';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case STRIP_COLOR:
-                return 'S';
-            case BLOCK_NOTICE:
-                return 'T';
-            case BLOCK_COLOR:
-                return 'c';
-            case ANTIFLOOD:
-                return 'f';
-            case ONLY_INVITE:
-                return 'i';
-            case JOIN_THROTTLE:
-                return 'j';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case AUDITORIUM:
-                return 'u';
-            case ONLY_SSL:
-                return 'z';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java
deleted file mode 100644
index 1048d3e99..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NeoIrcModeProvider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class NeoIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'M', 'N', 'O', 'P', 'Q', 'R', 'V', 'i', 'k', 'l', 'm', 'n', 'r', 's', 't', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'N':
-                return BLOCK_NICKCHANGE;
-            case 'O':
-                return ONLY_OPER;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_KICK;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'V':
-                return DISABLE_INVITE;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'z':
-                return ONLY_SSL;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case BLOCK_NICKCHANGE:
-                return 'N';
-            case ONLY_OPER:
-                return 'O';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_KICK:
-                return 'Q';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case DISABLE_INVITE:
-                return 'V';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case ONLY_SSL:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java
deleted file mode 100644
index 0d97b55a9..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/NightstarIrcModeProvider.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class NightstarIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'C', 'i', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't'
-    ));
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'C':
-                return BLOCK_COLOR;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case BLOCK_COLOR:
-                return 'C';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java
deleted file mode 100644
index 99cff9cda..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/RfcIrcModeProvider.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class RfcIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'p', 's', 'i', 't', 'n', 'm', 'l', 'k'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'p':
-                return PARANOID;
-            case 's':
-                return UNLISTED;
-            case 'i':
-                return ONLY_INVITE;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'm':
-                return MODERATED;
-            case 'l':
-                return LIMIT;
-            case 'k':
-                return PASSWORD;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case PARANOID:
-                return 'p';
-            case UNLISTED:
-                return 's';
-            case ONLY_INVITE:
-                return 'i';
-            case RESTRICT_TOPIC:
-                return 't';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case MODERATED:
-                return 'm';
-            case LIMIT:
-                return 'l';
-            case PASSWORD:
-                return 'k';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java
deleted file mode 100644
index 871708455..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/ShadowIrcModeProvider.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_FORWARD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ALLOW_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_ACTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_AUTOREJOIN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_FORWARDING;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_REPEAT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.JOIN_THROTTLE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_ADMIN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REDUCED_MODERATION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class ShadowIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'A', 'C', 'D', 'E', 'F', 'G', 'J', 'K', 'O', 'P', 'Q', 'S', 'T', 'c', 'd', 'g', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'A':
-                return ONLY_ADMIN;
-            case 'C':
-                return BLOCK_CTCP;
-            case 'D':
-                return BLOCK_ACTION;
-            case 'E':
-                return BLOCK_KICK;
-            case 'F':
-                return ALLOW_FORWARD;
-            case 'G':
-                return BLOCK_CAPS;
-            case 'J':
-                return BLOCK_AUTOREJOIN;
-            case 'K':
-                return BLOCK_REPEAT;
-            case 'O':
-                return ONLY_OPER;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_FORWARDING;
-            case 'S':
-                return ONLY_SSL;
-            case 'T':
-                return BLOCK_NOTICE;
-            case 'c':
-                return STRIP_COLOR;
-            case 'd':
-                return BLOCK_NICKCHANGE;
-            case 'g':
-                return ALLOW_INVITE;
-            case 'i':
-                return ONLY_INVITE;
-            case 'j':
-                return JOIN_THROTTLE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return BLOCK_UNIDENTIFIED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'z':
-                return REDUCED_MODERATION;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case ONLY_ADMIN:
-                return 'A';
-            case BLOCK_CTCP:
-                return 'C';
-            case BLOCK_ACTION:
-                return 'D';
-            case BLOCK_KICK:
-                return 'E';
-            case ALLOW_FORWARD:
-                return 'F';
-            case BLOCK_CAPS:
-                return 'G';
-            case BLOCK_AUTOREJOIN:
-                return 'J';
-            case BLOCK_REPEAT:
-                return 'K';
-            case ONLY_OPER:
-                return 'O';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_FORWARDING:
-                return 'Q';
-            case ONLY_SSL:
-                return 'S';
-            case BLOCK_NOTICE:
-                return 'T';
-            case STRIP_COLOR:
-                return 'c';
-            case BLOCK_NICKCHANGE:
-                return 'd';
-            case ALLOW_INVITE:
-                return 'g';
-            case ONLY_INVITE:
-                return 'i';
-            case JOIN_THROTTLE:
-                return 'j';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case BLOCK_UNIDENTIFIED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case REDUCED_MODERATION:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java
deleted file mode 100644
index 39b90fe6f..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/SolidIrcModeProvider.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.AUDITORIUM;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CAPS;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class SolidIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'B', 'C', 'G', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'c', 'f', 'i', 'k', 'l', 'm', 'n', 'p', 's', 't', 'u', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'B':
-                return BLOCK_CAPS;
-            case 'C':
-                return BLOCK_CTCP;
-            case 'G':
-                return CENSOR;
-            case 'K':
-                return BLOCK_KNOCK;
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'N':
-                return BLOCK_NICKCHANGE;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_KICK;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return STRIP_COLOR;
-            case 'T':
-                return BLOCK_NOTICE;
-            case 'V':
-                return DISABLE_INVITE;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'f':
-                return ANTIFLOOD;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'u':
-                return AUDITORIUM;
-            case 'z':
-                return ONLY_SSL;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case BLOCK_CAPS:
-                return 'B';
-            case BLOCK_CTCP:
-                return 'C';
-            case CENSOR:
-                return 'G';
-            case BLOCK_KNOCK:
-                return 'K';
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case BLOCK_NICKCHANGE:
-                return 'N';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_KICK:
-                return 'Q';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case STRIP_COLOR:
-                return 'S';
-            case BLOCK_NOTICE:
-                return 'T';
-            case DISABLE_INVITE:
-                return 'V';
-            case BLOCK_COLOR:
-                return 'c';
-            case ANTIFLOOD:
-                return 'f';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case AUDITORIUM:
-                return 'u';
-            case ONLY_SSL:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java
deleted file mode 100644
index d9d96d9a9..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UndernetIrcModeProvider.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class UndernetIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'i', 'k', 'l', 'm', 'n', 'p', 's', 't'
-    ));
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java b/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java
deleted file mode 100644
index cf2007761..000000000
--- a/app/src/main/java/de/kuschku/util/irc/chanmodes/impl/UnrealIrcModeProvider.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.chanmodes.impl;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.irc.chanmodes.AbstractIrcModeProvider;
-import de.kuschku.util.irc.chanmodes.ChanMode;
-
-import static de.kuschku.util.irc.chanmodes.ChanMode.ANTIFLOOD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BAN_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_CTCP;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_EXTERNAL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KICK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_KNOCK;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NICKCHANGE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_NOTICE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.BLOCK_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.CENSOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.DISABLE_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.FORWARD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.INVITE_EXCEPTION;
-import static de.kuschku.util.irc.chanmodes.ChanMode.IS_SECURE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.LIMIT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.MODERATED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_INVITE;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_OPER;
-import static de.kuschku.util.irc.chanmodes.ChanMode.ONLY_SSL;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PARANOID;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PASSWORD;
-import static de.kuschku.util.irc.chanmodes.ChanMode.PERMANENT;
-import static de.kuschku.util.irc.chanmodes.ChanMode.QUIET_UNIDENTIFIED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.REGISTERED;
-import static de.kuschku.util.irc.chanmodes.ChanMode.RESTRICT_TOPIC;
-import static de.kuschku.util.irc.chanmodes.ChanMode.STRIP_COLOR;
-import static de.kuschku.util.irc.chanmodes.ChanMode.UNLISTED;
-
-public class UnrealIrcModeProvider extends AbstractIrcModeProvider {
-
-    protected final Set<Character> supportedModes = new HashSet<>(Arrays.asList(
-            'C', 'F', 'G', 'K', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'V', 'Z', 'c', 'f', 'i', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'z'
-    ));
-
-    @Override
-    public ChanMode modeFromChar(char mode) {
-        switch (mode) {
-            case 'C':
-                return BLOCK_CTCP;
-            case 'F':
-                return FORWARD;
-            case 'G':
-                return CENSOR;
-            case 'K':
-                return BLOCK_KNOCK;
-            case 'M':
-                return QUIET_UNIDENTIFIED;
-            case 'N':
-                return BLOCK_NICKCHANGE;
-            case 'O':
-                return ONLY_OPER;
-            case 'P':
-                return PERMANENT;
-            case 'Q':
-                return BLOCK_KICK;
-            case 'R':
-                return BLOCK_UNIDENTIFIED;
-            case 'S':
-                return STRIP_COLOR;
-            case 'T':
-                return BLOCK_NOTICE;
-            case 'V':
-                return DISABLE_INVITE;
-            case 'Z':
-                return IS_SECURE;
-            case 'c':
-                return BLOCK_COLOR;
-            case 'f':
-                return ANTIFLOOD;
-            case 'i':
-                return ONLY_INVITE;
-            case 'k':
-                return PASSWORD;
-            case 'l':
-                return LIMIT;
-            case 'm':
-                return MODERATED;
-            case 'n':
-                return BLOCK_EXTERNAL;
-            case 'p':
-                return PARANOID;
-            case 'r':
-                return REGISTERED;
-            case 's':
-                return UNLISTED;
-            case 't':
-                return RESTRICT_TOPIC;
-            case 'z':
-                return ONLY_SSL;
-
-            case 'b':
-                return BAN;
-            case 'e':
-                return BAN_EXCEPTION;
-            case 'I':
-                return INVITE_EXCEPTION;
-        }
-        return null;
-    }
-
-    @Override
-    public char charFromMode(ChanMode mode) {
-        switch (mode) {
-            case BLOCK_CTCP:
-                return 'C';
-            case FORWARD:
-                return 'F';
-            case CENSOR:
-                return 'G';
-            case BLOCK_KNOCK:
-                return 'K';
-            case QUIET_UNIDENTIFIED:
-                return 'M';
-            case BLOCK_NICKCHANGE:
-                return 'N';
-            case ONLY_OPER:
-                return 'O';
-            case PERMANENT:
-                return 'P';
-            case BLOCK_KICK:
-                return 'Q';
-            case BLOCK_UNIDENTIFIED:
-                return 'R';
-            case STRIP_COLOR:
-                return 'S';
-            case BLOCK_NOTICE:
-                return 'T';
-            case DISABLE_INVITE:
-                return 'V';
-            case IS_SECURE:
-                return 'Z';
-            case BLOCK_COLOR:
-                return 'c';
-            case ANTIFLOOD:
-                return 'f';
-            case ONLY_INVITE:
-                return 'i';
-            case PASSWORD:
-                return 'k';
-            case LIMIT:
-                return 'l';
-            case MODERATED:
-                return 'm';
-            case BLOCK_EXTERNAL:
-                return 'n';
-            case PARANOID:
-                return 'p';
-            case REGISTERED:
-                return 'r';
-            case UNLISTED:
-                return 's';
-            case RESTRICT_TOPIC:
-                return 't';
-            case ONLY_SSL:
-                return 'z';
-
-            case BAN:
-                return 'b';
-            case BAN_EXCEPTION:
-                return 'e';
-            case INVITE_EXCEPTION:
-                return 'I';
-        }
-        return ' ';
-    }
-
-    @Override
-    protected Collection<Character> supportedModes() {
-        return supportedModes;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
deleted file mode 100644
index d67fe3eee..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatDeserializer.java
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format;
-
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.style.UnderlineSpan;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcBoldSpan;
-import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcItalicSpan;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-/**
- * A helper class to turn mIRC formatted Strings into Android’s SpannableStrings with the same
- * color and format codes
- */
-public class IrcFormatDeserializer {
-    public static final int CODE_BOLD = 0x02;
-    public static final int CODE_COLOR = 0x03;
-    public static final int CODE_ITALIC = 0x1D;
-    public static final int CODE_UNDERLINE = 0x1F;
-    public static final int CODE_SWAP = 0x16;
-    public static final int CODE_RESET = 0x0F;
-
-    private final AppContext context;
-
-    public IrcFormatDeserializer(AppContext context) {
-        this.context = context;
-    }
-
-    /**
-     * Try to read a number from a String in specified bounds
-     *
-     * @param str   String to be read from
-     * @param start Start index (inclusive)
-     * @param end   End index (exclusive)
-     * @return The byte represented by the digits read from the string
-     */
-    public static byte readNumber(@NonNull String str, int start, int end) {
-        String result = str.substring(start, end);
-        if (result.isEmpty())
-            return -1;
-        else
-            return (byte) Integer.parseInt(result, 10);
-    }
-
-    /**
-     * @param str   String to be searched in
-     * @param start Start position (inclusive)
-     * @return Index of first character that is not a digit
-     */
-    private static int findEndOfNumber(@NonNull String str, int start) {
-        Set<Character> validCharCodes = new HashSet<>(Arrays.asList('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'));
-        String searchFrame = str.substring(start);
-        int i;
-        for (i = 0; i < 2 && i < searchFrame.length(); i++) {
-            if (!validCharCodes.contains(searchFrame.charAt(i))) {
-                break;
-            }
-        }
-        return start + i;
-    }
-
-    @Nullable
-    private static IrcFormat fromId(char id) {
-        switch (id) {
-            case CODE_BOLD:
-                return new BoldIrcFormat();
-            case CODE_ITALIC:
-                return new ItalicIrcFormat();
-            case CODE_UNDERLINE:
-                return new UnderlineIrcFormat();
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * Function to handle mIRC formatted strings
-     *
-     * @param str mIRC formatted String
-     * @return a CharSequence with Android’s span format representing the input string
-     */
-    @NonNull
-    public CharSequence formatString(@Nullable String str) {
-        if (str == null) return "";
-
-        SpannableStringBuilder plainText = new SpannableStringBuilder();
-        FormatDescription bold = null;
-        FormatDescription italic = null;
-        FormatDescription underline = null;
-        FormatDescription color = null;
-        boolean colorize = context.settings().preferenceColors.get();
-
-        // Iterating over every character
-        int normalCount = 0;
-        for (int i = 0; i < str.length(); i++) {
-            char character = str.charAt(i);
-            switch (character) {
-                case CODE_BOLD: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    // If there is an element on stack with the same code, close it
-                    if (bold != null) {
-                        if (colorize) bold.apply(plainText, plainText.length());
-                        bold = null;
-                        // Otherwise create a new one
-                    } else {
-                        IrcFormat format = fromId(character);
-                        assertNotNull(format);
-                        bold = new FormatDescription(plainText.length(), format);
-                    }
-                }
-                break;
-                case CODE_ITALIC: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    // If there is an element on stack with the same code, close it
-                    if (italic != null) {
-                        if (colorize) italic.apply(plainText, plainText.length());
-                        italic = null;
-                        // Otherwise create a new one
-                    } else {
-                        IrcFormat format = fromId(character);
-                        assertNotNull(format);
-                        italic = new FormatDescription(plainText.length(), format);
-                    }
-                }
-                break;
-                case CODE_UNDERLINE: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    // If there is an element on stack with the same code, close it
-                    if (underline != null) {
-                        if (colorize) underline.apply(plainText, plainText.length());
-                        underline = null;
-                        // Otherwise create a new one
-                    } else {
-                        IrcFormat format = fromId(character);
-                        assertNotNull(format);
-                        underline = new FormatDescription(plainText.length(), format);
-                    }
-                }
-                break;
-                case CODE_COLOR: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    int foregroundStart = i + 1;
-                    int foregroundEnd = findEndOfNumber(str, foregroundStart);
-                    // If we have a foreground element
-                    if (foregroundEnd > foregroundStart) {
-                        byte foreground = readNumber(str, foregroundStart, foregroundEnd);
-
-                        byte background = -1;
-                        int backgroundEnd = -1;
-                        // If we have a background code, read it
-                        if (str.length() > foregroundEnd && str.charAt(foregroundEnd) == ',') {
-                            backgroundEnd = findEndOfNumber(str, foregroundEnd + 1);
-                            background = readNumber(str, foregroundEnd + 1, backgroundEnd);
-                        }
-                        // If previous element was also a color element, try to reuse background
-                        if (color != null) {
-                            // Apply old format
-                            if (colorize) color.apply(plainText, plainText.length());
-                            // Reuse old background, if possible
-                            if (background == -1)
-                                background = ((ColorIrcFormat) color.format).background;
-                        }
-                        // Add new format
-                        color = new FormatDescription(plainText.length(), new ColorIrcFormat(foreground, background));
-
-                        // i points in front of the next character
-                        i = ((backgroundEnd == -1) ? foregroundEnd : backgroundEnd) - 1;
-
-                        // Otherwise assume this is a closing tag
-                    } else if (color != null) {
-                        if (colorize) color.apply(plainText, plainText.length());
-                        color = null;
-                    }
-                }
-                break;
-                case CODE_SWAP: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    // If we have a color tag before, apply it, and create a new one with swapped colors
-                    if (color != null) {
-                        if (colorize) color.apply(plainText, plainText.length());
-                        color = new FormatDescription(plainText.length(), ((ColorIrcFormat) color.format).copySwapped());
-                    }
-                }
-                break;
-                case CODE_RESET: {
-                    plainText.append(str.substring(i - normalCount, i));
-                    normalCount = 0;
-
-                    // End all formatting tags
-                    if (bold != null) {
-                        if (colorize) bold.apply(plainText, plainText.length());
-                        bold = null;
-                    }
-                    if (italic != null) {
-                        if (colorize) italic.apply(plainText, plainText.length());
-                        italic = null;
-                    }
-                    if (underline != null) {
-                        if (colorize) underline.apply(plainText, plainText.length());
-                        underline = null;
-                    }
-                    if (color != null) {
-                        if (colorize) color.apply(plainText, plainText.length());
-                        color = null;
-                    }
-                }
-                break;
-                default: {
-                    // Just append it, if it’s not special
-                    normalCount++;
-                }
-            }
-        }
-
-        // End all formatting tags
-        if (bold != null) {
-            if (colorize) bold.apply(plainText, plainText.length());
-        }
-        if (italic != null) {
-            if (colorize) italic.apply(plainText, plainText.length());
-        }
-        if (underline != null) {
-            if (colorize) underline.apply(plainText, plainText.length());
-        }
-        if (color != null) {
-            if (colorize) color.apply(plainText, plainText.length());
-        }
-        plainText.append(str.substring(str.length() - normalCount, str.length()));
-        return plainText;
-    }
-
-    private interface IrcFormat {
-        void applyTo(@NonNull SpannableStringBuilder editable, int from, int to);
-
-        byte id();
-    }
-
-    private static class FormatDescription {
-        public final int start;
-        @NonNull
-        public final IrcFormat format;
-
-        public FormatDescription(int start, @NonNull IrcFormat format) {
-            this.start = start;
-            this.format = format;
-        }
-
-        public void apply(@NonNull SpannableStringBuilder editable, int end) {
-            format.applyTo(editable, start, end);
-        }
-    }
-
-    private static class ItalicIrcFormat implements IrcFormat {
-        @Override
-        public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            editable.setSpan(new IrcItalicSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        }
-
-        @Override
-        public byte id() {
-            return CODE_ITALIC;
-        }
-    }
-
-    private static class UnderlineIrcFormat implements IrcFormat {
-        @Override
-        public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            editable.setSpan(new UnderlineSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        }
-
-        @Override
-        public byte id() {
-            return CODE_UNDERLINE;
-        }
-    }
-
-    private static class BoldIrcFormat implements IrcFormat {
-        @Override
-        public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            editable.setSpan(new IrcBoldSpan(), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        }
-
-        @Override
-        public byte id() {
-            return CODE_BOLD;
-        }
-    }
-
-    private class ColorIrcFormat implements IrcFormat {
-        private final byte foreground;
-        private final byte background;
-
-        public ColorIrcFormat(byte foreground, byte background) {
-            this.foreground = foreground;
-            this.background = background;
-        }
-
-        @Override
-        public void applyTo(@NonNull SpannableStringBuilder editable, int from, int to) {
-            int[] mircColors = context.themeUtil().res.mircColors;
-            if (foreground != -1 && foreground != 99) {
-                editable.setSpan(new IrcForegroundColorSpan(foreground, mircColors[foreground % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-            }
-            if (background != -1 && background != 99) {
-                editable.setSpan(new IrcBackgroundColorSpan(background, mircColors[background % 16]), from, to, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-            }
-        }
-
-        @NonNull
-        public ColorIrcFormat copySwapped() {
-            return new ColorIrcFormat(background, foreground);
-        }
-
-        @Override
-        public byte id() {
-            return CODE_COLOR;
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
deleted file mode 100644
index 970ad4030..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatHelper.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format;
-
-
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Typeface;
-import android.net.Uri;
-import android.provider.Browser;
-import android.support.annotation.NonNull;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.style.ClickableSpan;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.StyleSpan;
-import android.util.Log;
-import android.view.View;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import de.kuschku.libquassel.client.Client;
-import de.kuschku.libquassel.localtypes.buffers.Buffer;
-import de.kuschku.libquassel.message.Message;
-import de.kuschku.libquassel.primitives.types.BufferInfo;
-import de.kuschku.libquassel.syncables.types.interfaces.QIrcChannel;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.IrcUserUtils;
-
-public class IrcFormatHelper {
-    @NonNull
-    private static final String scheme = "(?:(?:mailto:|(?:[+.-]?\\w)+://)|www(?=\\.\\S+\\.))";
-    @NonNull
-    private static final String authority = "(?:(?:[,.;@:]?[-\\w]+)+\\.?|\\[[0-9a-f:.]+\\])(?::\\d+)?";
-    @NonNull
-    private static final String urlChars = "(?:[,.;:]*[\\w~@/?&=+$()!%#*-])";
-    @NonNull
-    private static final String urlEnd = "((?:>|[,.;:\"]*\\s|\\b|$))";
-    @NonNull
-    private static final Pattern urlPattern = Pattern.compile(String.format("\\b(%s%s(?:/%s*)?)%s", scheme, authority, urlChars, urlEnd), Pattern.CASE_INSENSITIVE);
-    @NonNull
-    private static final Pattern channelPattern = Pattern.compile("((?:#|![A-Z0-9]{5})[^,:\\s]+(?::[^,:\\s]+)?)\\b", Pattern.CASE_INSENSITIVE);
-
-    @NonNull
-    private final AppContext context;
-
-    public IrcFormatHelper(@NonNull AppContext context) {
-        this.context = context;
-    }
-
-    @NonNull
-    public CharSequence formatUserNick(@NonNull String nick) {
-        int colorIndex = IrcUserUtils.getSenderColor(nick);
-        int color = context.themeUtil().res.senderColors[colorIndex];
-
-        SpannableString str = new SpannableString(nick);
-        str.setSpan(new ForegroundColorSpan(color), 0, nick.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        str.setSpan(new StyleSpan(Typeface.BOLD), 0, nick.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        return str;
-    }
-
-    @NonNull
-    public CharSequence formatIrcMessage(@NonNull Client client, @NonNull Message message) {
-        return formatIrcMessage(client, message.content, message.bufferInfo, null);
-    }
-
-    @NonNull
-    public CharSequence formatIrcMessage(@NonNull Client client, @NonNull String text, BufferInfo bufferInfo, View.OnClickListener listener) {
-        List<FutureClickableSpan> spans = new LinkedList<>();
-
-        SpannableString str = new SpannableString(context.deserializer().formatString(text));
-        Matcher urlMatcher = urlPattern.matcher(str);
-        while (urlMatcher.find()) {
-            spans.add(new FutureClickableSpan(new CustomURLSpan(urlMatcher.group(1)), urlMatcher.start(), urlMatcher.start() + urlMatcher.group(1).length()));
-        }
-        Matcher channelMatcher = channelPattern.matcher(str);
-        while (channelMatcher.find()) {
-            QIrcChannel channel = client.networkManager().network(bufferInfo.networkId).ircChannel(channelMatcher.group());
-            Buffer buffer = client.bufferManager().channel(channel);
-            if (buffer != null)
-                spans.add(new FutureClickableSpan(new ChannelSpan(client, buffer.getInfo().id, listener), channelMatcher.start(), channelMatcher.end()));
-        }
-        for (FutureClickableSpan span : spans) {
-            str.setSpan(span.span, span.start, span.end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-        }
-        return str;
-    }
-
-    private static class FutureClickableSpan {
-        @NonNull
-        public final ClickableSpan span;
-        public final int start;
-        public final int end;
-
-        public FutureClickableSpan(@NonNull ClickableSpan span, int start, int end) {
-            this.span = span;
-            this.start = start;
-            this.end = end;
-        }
-    }
-
-    private static class CustomURLSpan extends ClickableSpan {
-        private final String mURL;
-
-        public CustomURLSpan(@NonNull String url) {
-            mURL = url;
-        }
-
-        @Override
-        public void onClick(View widget) {
-            Uri uri = Uri.parse(mURL);
-            Context context = widget.getContext();
-            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-            intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
-            try {
-                context.startActivity(intent);
-            } catch (ActivityNotFoundException e) {
-                Log.w("URLSpan", "Actvity was not found for intent, " + intent.toString());
-            }
-        }
-    }
-
-    private class ChannelSpan extends ClickableSpan {
-        @NonNull
-        private final Client client;
-        private final int bufferid;
-        private final View.OnClickListener listener;
-
-        public ChannelSpan(@NonNull Client client, int bufferid, View.OnClickListener listener) {
-            this.client = client;
-            this.bufferid = bufferid;
-            this.listener = listener;
-        }
-
-        @Override
-        public void onClick(View widget) {
-            client.backlogManager().open(bufferid);
-            if (listener != null)
-                listener.onClick(widget);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java b/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
deleted file mode 100644
index f2de6ec06..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/IrcFormatSerializer.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format;
-
-import android.support.annotation.NonNull;
-import android.text.Spanned;
-import android.text.style.BackgroundColorSpan;
-import android.text.style.CharacterStyle;
-import android.text.style.ForegroundColorSpan;
-import android.text.style.UnderlineSpan;
-
-import java.util.Locale;
-
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.irc.format.spans.IrcBackgroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcBoldSpan;
-import de.kuschku.util.irc.format.spans.IrcForegroundColorSpan;
-import de.kuschku.util.irc.format.spans.IrcItalicSpan;
-
-public class IrcFormatSerializer {
-    public static final char CODE_BOLD = 0x02;
-    public static final char CODE_COLOR = 0x03;
-    public static final char CODE_ITALIC = 0x1D;
-    public static final char CODE_UNDERLINE = 0x1F;
-    public static final char CODE_SWAP = 0x16;
-    public static final char CODE_RESET = 0x0F;
-
-    private final AppContext context;
-
-    public IrcFormatSerializer(AppContext context) {
-        this.context = context;
-    }
-
-    @NonNull
-    public String toEscapeCodes(@NonNull Spanned text) {
-        StringBuilder out = new StringBuilder();
-        withinParagraph(out, text, 0, text.length());
-        return out.toString();
-    }
-
-    private void withinParagraph(@NonNull StringBuilder out, @NonNull Spanned text,
-                                 int start, int end) {
-        int next;
-        int foreground = -1;
-        int background = -1;
-        boolean bold = false;
-        boolean underline = false;
-        boolean italic = false;
-
-        for (int i = start; i < end; i = next) {
-            next = text.nextSpanTransition(i, end, CharacterStyle.class);
-            CharacterStyle[] style = text.getSpans(i, next, CharacterStyle.class);
-
-            int afterForeground = -1;
-            int afterBackground = -1;
-            boolean afterBold = false;
-            boolean afterUnderline = false;
-            boolean afterItalic = false;
-
-            for (CharacterStyle aStyle : style) {
-                if ((text.getSpanFlags(aStyle) & Spanned.SPAN_COMPOSING) != 0)
-                    continue;
-
-                if (aStyle instanceof IrcBoldSpan) {
-                    afterBold = true;
-                } else if (aStyle instanceof IrcItalicSpan) {
-                    afterItalic = true;
-                } else if (aStyle instanceof UnderlineSpan) {
-                    afterUnderline = true;
-                } else if (aStyle instanceof IrcForegroundColorSpan) {
-                    afterForeground = ((IrcForegroundColorSpan) aStyle).mircColor;
-                } else if (aStyle instanceof IrcBackgroundColorSpan) {
-                    afterBackground = ((IrcBackgroundColorSpan) aStyle).mircColor;
-                } else if (aStyle instanceof ForegroundColorSpan) {
-                    afterForeground = context.themeUtil().res.colorToId(((ForegroundColorSpan) aStyle).getForegroundColor());
-                } else if (aStyle instanceof BackgroundColorSpan) {
-                    afterBackground = context.themeUtil().res.colorToId(((BackgroundColorSpan) aStyle).getBackgroundColor());
-                }
-            }
-
-            if (afterBold != bold) {
-                out.append(CODE_BOLD);
-            }
-
-            if (afterUnderline != underline) {
-                out.append(CODE_UNDERLINE);
-            }
-
-            if (afterItalic != italic) {
-                out.append(CODE_ITALIC);
-            }
-
-            if (afterForeground != foreground || afterBackground != background) {
-                if (afterForeground == background && afterBackground == foreground) {
-                    out.append(CODE_SWAP);
-                } else {
-                    out.append(CODE_COLOR);
-                    if (afterBackground == -1) {
-                        if (afterForeground == -1) {
-                            // Foreground changed from a value to null, we don’t set any new foreground
-                            // Background changed from a value to null, we don’t set any new background
-                        } else {
-                            out.append(CODE_COLOR);
-                            out.append(String.format(Locale.US, "%02d", afterForeground));
-                        }
-                    } else if (background == afterBackground) {
-                        if (afterForeground == -1) {
-                            out.append(String.format(Locale.US, "%02d", context.themeUtil().res.colorForegroundMirc));
-                        } else {
-                            out.append(String.format(Locale.US, "%02d", afterForeground));
-                        }
-                    } else {
-                        if (afterForeground == -1) {
-                            out.append(String.format(Locale.US, "%02d,%02d", context.themeUtil().res.colorForegroundMirc, afterBackground));
-                        } else {
-                            out.append(String.format(Locale.US, "%02d,%02d", afterForeground, afterBackground));
-                        }
-                    }
-                }
-            }
-
-            out.append(text.subSequence(i, next));
-
-            bold = afterBold;
-            italic = afterItalic;
-            underline = afterUnderline;
-            background = afterBackground;
-            foreground = afterForeground;
-        }
-
-        if (bold || italic || underline || background != -1 || foreground != -1)
-            out.append(CODE_RESET);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java b/app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
deleted file mode 100644
index 45307ac8b..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/Copyable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-public interface Copyable<T> {
-    T copy();
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java
deleted file mode 100644
index 758408fcd..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBackgroundColorSpan.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-import android.support.annotation.ColorInt;
-import android.text.style.BackgroundColorSpan;
-
-public class IrcBackgroundColorSpan extends BackgroundColorSpan implements Copyable<IrcBackgroundColorSpan> {
-    public final int mircColor;
-
-    public IrcBackgroundColorSpan(int mircColor, @ColorInt int color) {
-        super(color);
-        this.mircColor = mircColor;
-    }
-
-    @Override
-    public IrcBackgroundColorSpan copy() {
-        return new IrcBackgroundColorSpan(mircColor, getBackgroundColor());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
deleted file mode 100644
index aa4361ddf..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcBoldSpan.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-import android.graphics.Typeface;
-import android.text.style.StyleSpan;
-
-public class IrcBoldSpan extends StyleSpan implements Copyable<IrcBoldSpan> {
-    public IrcBoldSpan() {
-        super(Typeface.BOLD);
-    }
-
-    @Override
-    public IrcBoldSpan copy() {
-        return new IrcBoldSpan();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java
deleted file mode 100644
index 5cf8c7ebb..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcForegroundColorSpan.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-import android.support.annotation.ColorInt;
-import android.text.style.ForegroundColorSpan;
-
-public class IrcForegroundColorSpan extends ForegroundColorSpan implements Copyable<IrcForegroundColorSpan> {
-    public final int mircColor;
-
-    public IrcForegroundColorSpan(int mircColor, @ColorInt int color) {
-        super(color);
-        this.mircColor = mircColor;
-    }
-
-    @Override
-    public IrcForegroundColorSpan copy() {
-        return new IrcForegroundColorSpan(mircColor, getForegroundColor());
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java
deleted file mode 100644
index 149a4012d..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcItalicSpan.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-import android.graphics.Typeface;
-import android.text.style.StyleSpan;
-
-public class IrcItalicSpan extends StyleSpan implements Copyable<IrcItalicSpan> {
-    public IrcItalicSpan() {
-        super(Typeface.ITALIC);
-    }
-
-    @Override
-    public IrcItalicSpan copy() {
-        return new IrcItalicSpan();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java b/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java
deleted file mode 100644
index 1eef3ebad..000000000
--- a/app/src/main/java/de/kuschku/util/irc/format/spans/IrcUnderlineSpan.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.irc.format.spans;
-
-import android.text.style.UnderlineSpan;
-
-public class IrcUnderlineSpan extends UnderlineSpan implements Copyable<IrcUnderlineSpan> {
-    @Override
-    public IrcUnderlineSpan copy() {
-        return new IrcUnderlineSpan();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/niohelpers/Helper.java b/app/src/main/java/de/kuschku/util/niohelpers/Helper.java
deleted file mode 100644
index 7ce8bbe04..000000000
--- a/app/src/main/java/de/kuschku/util/niohelpers/Helper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.niohelpers;
-
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import java.util.LinkedList;
-import java.util.List;
-
-public class Helper {
-    // Making default constructor invisible
-    private Helper() {
-
-    }
-
-    public static void printHexDump(String prefix, @NonNull byte[] data) {
-        List<String> strs = new LinkedList<>();
-        Log.e("HexDump" + prefix, "========");
-        String bytes = "";
-        int i;
-        for (i = 0; i < data.length; i++) {
-            bytes += String.format("%02x ", data[i]);
-            if (i > 0 && (i + 1) % 32 == 0) {
-                strs.add(bytes);
-                bytes = "";
-            }
-        }
-        strs.add(bytes);
-        for (int j = 0; j < strs.size(); j++) {
-            Log.e("HexDump" + prefix + ":" + j, strs.get(j));
-        }
-    }
-
-    public static void printHexDump(@NonNull byte[] data) {
-        printHexDump("", data);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/niohelpers/WrappedChannel.java b/app/src/main/java/de/kuschku/util/niohelpers/WrappedChannel.java
deleted file mode 100644
index 7f73372ce..000000000
--- a/app/src/main/java/de/kuschku/util/niohelpers/WrappedChannel.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.niohelpers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.Flushable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.nio.ByteBuffer;
-import java.nio.channels.ByteChannel;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.InterruptibleChannel;
-import java.security.GeneralSecurityException;
-import java.security.cert.X509Certificate;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.InflaterInputStream;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-
-import de.kuschku.libquassel.ssl.CertificateManager;
-import de.kuschku.libquassel.ssl.QuasselTrustManager;
-import de.kuschku.util.CompatibilityUtils;
-import de.kuschku.util.accounts.ServerAddress;
-import de.kuschku.util.backports.Consumer;
-
-public class WrappedChannel implements Flushable, ByteChannel, InterruptibleChannel {
-    @Nullable
-    private final InputStream rawIn;
-    @Nullable
-    private final OutputStream rawOut;
-    @Nullable
-    private DataInputStream in;
-    @Nullable
-    private DataOutputStream out;
-
-    @Nullable
-    private Socket socket = null;
-
-    private WrappedChannel(@Nullable InputStream in, @Nullable OutputStream out) {
-        this.rawIn = in;
-        this.rawOut = out;
-        if (this.rawIn != null) this.in = new DataInputStream(rawIn);
-        if (this.rawOut != null) this.out = new DataOutputStream(rawOut);
-    }
-
-    public WrappedChannel(@NonNull Socket s) throws IOException {
-        this(s.getInputStream(), s.getOutputStream());
-        this.socket = s;
-    }
-
-    @NonNull
-    public static WrappedChannel ofStreams(@Nullable InputStream in, @Nullable OutputStream out) {
-        return new WrappedChannel(in, out);
-    }
-
-    @NonNull
-    public static WrappedChannel ofSocket(@NonNull Socket s) throws IOException {
-        return new WrappedChannel(s);
-    }
-
-    @Nullable
-    public static WrappedChannel withCompression(@NonNull WrappedChannel channel) {
-        return new WrappedChannel(
-                new InflaterInputStream(channel.rawIn),
-                CompatibilityUtils.createDeflaterOutputStream(channel.rawOut)
-        );
-    }
-
-
-    public static WrappedChannel withSSL(@NonNull WrappedChannel channel,
-                                         @NonNull CertificateManager certificateManager,
-                                         @NonNull ServerAddress address,
-                                         @NonNull Consumer<X509Certificate[]> callback) throws GeneralSecurityException, IOException {
-        SSLContext context = SSLContext.getInstance("TLSv1.2");
-        TrustManager[] managers = new TrustManager[]{QuasselTrustManager.fromDefault(certificateManager, address, callback)};
-        context.init(null, managers, null);
-        SSLSocketFactory factory = context.getSocketFactory();
-        SSLSocket socket = (SSLSocket) factory.createSocket(channel.socket, address.host, address.port, true);
-        socket.setUseClientMode(true);
-        socket.startHandshake();
-        return WrappedChannel.ofSocket(socket);
-    }
-
-    /**
-     * Reads a sequence of bytes from this channel into the given buffer.
-     * <p>
-     * <p> An attempt is made to read up to <i>r</i> bytes from the channel,
-     * where <i>r</i> is the number of bytes remaining in the buffer, that is,
-     * <tt>dst.remaining()</tt>, at the moment this method is invoked.
-     * <p>
-     * <p> Suppose that a byte sequence of length <i>n</i> is read, where
-     * <tt>0</tt>&nbsp;<tt>&lt;=</tt>&nbsp;<i>n</i>&nbsp;<tt>&lt;=</tt>&nbsp;<i>r</i>.
-     * This byte sequence will be transferred into the buffer so that the first
-     * byte in the sequence is at index <i>p</i> and the last byte is at index
-     * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>&nbsp;<tt>-</tt>&nbsp;<tt>1</tt>,
-     * where <i>p</i> is the buffer's position at the moment this method is
-     * invoked.  Upon return the buffer's position will be equal to
-     * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>; its limit will not have changed.
-     * <p>
-     * <p> A read operation might not fill the buffer, and in fact it might not
-     * read any bytes at all.  Whether or not it does so depends upon the
-     * nature and state of the channel.  A socket channel in non-blocking mode,
-     * for example, cannot read any more bytes than are immediately available
-     * from the socket's input buffer; similarly, a file channel cannot read
-     * any more bytes than remain in the file.  It is guaranteed, however, that
-     * if a channel is in blocking mode and there is at least one byte
-     * remaining in the buffer then this method will block until at least one
-     * byte is read.
-     * <p>
-     * <p> This method may be invoked at any time.  If another thread has
-     * already initiated a read operation upon this channel, however, then an
-     * invocation of this method will block until the first operation is
-     * complete. </p>
-     *
-     * @param dst The buffer into which bytes are to be transferred
-     * @return The number of bytes read, possibly zero, or <tt>-1</tt> if the
-     * channel has reached end-of-stream
-     * @throws IOException If some other I/O Error occurs
-     */
-    @Override
-    public int read(@NonNull ByteBuffer dst) throws IOException {
-        if (in == null) return 0;
-
-        in.readFully(dst.array(), dst.arrayOffset(), dst.array().length - dst.arrayOffset());
-        return dst.array().length;
-    }
-
-    /**
-     * Writes a sequence of bytes to this channel from the given buffer.
-     * <p>
-     * <p> An attempt is made to write up to <i>r</i> bytes to the channel,
-     * where <i>r</i> is the number of bytes remaining in the buffer, that is,
-     * <tt>src.remaining()</tt>, at the moment this method is invoked.
-     * <p>
-     * <p> Suppose that a byte sequence of length <i>n</i> is written, where
-     * <tt>0</tt>&nbsp;<tt>&lt;=</tt>&nbsp;<i>n</i>&nbsp;<tt>&lt;=</tt>&nbsp;<i>r</i>.
-     * This byte sequence will be transferred from the buffer starting at index
-     * <i>p</i>, where <i>p</i> is the buffer's position at the moment this
-     * method is invoked; the index of the last byte written will be
-     * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>&nbsp;<tt>-</tt>&nbsp;<tt>1</tt>.
-     * Upon return the buffer's position will be equal to
-     * <i>p</i>&nbsp;<tt>+</tt>&nbsp;<i>n</i>; its limit will not have changed.
-     * <p>
-     * <p> Unless otherwise specified, a write operation will return only after
-     * writing all of the <i>r</i> requested bytes.  Some types of channels,
-     * depending upon their state, may write only some of the bytes or possibly
-     * none at all.  A socket channel in non-blocking mode, for example, cannot
-     * write any more bytes than are free in the socket's output buffer.
-     * <p>
-     * <p> This method may be invoked at any time.  If another thread has
-     * already initiated a write operation upon this channel, however, then an
-     * invocation of this method will block until the first operation is
-     * complete. </p>
-     *
-     * @param src The buffer from which bytes are to be retrieved
-     * @return The number of bytes written, possibly zero
-     * @throws IOException If some other I/O Error occurs
-     */
-    @Override
-    public int write(@NonNull ByteBuffer src) throws IOException {
-        if (out == null) return 0;
-
-        out.write(src.array(), src.arrayOffset(), src.array().length - src.arrayOffset());
-        return src.array().length;
-    }
-
-    /**
-     * Tells whether or not this channel is open.
-     *
-     * @return <tt>true</tt> if, and only if, this channel is open
-     */
-    @Override
-    public boolean isOpen() {
-        return in != null || out != null;
-    }
-
-    /**
-     * Closes this channel.
-     * <p>
-     * <p> After a channel is closed, any further attempt to invoke I/O
-     * operations upon it will cause a {@link ClosedChannelException} to be
-     * thrown.
-     * <p>
-     * <p> If this channel is already closed then invoking this method has no
-     * effect.
-     * <p>
-     * <p> This method may be invoked at any time.  If some other thread has
-     * already invoked it, however, then another invocation will block until
-     * the first invocation is complete, after which it will return without
-     * effect. </p>
-     *
-     * @throws IOException If an I/O Error occurs
-     */
-    @Override
-    public void close() throws IOException {
-        if (rawIn != null) rawIn.close();
-        in = null;
-        if (rawOut != null) rawOut.close();
-        out = null;
-    }
-
-    /**
-     * Flushes this stream by writing any buffered output to the underlying
-     * stream.
-     *
-     * @throws IOException If an I/O Error occurs
-     */
-    @Override
-    public void flush() throws IOException {
-        if (rawOut instanceof DeflaterOutputStream) rawOut.flush();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java b/app/src/main/java/de/kuschku/util/observables/AutoScroller.java
deleted file mode 100644
index 75db1aaf5..000000000
--- a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-
-public class AutoScroller {
-    private final LinearLayoutManager manager;
-
-    public AutoScroller(@NonNull RecyclerView recyclerView) {
-        this((LinearLayoutManager) recyclerView.getLayoutManager());
-    }
-
-    public AutoScroller(LinearLayoutManager manager) {
-        this.manager = manager;
-    }
-
-    public void notifyScroll() {
-        if (manager.findFirstVisibleItemPosition() == 0)
-            manager.scrollToPosition(0);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/ContentComparable.java b/app/src/main/java/de/kuschku/util/observables/ContentComparable.java
deleted file mode 100644
index 8ad75c784..000000000
--- a/app/src/main/java/de/kuschku/util/observables/ContentComparable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables;
-
-import android.support.annotation.NonNull;
-
-public interface ContentComparable<T extends ContentComparable<T>> extends Comparable<T> {
-    boolean areItemsTheSame(@NonNull T other);
-
-    boolean areContentsTheSame(@NonNull T other);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/IObservable.java b/app/src/main/java/de/kuschku/util/observables/IObservable.java
deleted file mode 100644
index 3ac3faf3e..000000000
--- a/app/src/main/java/de/kuschku/util/observables/IObservable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables;
-
-public interface IObservable<T> {
-    void addCallback(T callback);
-
-    void removeCallback(T callback);
-
-    void removeCallbacks();
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/DrawerItemCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/DrawerItemCallback.java
deleted file mode 100644
index 054c5d36d..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/DrawerItemCallback.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
-
-public interface DrawerItemCallback {
-    void notifyChanged(IDrawerItem item);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/ElementCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/ElementCallback.java
deleted file mode 100644
index 20fcdfc69..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/ElementCallback.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import android.support.annotation.UiThread;
-
-public interface ElementCallback<T> {
-    @UiThread
-    void notifyItemInserted(T element);
-
-    @UiThread
-    void notifyItemRemoved(T element);
-
-    @UiThread
-    void notifyItemChanged(T element);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralCallback.java
deleted file mode 100644
index a88a725e5..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralCallback.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-public interface GeneralCallback<T> {
-    void notifyChanged(T object);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralObservable.java b/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralObservable.java
deleted file mode 100644
index 79dcc78d7..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/GeneralObservable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.libquassel.syncables.types.interfaces.QObservable;
-
-public class GeneralObservable<T> implements QObservable<T>, GeneralCallback<T> {
-    final Set<GeneralCallback<T>> callbackSet = new HashSet<>();
-
-    @Override
-    public void addObserver(GeneralCallback<T> o) {
-        callbackSet.add(o);
-    }
-
-    @Override
-    public void deleteObserver(GeneralCallback<T> o) {
-        callbackSet.remove(o);
-    }
-
-
-    @Override
-    public void notifyChanged(T object) {
-        for (GeneralCallback<T> callback : callbackSet) {
-            callback.notifyChanged(object);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/UICallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/UICallback.java
deleted file mode 100644
index 19019a514..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/UICallback.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import android.support.annotation.UiThread;
-
-public interface UICallback {
-    @UiThread
-    void notifyItemInserted(int position);
-
-    @UiThread
-    void notifyItemChanged(int position);
-
-    @UiThread
-    void notifyItemRemoved(int position);
-
-    @UiThread
-    void notifyItemMoved(int from, int to);
-
-    @UiThread
-    void notifyItemRangeInserted(int position, int count);
-
-    @UiThread
-    void notifyItemRangeChanged(int position, int count);
-
-    @UiThread
-    void notifyItemRangeRemoved(int position, int count);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildCallback.java
deleted file mode 100644
index e8a7901d7..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildCallback.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import android.support.annotation.UiThread;
-
-public interface UIChildCallback {
-    @UiThread
-    void notifyChildItemInserted(int group, int position);
-
-    @UiThread
-    void notifyChildItemChanged(int group, int position);
-
-    @UiThread
-    void notifyChildItemRemoved(int group, int position);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildParentCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildParentCallback.java
deleted file mode 100644
index 7c7f69add..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/UIChildParentCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-public interface UIChildParentCallback extends UIChildCallback, UIParentCallback {
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/UIParentCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/UIParentCallback.java
deleted file mode 100644
index faecff3fd..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/UIParentCallback.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks;
-
-import android.support.annotation.UiThread;
-
-public interface UIParentCallback {
-    @UiThread
-    void notifyParentItemInserted(int position);
-
-    @UiThread
-    void notifyParentItemRemoved(int position);
-
-    @UiThread
-    void notifyParentItemChanged(int position);
-
-    @UiThread
-    void notifyParentItemRangeInserted(int from, int to);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/AdapterUICallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/AdapterUICallbackWrapper.java
deleted file mode 100644
index db99f22f0..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/AdapterUICallbackWrapper.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-import android.support.v7.widget.RecyclerView;
-
-import de.kuschku.util.observables.AutoScroller;
-import de.kuschku.util.observables.callbacks.UICallback;
-
-@UiThread
-public class AdapterUICallbackWrapper implements UICallback {
-    @NonNull
-    private final RecyclerView.Adapter adapter;
-
-    @Nullable
-    private final AutoScroller scroller;
-
-    public AdapterUICallbackWrapper(@NonNull RecyclerView.Adapter adapter) {
-        this(adapter, null);
-    }
-
-    public AdapterUICallbackWrapper(@NonNull RecyclerView.Adapter adapter, @Nullable AutoScroller scroller) {
-        this.adapter = adapter;
-        this.scroller = scroller;
-    }
-
-    @Override
-    public void notifyItemInserted(int position) {
-        adapter.notifyItemInserted(position);
-        if (position == 0 && scroller != null) scroller.notifyScroll();
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        adapter.notifyItemChanged(position);
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        adapter.notifyItemRemoved(position);
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        adapter.notifyItemMoved(from, to);
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        adapter.notifyItemRangeInserted(position, count);
-        if (position == 0 && scroller != null) scroller.notifyScroll();
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        adapter.notifyItemRangeChanged(position, count);
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        adapter.notifyItemRangeRemoved(position, count);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ChildUICallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ChildUICallbackWrapper.java
deleted file mode 100644
index 0590cee65..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ChildUICallbackWrapper.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.UIChildCallback;
-
-@UiThread
-public class ChildUICallbackWrapper implements UICallback {
-    @NonNull
-    private final UIChildCallback wrapped;
-    private int groupPosition;
-
-    public ChildUICallbackWrapper(@NonNull UIChildCallback wrapped) {
-        this.wrapped = wrapped;
-    }
-
-    public int getGroupPosition() {
-        return groupPosition;
-    }
-
-    public void setGroupPosition(int groupPosition) {
-        this.groupPosition = groupPosition;
-    }
-
-    @Override
-    public void notifyItemInserted(int position) {
-        wrapped.notifyChildItemInserted(groupPosition, position);
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        wrapped.notifyChildItemChanged(groupPosition, position);
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        wrapped.notifyChildItemRemoved(groupPosition, position);
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        notifyItemRemoved(from);
-        notifyItemInserted(to);
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemInserted(i);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemChanged(i);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemRemoved(i);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/GeneralUICallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/GeneralUICallbackWrapper.java
deleted file mode 100644
index 25fb58566..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/GeneralUICallbackWrapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-
-public abstract class GeneralUICallbackWrapper implements UICallback {
-    public abstract void notifyChanged();
-
-    @Override
-    public void notifyItemInserted(int position) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        notifyChanged();
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        notifyChanged();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiDrawerItemCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiDrawerItemCallback.java
deleted file mode 100644
index a47b30b37..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiDrawerItemCallback.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-
-import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.util.observables.IObservable;
-import de.kuschku.util.observables.callbacks.DrawerItemCallback;
-
-public class MultiDrawerItemCallback implements DrawerItemCallback, IObservable<DrawerItemCallback> {
-    @NonNull
-    final Set<DrawerItemCallback> callbacks;
-
-    private MultiDrawerItemCallback(@NonNull List<DrawerItemCallback> multiGeneralCallbacks) {
-        this.callbacks = new HashSet<>(multiGeneralCallbacks);
-    }
-
-    @NonNull
-    public static MultiDrawerItemCallback of(DrawerItemCallback... callbacks) {
-        return new MultiDrawerItemCallback(Arrays.asList(callbacks));
-    }
-
-    @Override
-    public void notifyChanged(IDrawerItem item) {
-        for (DrawerItemCallback callback : callbacks) {
-            callback.notifyChanged(item);
-        }
-    }
-
-    @Override
-    public void addCallback(DrawerItemCallback callback) {
-        callbacks.add(callback);
-    }
-
-    @Override
-    public void removeCallback(DrawerItemCallback callback) {
-        callbacks.remove(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callbacks.clear();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiElementCallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiElementCallbackWrapper.java
deleted file mode 100644
index 4d3e767bd..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiElementCallbackWrapper.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.observables.callbacks.ElementCallback;
-
-@UiThread
-public class MultiElementCallbackWrapper<T> implements ElementCallback<T> {
-    @NonNull
-    private final Set<ElementCallback<T>> callbacks = new HashSet<>();
-
-    private MultiElementCallbackWrapper(@NonNull Collection<ElementCallback<T>> callbacks) {
-        this.callbacks.addAll(callbacks);
-    }
-
-    @SafeVarargs
-    @NonNull
-    public static <T> MultiElementCallbackWrapper<T> of(@NonNull ElementCallback<T>... callbacks) {
-        return new MultiElementCallbackWrapper<>(Arrays.asList(callbacks));
-    }
-
-    public void addCallback(@NonNull ElementCallback<T> callback) {
-        callbacks.add(callback);
-    }
-
-    public void removeCallback(@NonNull ElementCallback<T> callback) {
-        callbacks.remove(callback);
-    }
-
-    @Override
-    public void notifyItemInserted(@Nullable T element) {
-        for (ElementCallback<T> callback : callbacks) {
-            callback.notifyItemInserted(element);
-        }
-    }
-
-    @Override
-    public void notifyItemRemoved(@Nullable T element) {
-        for (ElementCallback<T> callback : callbacks) {
-            callback.notifyItemRemoved(element);
-        }
-    }
-
-    @Override
-    public void notifyItemChanged(@Nullable T element) {
-        for (ElementCallback<T> callback : callbacks) {
-            callback.notifyItemChanged(element);
-        }
-    }
-
-    public void removeCallbacks() {
-        callbacks.clear();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiGeneralCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiGeneralCallback.java
deleted file mode 100644
index e631589c3..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiGeneralCallback.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import de.kuschku.util.observables.IObservable;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-
-public class MultiGeneralCallback<T> implements IObservable<GeneralCallback<T>>, GeneralCallback<T> {
-    @NonNull
-    final Set<GeneralCallback<T>> callbacks;
-
-    private MultiGeneralCallback(@NonNull List<MultiGeneralCallback<T>> multiGeneralCallbacks) {
-        this.callbacks = new HashSet<>(multiGeneralCallbacks);
-    }
-
-    @SafeVarargs
-    @NonNull
-    public static <U> MultiGeneralCallback<U> of(MultiGeneralCallback<U>... callbacks) {
-        return new MultiGeneralCallback<>(Arrays.asList(callbacks));
-    }
-
-    @Override
-    public void notifyChanged(T obj) {
-        for (GeneralCallback<T> callback : callbacks) {
-            callback.notifyChanged(obj);
-        }
-    }
-
-    @Override
-    public void addCallback(GeneralCallback<T> callback) {
-        callbacks.add(callback);
-    }
-
-    @Override
-    public void removeCallback(GeneralCallback<T> callback) {
-        callbacks.remove(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callbacks.clear();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUICallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUICallbackWrapper.java
deleted file mode 100644
index acca32cb8..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUICallbackWrapper.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-
-@UiThread
-public class MultiUICallbackWrapper implements UICallback {
-    @NonNull
-    private final Set<UICallback> callbacks = new HashSet<>();
-
-    private MultiUICallbackWrapper(@NonNull Collection<UICallback> callbacks) {
-        this.callbacks.addAll(callbacks);
-    }
-
-    @NonNull
-    public static MultiUICallbackWrapper of(@NonNull UICallback... callbacks) {
-        return new MultiUICallbackWrapper(Arrays.asList(callbacks));
-    }
-
-    public void addCallback(@NonNull UICallback callback) {
-        callbacks.add(callback);
-    }
-
-    public void removeCallback(@NonNull UICallback callback) {
-        callbacks.remove(callback);
-    }
-
-    @Override
-    public void notifyItemInserted(int position) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemInserted(position);
-        }
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemChanged(position);
-        }
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemRemoved(position);
-        }
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemMoved(from, to);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemRangeInserted(position, count);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemRangeChanged(position, count);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        for (UICallback callback : callbacks) {
-            callback.notifyItemRangeRemoved(position, count);
-        }
-    }
-
-    public void removeCallbacks() {
-        callbacks.clear();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildCallback.java
deleted file mode 100644
index 939cf3180..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildCallback.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.observables.callbacks.UIChildCallback;
-
-@UiThread
-public class MultiUIChildCallback implements UIChildCallback {
-    @NonNull
-    private final Set<UIChildCallback> callbacks = new HashSet<>();
-
-    private MultiUIChildCallback(@NonNull Collection<UIChildCallback> callbacks) {
-        this.callbacks.addAll(callbacks);
-    }
-
-    @NonNull
-    public static MultiUIChildCallback of(@NonNull UIChildCallback... callbacks) {
-        return new MultiUIChildCallback(Arrays.asList(callbacks));
-    }
-
-
-    public void addCallback(@NonNull UIChildCallback callback) {
-        this.callbacks.add(callback);
-    }
-
-    public void removeCallback(@NonNull UIChildCallback callback) {
-        this.callbacks.remove(callback);
-    }
-
-    @Override
-    public void notifyChildItemInserted(int group, int position) {
-        for (UIChildCallback callback : callbacks)
-            callback.notifyChildItemInserted(group, position);
-    }
-
-    @Override
-    public void notifyChildItemChanged(int group, int position) {
-        for (UIChildCallback callback : callbacks)
-            callback.notifyChildItemChanged(group, position);
-    }
-
-    @Override
-    public void notifyChildItemRemoved(int group, int position) {
-        for (UIChildCallback callback : callbacks)
-            callback.notifyChildItemRemoved(group, position);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildParentCallback.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildParentCallback.java
deleted file mode 100644
index b5081813f..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/MultiUIChildParentCallback.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import de.kuschku.util.observables.callbacks.UIChildParentCallback;
-
-@UiThread
-public class MultiUIChildParentCallback implements UIChildParentCallback {
-    @NonNull
-    private final Set<UIChildParentCallback> callbacks = new HashSet<>();
-
-    private MultiUIChildParentCallback(@NonNull Collection<UIChildParentCallback> callbacks) {
-        this.callbacks.addAll(callbacks);
-    }
-
-    @NonNull
-    public static MultiUIChildParentCallback of(@NonNull UIChildParentCallback... callbacks) {
-        return new MultiUIChildParentCallback(Arrays.asList(callbacks));
-    }
-
-
-    public void addCallback(@NonNull UIChildParentCallback callback) {
-        this.callbacks.add(callback);
-    }
-
-    public void removeCallback(@NonNull UIChildParentCallback callback) {
-        this.callbacks.remove(callback);
-    }
-
-    @Override
-    public void notifyChildItemInserted(int group, int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyChildItemInserted(group, position);
-    }
-
-    @Override
-    public void notifyChildItemChanged(int group, int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyChildItemChanged(group, position);
-    }
-
-    @Override
-    public void notifyChildItemRemoved(int group, int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyChildItemRemoved(group, position);
-    }
-
-    @Override
-    public void notifyParentItemInserted(int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyParentItemInserted(position);
-    }
-
-    @Override
-    public void notifyParentItemRemoved(int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyParentItemRemoved(position);
-    }
-
-    @Override
-    public void notifyParentItemChanged(int position) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyParentItemChanged(position);
-    }
-
-    @Override
-    public void notifyParentItemRangeInserted(int from, int to) {
-        for (UIChildParentCallback callback : callbacks)
-            callback.notifyParentItemRangeInserted(from, to);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ParentUICallbackWrapper.java b/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ParentUICallbackWrapper.java
deleted file mode 100644
index 39bf33941..000000000
--- a/app/src/main/java/de/kuschku/util/observables/callbacks/wrappers/ParentUICallbackWrapper.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.callbacks.wrappers;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.UiThread;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.UIParentCallback;
-
-@UiThread
-public class ParentUICallbackWrapper implements UICallback {
-    @NonNull
-    private final UIParentCallback wrapped;
-
-    public ParentUICallbackWrapper(@NonNull UIParentCallback wrapped) {
-        this.wrapped = wrapped;
-    }
-
-    @Override
-    public void notifyItemInserted(int position) {
-        wrapped.notifyParentItemInserted(position);
-    }
-
-    @Override
-    public void notifyItemChanged(int position) {
-        wrapped.notifyParentItemChanged(position);
-    }
-
-    @Override
-    public void notifyItemRemoved(int position) {
-        wrapped.notifyParentItemRemoved(position);
-    }
-
-    @Override
-    public void notifyItemMoved(int from, int to) {
-        notifyItemRemoved(from);
-        notifyItemInserted(to);
-    }
-
-    @Override
-    public void notifyItemRangeInserted(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemInserted(i);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeChanged(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemChanged(i);
-        }
-    }
-
-    @Override
-    public void notifyItemRangeRemoved(int position, int count) {
-        for (int i = position; i < position + count; i++) {
-            notifyItemRemoved(i);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableComparableSortedList.java b/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableComparableSortedList.java
deleted file mode 100644
index 47adf2fde..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableComparableSortedList.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import java.util.List;
-
-import de.kuschku.util.observables.ContentComparable;
-import de.kuschku.util.observables.callbacks.UICallback;
-
-public class AndroidObservableComparableSortedList<T extends ContentComparable<T>> extends AndroidObservableSortedList<T> implements IObservableList<UICallback, T>, List<T> {
-
-
-    public AndroidObservableComparableSortedList(@NonNull Class<T> cl) {
-        super(cl, new SimpleItemComparator<>());
-    }
-
-    public AndroidObservableComparableSortedList(@NonNull Class<T> cl, boolean reverse) {
-        super(cl, new SimpleItemComparator<>(), reverse);
-    }
-
-    public static class SimpleItemComparator<T extends ContentComparable<T>> implements ItemComparator<T> {
-        @Override
-        public int compare(@NonNull T o1, @NonNull T o2) {
-            return o1.compareTo(o2);
-        }
-
-        @Override
-        public boolean areContentsTheSame(@NonNull T oldItem, @NonNull T newItem) {
-            return oldItem.areContentsTheSame(newItem);
-        }
-
-        @Override
-        public boolean areItemsTheSame(@NonNull T item1, @NonNull T item2) {
-            return item1.areItemsTheSame(item2);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableSortedList.java b/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableSortedList.java
deleted file mode 100644
index 95951037d..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/AndroidObservableSortedList.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.util.SortedList;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import de.kuschku.util.backports.Stream;
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiUICallbackWrapper;
-
-import static de.kuschku.util.AndroidAssert.assertTrue;
-
-@SuppressWarnings("unchecked")
-public class AndroidObservableSortedList<T> implements IObservableList<UICallback, T> {
-    @NonNull
-    private final SortedList<T> list;
-    private final boolean reverse;
-
-    @NonNull
-    private final MultiUICallbackWrapper callback = MultiUICallbackWrapper.of();
-    @NonNull
-    private ItemComparator<T> comparator;
-
-    public AndroidObservableSortedList(@NonNull Class<T> cl, @NonNull ItemComparator<T> comparator) {
-        this(cl, comparator, false);
-    }
-
-    public AndroidObservableSortedList(@NonNull Class<T> cl, @NonNull ItemComparator<T> comparator, boolean reverse) {
-        this.list = new SortedList<>(cl, new Callback());
-        this.comparator = comparator;
-        this.reverse = reverse;
-    }
-
-    @Override
-    public void addCallback(@NonNull UICallback callback) {
-        this.callback.addCallback(callback);
-    }
-
-    @Override
-    public void removeCallback(@NonNull UICallback callback) {
-        this.callback.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callback.removeCallbacks();
-    }
-
-    public void setComparator(@NonNull ItemComparator<T> comparator) {
-        this.comparator = comparator;
-    }
-
-    @Nullable
-    public T last() {
-        if (list.size() == 0) return null;
-
-        return list.get(list.size() - 1);
-    }
-
-    @Override
-    public void add(int location, T object) {
-        list.add(object);
-    }
-
-    @Override
-    public boolean add(T object) {
-        list.add(object);
-        return true;
-    }
-
-    @Override
-    public boolean addAll(int location, @NonNull Collection<? extends T> collection) {
-        list.addAll((Collection<T>) collection);
-        return true;
-    }
-
-    @Override
-    public boolean addAll(@NonNull Collection<? extends T> collection) {
-        list.addAll((Collection<T>) collection);
-        return false;
-    }
-
-    @Override
-    public void clear() {
-        list.clear();
-    }
-
-    @Override
-    public boolean contains(Object object) {
-        return indexOf(object) != SortedList.INVALID_POSITION;
-    }
-
-    @Override
-    public boolean containsAll(@NonNull Collection<?> collection) {
-        return new Stream<>(collection).allMatch(this::contains);
-    }
-
-    @Override
-    public T get(int location) {
-        return list.get(location);
-    }
-
-    @Override
-    public int indexOf(Object object) {
-        return list.indexOf((T) object);
-    }
-
-    @Override
-    public boolean isEmpty() {
-        return list.size() == 0;
-    }
-
-    @NonNull
-    @Override
-    public Iterator<T> iterator() {
-        return new CallbackedSortedListIterator();
-    }
-
-    @Override
-    public int lastIndexOf(Object object) {
-        return indexOf(object);
-    }
-
-    @NonNull
-    @Override
-    public ListIterator<T> listIterator() {
-        return new CallbackedSortedListIterator();
-    }
-
-    @NonNull
-    @Override
-    public ListIterator<T> listIterator(int location) {
-        return new CallbackedSortedListIterator(location);
-    }
-
-    @Nullable
-    @Override
-    public T remove(int location) {
-        T item = list.get(location);
-        list.remove(item);
-        return item;
-    }
-
-    @Override
-    public boolean remove(Object object) {
-        try {
-            list.remove((T) object);
-            return true;
-        } catch (ClassCastException e) {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean removeAll(@NonNull Collection<?> collection) {
-        boolean result = true;
-        for (Object o : collection) {
-            result &= remove(o);
-        }
-        return result;
-    }
-
-    @Override
-    public boolean retainAll(@NonNull Collection<?> collection) {
-        return false;
-    }
-
-    @Nullable
-    @Override
-    public T set(int location, T object) {
-        return null;
-    }
-
-    @Override
-    public int size() {
-        return list.size();
-    }
-
-    @NonNull
-    @Override
-    public List<T> subList(int start, int end) {
-        assertTrue(start <= end);
-        assertTrue(start >= 0);
-        assertTrue(end <= list.size());
-
-        List<T> subList = new ArrayList<>(end - start);
-        for (int i = start; i < end; i++) {
-            subList.add(list.get(i));
-        }
-        return subList;
-    }
-
-    @NonNull
-    @Override
-    public Object[] toArray() {
-        Object[] array = new Object[list.size()];
-        for (int i = 0; i < list.size(); i++) {
-            array[i] = list.get(i);
-        }
-        return array;
-    }
-
-    @NonNull
-    @Override
-    public <T1> T1[] toArray(@NonNull T1[] a) {
-        try {
-            Object[] elements = toArray();
-            if (a.length < elements.length)
-                // Make a new array of a's runtime type, but my contents:
-                return (T1[]) Arrays.copyOf(elements, elements.length, a.getClass());
-            System.arraycopy(elements, 0, a, 0, elements.length);
-            if (a.length > elements.length)
-                a[elements.length] = null;
-            return a;
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public void notifyItemChanged(int position) {
-        T obj = get(position);
-        list.recalculatePositionOfItemAt(position);
-        callback.notifyItemChanged(indexOf(obj));
-    }
-
-    @NonNull
-    @Override
-    public String toString() {
-        return Arrays.toString(toArray());
-    }
-
-    public interface ItemComparator<T> {
-        int compare(T o1, T o2);
-
-        boolean areContentsTheSame(T oldItem, T newItem);
-
-        boolean areItemsTheSame(T item1, T item2);
-    }
-
-    class Callback extends SortedList.Callback<T> {
-        @Override
-        public int compare(T o1, T o2) {
-            return (reverse) ? comparator.compare(o2, o1) : comparator.compare(o1, o2);
-        }
-
-        @Override
-        public void onInserted(int position, int count) {
-            if (count == 1)
-                callback.notifyItemInserted(position);
-            else
-                callback.notifyItemRangeInserted(position, count);
-        }
-
-        @Override
-        public void onRemoved(int position, int count) {
-            if (count == 1)
-                callback.notifyItemRemoved(position);
-            else
-                callback.notifyItemRangeRemoved(position, count);
-        }
-
-        @Override
-        public void onMoved(int fromPosition, int toPosition) {
-            callback.notifyItemMoved(fromPosition, toPosition);
-        }
-
-        @Override
-        public void onChanged(int position, int count) {
-            if (count == 1)
-                callback.notifyItemChanged(position);
-            else
-                callback.notifyItemRangeChanged(position, count);
-        }
-
-        @Override
-        public boolean areContentsTheSame(T oldItem, T newItem) {
-            return comparator.areContentsTheSame(oldItem, newItem);
-        }
-
-        @Override
-        public boolean areItemsTheSame(T item1, T item2) {
-            return comparator.areItemsTheSame(item1, item2);
-        }
-    }
-
-    class CallbackedSortedListIterator implements Iterator<T>, ListIterator<T> {
-        int position;
-
-        public CallbackedSortedListIterator() {
-            this(0);
-        }
-
-        public CallbackedSortedListIterator(int position) {
-            this.position = position;
-        }
-
-        @Override
-        public void add(T object) {
-            list.add(object);
-        }
-
-        @Override
-        public boolean hasNext() {
-            return position < list.size();
-        }
-
-        @Override
-        public boolean hasPrevious() {
-            return position >= 0;
-        }
-
-        @Override
-        public T next() {
-            return list.get(position++);
-        }
-
-        @Override
-        public int nextIndex() {
-            return position + 1;
-        }
-
-        @Override
-        public T previous() {
-            return list.get(position--);
-        }
-
-        @Override
-        public int previousIndex() {
-            return position - 1;
-        }
-
-        @Override
-        public void remove() {
-            list.remove(list.get(position));
-            callback.notifyItemRemoved(position);
-        }
-
-        @Override
-        public void set(T object) {
-            list.remove(list.get(position));
-            list.add(object);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ChildParentAndroidObservableSortedList.java b/app/src/main/java/de/kuschku/util/observables/lists/ChildParentAndroidObservableSortedList.java
deleted file mode 100644
index 5228011d2..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ChildParentAndroidObservableSortedList.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import de.kuschku.util.observables.IObservable;
-import de.kuschku.util.observables.callbacks.UIChildCallback;
-import de.kuschku.util.observables.callbacks.UIChildParentCallback;
-import de.kuschku.util.observables.callbacks.UIParentCallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiUIChildParentCallback;
-import de.kuschku.util.observables.callbacks.wrappers.ParentUICallbackWrapper;
-
-public class ChildParentAndroidObservableSortedList<T extends IObservable<UIChildCallback>> extends AndroidObservableSortedList<T> {
-    @NonNull
-    private final MultiUIChildParentCallback callback = MultiUIChildParentCallback.of();
-
-    public ChildParentAndroidObservableSortedList(@NonNull Class<T> cl, @NonNull ItemComparator<T> comparator) {
-        super(cl, comparator);
-        registerCallbacks();
-    }
-
-    public ChildParentAndroidObservableSortedList(@NonNull Class<T> cl, @NonNull ItemComparator<T> comparator, boolean reverse) {
-        super(cl, comparator, reverse);
-        registerCallbacks();
-    }
-
-    private void registerCallbacks() {
-        super.addCallback(new MyWrapper(callback));
-    }
-
-    public void addChildParentCallback(@NonNull UIChildParentCallback callback) {
-        this.callback.addCallback(callback);
-    }
-
-    public void removeChildParentCallback(@NonNull UIChildParentCallback callback) {
-        this.callback.removeCallback(callback);
-    }
-
-    private class MyWrapper extends ParentUICallbackWrapper {
-        public MyWrapper(@NonNull UIParentCallback wrapped) {
-            super(wrapped);
-        }
-
-        @Override
-        public void notifyItemInserted(int position) {
-            super.notifyItemInserted(position);
-            get(position).addCallback(callback);
-        }
-
-        @Override
-        public void notifyItemRangeInserted(int position, int count) {
-            super.notifyItemRangeInserted(position, count);
-            for (int i = position; i < position + count; i++) {
-                get(position).addCallback(callback);
-            }
-        }
-
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/IObservableCollection.java b/app/src/main/java/de/kuschku/util/observables/lists/IObservableCollection.java
deleted file mode 100644
index a40010034..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/IObservableCollection.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-public interface IObservableCollection<E> extends Collection<E> {
-    @Override
-    boolean add(E object);
-
-    @Override
-    boolean addAll(@NonNull Collection<? extends E> collection);
-
-    @Override
-    void clear();
-
-    @Override
-    boolean contains(Object object);
-
-    @Override
-    boolean containsAll(@NonNull Collection<?> collection);
-
-    @Override
-    boolean isEmpty();
-
-    @NonNull
-    @Override
-    Iterator<E> iterator();
-
-    @Override
-    boolean remove(Object object);
-
-    @Override
-    boolean removeAll(@NonNull Collection<?> collection);
-
-    @Override
-    boolean retainAll(@NonNull Collection<?> collection);
-
-    @Override
-    int size();
-
-    @NonNull
-    @Override
-    Object[] toArray();
-
-    @NonNull
-    @Override
-    <T> T[] toArray(@NonNull T[] array);
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/IObservableList.java b/app/src/main/java/de/kuschku/util/observables/lists/IObservableList.java
deleted file mode 100644
index a26bf1236..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/IObservableList.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import java.util.List;
-
-import de.kuschku.util.observables.IObservable;
-
-public interface IObservableList<O, T> extends IObservable<O>, List<T> {
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/IObservableSet.java b/app/src/main/java/de/kuschku/util/observables/lists/IObservableSet.java
deleted file mode 100644
index 6ee2a78be..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/IObservableSet.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import de.kuschku.util.observables.IObservable;
-
-public interface IObservableSet<O, T> extends IObservable<O>, IObservableCollection<T> {
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableComparableSortedList.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableComparableSortedList.java
deleted file mode 100644
index a241e1238..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableComparableSortedList.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import java.util.Comparator;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-
-public class ObservableComparableSortedList<T extends Comparable<? super T>> extends ObservableSortedList<T> implements IObservableList<UICallback, T> {
-    public ObservableComparableSortedList() {
-        super(new ComparableComparator<>());
-    }
-
-    public ObservableComparableSortedList(int capacity) {
-        super(new ComparableComparator<>(), capacity);
-    }
-
-    public static class ComparableComparator<T extends Comparable<? super T>> implements Comparator<T> {
-        @Override
-        public int compare(T o1, T o2) {
-            return o1.compareTo(o2);
-        }
-    }
-
-    public static class ItemComparatorWrapper<T> implements Comparator<T> {
-        private final AndroidObservableSortedList.ItemComparator<T> itemComparator;
-
-        public ItemComparatorWrapper(AndroidObservableSortedList.ItemComparator<T> itemComparator) {
-            this.itemComparator = itemComparator;
-        }
-
-        @Override
-        public int compare(T o1, T o2) {
-            return itemComparator.compare(o1, o2);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableElement.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableElement.java
deleted file mode 100644
index b7fc36aca..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableElement.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import de.kuschku.util.observables.IObservable;
-import de.kuschku.util.observables.callbacks.GeneralCallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiGeneralCallback;
-
-public class ObservableElement<T> implements IObservable<GeneralCallback<T>> {
-    private MultiGeneralCallback<T> callbacks = MultiGeneralCallback.of();
-
-    private T value;
-
-    public ObservableElement(T value) {
-        this.value = value;
-    }
-
-    public ObservableElement() {
-        this.value = null;
-    }
-
-    @Override
-    public void addCallback(GeneralCallback<T> callback) {
-        callbacks.addCallback(callback);
-    }
-
-    @Override
-    public void removeCallback(GeneralCallback<T> callback) {
-        callbacks.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callbacks.removeCallbacks();
-    }
-
-    public void set(T value) {
-        this.value = value;
-    }
-
-    public T get() {
-        return this.value;
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableElementList.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableElementList.java
deleted file mode 100644
index dc45cae95..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableElementList.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiElementCallbackWrapper;
-
-@SuppressWarnings("unchecked")
-public class ObservableElementList<T> extends ArrayList<T> implements IObservableList<ElementCallback<T>, T> {
-    @NonNull
-    private final MultiElementCallbackWrapper<T> callback = MultiElementCallbackWrapper.<T>of();
-
-    public ObservableElementList(int capacity) {
-        super(capacity);
-    }
-
-    public ObservableElementList() {
-        super();
-    }
-
-    public ObservableElementList(@NonNull Collection<? extends T> collection) {
-        super(collection);
-    }
-
-    public void addCallback(@NonNull ElementCallback<T> callback) {
-        this.callback.addCallback(callback);
-    }
-
-    public void removeCallback(@NonNull ElementCallback<T> callback) {
-        this.callback.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callback.removeCallbacks();
-    }
-
-    private int getPosition() {
-        return isEmpty() ? 0 : size() - 1;
-    }
-
-    @Override
-    public boolean add(T object) {
-        add(getPosition(), object);
-        return true;
-    }
-
-    @Override
-    public void add(int index, T object) {
-        super.add(index, object);
-        callback.notifyItemInserted(object);
-    }
-
-    @Override
-    public boolean addAll(@NonNull Collection<? extends T> collection) {
-        return addAll(getPosition(), collection);
-    }
-
-    @Override
-    public boolean addAll(int index, @NonNull Collection<? extends T> collection) {
-        boolean result = super.addAll(index, collection);
-        if (result)
-            for (T element : collection)
-                callback.notifyItemInserted(element);
-        return result;
-    }
-
-    @Override
-    public T remove(int index) {
-        T result = super.remove(index);
-        callback.notifyItemRemoved(result);
-        return result;
-    }
-
-    @Override
-    public boolean remove(Object object) {
-        int position = indexOf(object);
-        if (position == -1) {
-            return false;
-        } else {
-            remove(position);
-            callback.notifyItemRemoved((T) object);
-            return true;
-        }
-    }
-
-    @Override
-    protected void removeRange(int fromIndex, int toIndex) {
-        for (int i = fromIndex; i < toIndex; i++) {
-            remove(get(i));
-        }
-    }
-
-    @Override
-    public int indexOf(Object object) {
-        for (int i = 0; i < size(); i++) {
-            if (get(i) == object) return i;
-        }
-        return -1;
-    }
-
-    @Override
-    public int lastIndexOf(Object object) {
-        for (int i = size() - 1; i >= 0; i--) {
-            if (get(i) == object) return i;
-        }
-        return -1;
-    }
-
-    @NonNull
-    @Override
-    public Iterator<T> iterator() {
-        return new CallbackedArrayListIterator<>(super.iterator());
-    }
-
-    class CallbackedArrayListIterator<E> implements Iterator<E> {
-        final Iterator<E> iterator;
-        E current;
-
-        public CallbackedArrayListIterator(Iterator<E> iterator) {
-            this.iterator = iterator;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-
-        @Override
-        public E next() {
-            current = iterator.next();
-            return current;
-        }
-
-        @Override
-        public void remove() {
-            iterator.remove();
-            callback.notifyItemRemoved((T) current);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableList.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableList.java
deleted file mode 100644
index d11b28780..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableList.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiUICallbackWrapper;
-
-public class ObservableList<T> extends ArrayList<T> implements IObservableList<UICallback, T> {
-    @NonNull
-    private final MultiUICallbackWrapper callback = MultiUICallbackWrapper.of();
-
-    public ObservableList() {
-        super();
-    }
-
-    public ObservableList(int capacity) {
-        super(capacity);
-    }
-
-    public ObservableList(@NonNull Collection<? extends T> collection) {
-        super(collection);
-    }
-
-    public void addCallback(@NonNull UICallback callback) {
-        this.callback.addCallback(callback);
-    }
-
-    public void removeCallback(@NonNull UICallback callback) {
-        this.callback.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callback.removeCallbacks();
-    }
-
-    private int getPosition() {
-        return isEmpty() ? 0 : size() - 1;
-    }
-
-    @Override
-    public boolean add(T object) {
-        add(getPosition(), object);
-        return true;
-    }
-
-    @Override
-    public void add(int index, T object) {
-        super.add(index, object);
-        callback.notifyItemInserted(index);
-    }
-
-    @Override
-    public boolean addAll(@NonNull Collection<? extends T> collection) {
-        return addAll(getPosition(), collection);
-    }
-
-    @Override
-    public boolean addAll(int index, @NonNull Collection<? extends T> collection) {
-        boolean result = super.addAll(index, collection);
-        if (result)
-            callback.notifyItemRangeInserted(index, collection.size());
-        return result;
-    }
-
-    @Override
-    public T remove(int index) {
-        T result = super.remove(index);
-        callback.notifyItemRemoved(index);
-        return result;
-    }
-
-    @Override
-    public boolean remove(Object object) {
-        int position = indexOf(object);
-        if (position == -1) {
-            return false;
-        } else {
-            remove(position);
-            return true;
-        }
-    }
-
-    @Override
-    protected void removeRange(int fromIndex, int toIndex) {
-        super.removeRange(fromIndex, toIndex);
-        callback.notifyItemRangeRemoved(fromIndex, toIndex - fromIndex);
-    }
-
-    @Override
-    public int indexOf(Object object) {
-        for (int i = 0; i < size(); i++) {
-            if (get(i) == object) return i;
-        }
-        return -1;
-    }
-
-    @Override
-    public int lastIndexOf(Object object) {
-        for (int i = size() - 1; i >= 0; i--) {
-            if (get(i) == object) return i;
-        }
-        return -1;
-    }
-
-    @Override
-    public void clear() {
-        int size = size();
-        super.clear();
-        callback.notifyItemRangeRemoved(0, size);
-    }
-
-    @Override
-    public T set(int index, T element) {
-        T set = super.set(index, element);
-        callback.notifyItemChanged(index);
-        return set;
-    }
-
-    @NonNull
-    @Override
-    public Iterator<T> iterator() {
-        return new CallbackedArrayListIterator<>(super.iterator());
-    }
-
-    class CallbackedArrayListIterator<E> implements Iterator<E> {
-        final Iterator<E> iterator;
-        int position = 0;
-
-        public CallbackedArrayListIterator(Iterator<E> iterator) {
-            this.iterator = iterator;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-
-        @Override
-        public E next() {
-            position++;
-            return iterator.next();
-        }
-
-        @Override
-        public void remove() {
-            iterator.remove();
-            callback.notifyItemRemoved(position);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableSet.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableSet.java
deleted file mode 100644
index a0832a1fb..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableSet.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import de.kuschku.util.observables.callbacks.ElementCallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiElementCallbackWrapper;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings("unchecked")
-public class ObservableSet<T> extends HashSet<T> implements IObservableSet<ElementCallback<T>, T>, ElementCallback<T> {
-    @NonNull
-    private final MultiElementCallbackWrapper<T> callback = MultiElementCallbackWrapper.<T>of();
-
-    public ObservableSet(int capacity) {
-        super(capacity);
-        assertNotNull(this.callback);
-    }
-
-    public ObservableSet() {
-        super();
-        assertNotNull(this.callback);
-    }
-
-    public ObservableSet(@NonNull Collection<? extends T> collection) {
-        assertNotNull(this.callback);
-
-        assertNotNull(callback);
-    }
-
-    public void addCallback(@NonNull ElementCallback<T> callback) {
-        assertNotNull(this.callback);
-
-        this.callback.addCallback(callback);
-    }
-
-    public void removeCallback(@NonNull ElementCallback<T> callback) {
-        assertNotNull(this.callback);
-
-        this.callback.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callback.removeCallbacks();
-    }
-
-    @Override
-    public boolean add(T object) {
-        assertNotNull(this.callback);
-
-        boolean result = super.add(object);
-        callback.notifyItemInserted(object);
-        return result;
-    }
-
-    @Override
-    public boolean addAll(@NonNull Collection<? extends T> collection) {
-        assertNotNull(this.callback);
-
-        boolean result = super.addAll(collection);
-        if (result)
-            for (T element : collection)
-                callback.notifyItemInserted(element);
-        return result;
-    }
-
-    @Override
-    public boolean remove(@Nullable Object object) {
-        assertNotNull(this.callback);
-
-        boolean contains = contains(object);
-        if (contains && object != null) {
-            super.remove(object);
-            callback.notifyItemRemoved((T) object);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    @NonNull
-    @Override
-    public Iterator<T> iterator() {
-        return new CallbackedArrayListIterator<>(super.iterator());
-    }
-
-    @Override
-    public void notifyItemInserted(T element) {
-        callback.notifyItemInserted(element);
-    }
-
-    @Override
-    public void notifyItemRemoved(T element) {
-        callback.notifyItemRemoved(element);
-    }
-
-    @Override
-    public void notifyItemChanged(T element) {
-        callback.notifyItemChanged(element);
-    }
-
-    class CallbackedArrayListIterator<E> implements Iterator<E> {
-        final Iterator<E> iterator;
-        E current;
-
-        public CallbackedArrayListIterator(Iterator<E> iterator) {
-            this.iterator = iterator;
-        }
-
-        @Override
-        public boolean hasNext() {
-            assertNotNull(iterator);
-            return iterator.hasNext();
-        }
-
-        @Nullable
-        @Override
-        public E next() {
-            assertNotNull(iterator);
-            current = iterator.next();
-            return current;
-        }
-
-        @Override
-        public void remove() {
-            assertNotNull(callback);
-            assertNotNull(iterator);
-
-            iterator.remove();
-            callback.notifyItemRemoved((T) current);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/observables/lists/ObservableSortedList.java b/app/src/main/java/de/kuschku/util/observables/lists/ObservableSortedList.java
deleted file mode 100644
index 04eceab95..000000000
--- a/app/src/main/java/de/kuschku/util/observables/lists/ObservableSortedList.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.observables.lists;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-
-import de.kuschku.util.observables.callbacks.UICallback;
-import de.kuschku.util.observables.callbacks.wrappers.MultiUICallbackWrapper;
-
-public class ObservableSortedList<T> extends ArrayList<T> implements IObservableList<UICallback, T> {
-    @NonNull
-    private final MultiUICallbackWrapper callback = MultiUICallbackWrapper.of();
-
-    private final Comparator<T> comparator;
-
-    public ObservableSortedList(Comparator<T> comparator) {
-        super();
-        this.comparator = comparator;
-    }
-
-    public ObservableSortedList(Comparator<T> comparator, int capacity) {
-        super(capacity);
-        this.comparator = comparator;
-    }
-
-    public ObservableSortedList(AndroidObservableSortedList.ItemComparator<T> itemComparator) {
-        this.comparator = new ObservableComparableSortedList.ItemComparatorWrapper<>(itemComparator);
-    }
-
-    public void addCallback(@NonNull UICallback callback) {
-        this.callback.addCallback(callback);
-    }
-
-    public void removeCallback(@NonNull UICallback callback) {
-        this.callback.removeCallback(callback);
-    }
-
-    @Override
-    public void removeCallbacks() {
-        callback.removeCallbacks();
-    }
-
-    private int getPosition(T key) {
-        int low = 0;
-        int high = size() - 1;
-
-        while (low <= high) {
-            int mid = (low + high) >>> 1;
-            T midVal = get(mid);
-            int cmp = comparator.compare(midVal, key);
-
-            if (cmp < 0)
-                low = mid + 1;
-            else if (cmp > 0)
-                high = mid - 1;
-            else
-                return -1; // key found
-        }
-        return low;  // key not found
-    }
-
-    @Override
-    public boolean add(T object) {
-        int position = addInternal(object);
-        callback.notifyItemInserted(indexOf(object));
-        return position != -1;
-    }
-
-    public int addInternal(T object) {
-        int position = getPosition(object);
-        if (position != -1) super.add(position, object);
-        return position;
-    }
-
-    @Override
-    public void add(int index, T object) {
-        add(object);
-    }
-
-    @Override
-    public boolean addAll(@NonNull Collection<? extends T> collection) {
-        boolean addedAny = false;
-        for (T t : collection) {
-            addedAny |= add(t);
-        }
-        return addedAny;
-    }
-
-    @Override
-    public boolean addAll(int index, @NonNull Collection<? extends T> collection) {
-        return addAll(collection);
-    }
-
-    @Override
-    public T remove(int index) {
-        T result = super.remove(index);
-        callback.notifyItemRemoved(index);
-        return result;
-    }
-
-    @Override
-    public boolean remove(Object object) {
-        int position = super.indexOf(object);
-        if (position == -1) {
-            return false;
-        } else {
-            remove(position);
-            return true;
-        }
-    }
-
-    @Override
-    protected void removeRange(int fromIndex, int toIndex) {
-        super.removeRange(fromIndex, toIndex);
-        callback.notifyItemRangeRemoved(fromIndex, toIndex - fromIndex);
-    }
-
-    @Override
-    public int indexOf(Object object) {
-        return Collections.binarySearch(this, (T) object, comparator);
-    }
-
-    @Override
-    public int lastIndexOf(Object object) {
-        return Collections.binarySearch(this, (T) object, comparator);
-    }
-
-    @Override
-    public void clear() {
-        int size = size();
-        super.clear();
-        callback.notifyItemRangeRemoved(0, size);
-    }
-
-    @Override
-    public T set(int index, T element) {
-        T set = super.set(index, element);
-        notifyItemChanged(element);
-        callback.notifyItemChanged(index);
-        return set;
-    }
-
-    public void notifyItemChanged(T element) {
-        int index = super.indexOf(element);
-        super.remove(index);
-        int position = getPosition(element);
-        if (position != index) {
-            callback.notifyItemRemoved(index);
-            add(position, element);
-        } else {
-            super.add(index, element);
-            callback.notifyItemChanged(index);
-        }
-    }
-
-    @NonNull
-    @Override
-    public Iterator<T> iterator() {
-        return new CallbackedArrayListIterator<>(super.iterator());
-    }
-
-    class CallbackedArrayListIterator<E> implements Iterator<E> {
-        final Iterator<E> iterator;
-        int position = 0;
-
-        public CallbackedArrayListIterator(Iterator<E> iterator) {
-            this.iterator = iterator;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-
-        @Override
-        public E next() {
-            position++;
-            return iterator.next();
-        }
-
-        @Override
-        public void remove() {
-            iterator.remove();
-            callback.notifyItemRemoved(position);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/AbstractPreferenceElement.java b/app/src/main/java/de/kuschku/util/preferences/AbstractPreferenceElement.java
deleted file mode 100644
index 3553577e8..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/AbstractPreferenceElement.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public abstract class AbstractPreferenceElement<T> implements PreferenceElement<T>, OnChangeListener<T> {
-    protected final SharedPreferences pref;
-    protected final String key;
-    protected final T defValue;
-    private final Set<OnChangeListener<T>> listeners = new HashSet<>();
-    protected SharedPreferences.Editor edit;
-
-    public AbstractPreferenceElement(SharedPreferences pref, String key, T defValue) {
-        this.pref = pref;
-        this.key = key;
-        this.defValue = defValue;
-    }
-
-    public void change() {
-        change(get());
-    }
-
-    public void change(T value) {
-        for (OnChangeListener<T> listener : listeners)
-            listener.change(value);
-    }
-
-    public void addChangeListener(OnChangeListener<T> listener) {
-        listeners.add(listener);
-    }
-
-    public void removeChangeListener(OnChangeListener<T> listener) {
-        listeners.remove(listener);
-    }
-
-    protected abstract void put(T value);
-
-    public void batch(SharedPreferences.Editor edit) {
-        if (this.edit != null) this.edit.commit();
-        this.edit = edit;
-    }
-
-    public T get() {
-        return or(defValue);
-    }
-
-    public void set(T value) {
-        edit = pref.edit();
-        put(value);
-        edit.commit();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/BooleanPreference.java b/app/src/main/java/de/kuschku/util/preferences/BooleanPreference.java
deleted file mode 100644
index 1b6f77a38..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/BooleanPreference.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-public class BooleanPreference extends AbstractPreferenceElement<Boolean> {
-    public BooleanPreference(SharedPreferences pref, String key, Boolean init) {
-        super(pref, key, init);
-    }
-
-    @Override
-    protected void put(Boolean value) {
-        edit.putBoolean(key, value);
-    }
-
-    @Override
-    public Boolean or(Boolean defValue) {
-        return pref.getBoolean(key, defValue);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/FloatPreference.java b/app/src/main/java/de/kuschku/util/preferences/FloatPreference.java
deleted file mode 100644
index 81c93ba5a..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/FloatPreference.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-public class FloatPreference extends AbstractPreferenceElement<Float> {
-    public FloatPreference(SharedPreferences pref, String key, Float init) {
-        super(pref, key, init);
-    }
-
-    @Override
-    protected void put(Float value) {
-        edit.putFloat(key, value);
-    }
-
-    @Override
-    public Float or(Float defValue) {
-        return pref.getFloat(key, defValue);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/IntPreference.java b/app/src/main/java/de/kuschku/util/preferences/IntPreference.java
deleted file mode 100644
index 7032bfbaf..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/IntPreference.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-public class IntPreference extends AbstractPreferenceElement<Integer> {
-    public IntPreference(SharedPreferences pref, String key, Integer defValue) {
-        super(pref, key, defValue);
-    }
-
-    @Override
-    protected void put(Integer value) {
-        edit.putInt(key, value);
-    }
-
-    @Override
-    public Integer or(Integer defValue) {
-        return pref.getInt(key, defValue);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/LongPreference.java b/app/src/main/java/de/kuschku/util/preferences/LongPreference.java
deleted file mode 100644
index 0b0d14b80..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/LongPreference.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-public class LongPreference extends AbstractPreferenceElement<Long> {
-    public LongPreference(SharedPreferences pref, String key, Long defValue) {
-        super(pref, key, defValue);
-    }
-
-    @Override
-    protected void put(Long value) {
-        edit.putLong(key, value);
-    }
-
-    @Override
-    public Long or(Long defValue) {
-        return pref.getLong(key, defValue);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/OnChangeListener.java b/app/src/main/java/de/kuschku/util/preferences/OnChangeListener.java
deleted file mode 100644
index 743cec657..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/OnChangeListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-public interface OnChangeListener<T> {
-    void change(T value);
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/PreferenceElement.java b/app/src/main/java/de/kuschku/util/preferences/PreferenceElement.java
deleted file mode 100644
index 2ad588e3d..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/PreferenceElement.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-public interface PreferenceElement<T> {
-    void addChangeListener(OnChangeListener<T> listener);
-
-    void removeChangeListener(OnChangeListener<T> listener);
-
-    T get();
-
-    T or(T otherwise);
-
-    void set(T value);
-}
diff --git a/app/src/main/java/de/kuschku/util/preferences/StringPreference.java b/app/src/main/java/de/kuschku/util/preferences/StringPreference.java
deleted file mode 100644
index 67a802c0e..000000000
--- a/app/src/main/java/de/kuschku/util/preferences/StringPreference.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.preferences;
-
-import android.content.SharedPreferences;
-
-public class StringPreference extends AbstractPreferenceElement<String> {
-    public StringPreference(SharedPreferences pref, String key, String init) {
-        super(pref, key, init);
-    }
-
-    @Override
-    protected void put(String value) {
-        edit.putString(key, value);
-    }
-
-    @Override
-    public String or(String defValue) {
-        return pref.getString(key, defValue);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/regex/GlobTransformer.java b/app/src/main/java/de/kuschku/util/regex/GlobTransformer.java
deleted file mode 100644
index 043895bed..000000000
--- a/app/src/main/java/de/kuschku/util/regex/GlobTransformer.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.regex;
-
-import android.support.annotation.NonNull;
-
-public class GlobTransformer {
-    private GlobTransformer() {
-
-    }
-
-    /**
-     * Converts a standard POSIX Shell globbing pattern into a regular expression
-     * pattern. The result can be used with the standard {@link java.util.regex} API to
-     * recognize strings which match the glob pattern.
-     * <p>
-     * See also, the POSIX Shell language:
-     * http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13_01
-     *
-     * @param pattern A glob pattern.
-     * @return A regex pattern to recognize the given glob pattern.
-     */
-    public static String convertGlobToRegex(@NonNull String pattern) {
-        StringBuilder sb = new StringBuilder(pattern.length());
-        int inGroup = 0;
-        int inClass = 0;
-        int firstIndexInClass = -1;
-        char[] arr = pattern.toCharArray();
-        for (int i = 0; i < arr.length; i++) {
-            char ch = arr[i];
-            switch (ch) {
-                case '\\':
-                    if (++i >= arr.length) {
-                        sb.append('\\');
-                    } else {
-                        char next = arr[i];
-                        switch (next) {
-                            case ',':
-                                // escape not needed
-                                break;
-                            case 'Q':
-                            case 'E':
-                                // extra escape needed
-                                sb.append('\\');
-                            default:
-                                sb.append('\\');
-                        }
-                        sb.append(next);
-                    }
-                    break;
-                case '*':
-                    if (inClass == 0)
-                        sb.append(".*");
-                    else
-                        sb.append('*');
-                    break;
-                case '?':
-                    if (inClass == 0)
-                        sb.append('.');
-                    else
-                        sb.append('?');
-                    break;
-                case '[':
-                    inClass++;
-                    firstIndexInClass = i + 1;
-                    sb.append('[');
-                    break;
-                case ']':
-                    inClass--;
-                    sb.append(']');
-                    break;
-                case '.':
-                case '(':
-                case ')':
-                case '+':
-                case '|':
-                case '^':
-                case '$':
-                case '@':
-                case '%':
-                    if (inClass == 0 || (firstIndexInClass == i && ch == '^'))
-                        sb.append('\\');
-                    sb.append(ch);
-                    break;
-                case '!':
-                    if (firstIndexInClass == i)
-                        sb.append('^');
-                    else
-                        sb.append('!');
-                    break;
-                case '{':
-                    inGroup++;
-                    sb.append('(');
-                    break;
-                case '}':
-                    inGroup--;
-                    sb.append(')');
-                    break;
-                case ',':
-                    if (inGroup > 0)
-                        sb.append('|');
-                    else
-                        sb.append(',');
-                    break;
-                default:
-                    sb.append(ch);
-            }
-        }
-        return sb.toString();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java b/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java
deleted file mode 100644
index 21a79ba11..000000000
--- a/app/src/main/java/de/kuschku/util/regex/SmartRegEx.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.regex;
-
-import android.support.annotation.NonNull;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-
-public class SmartRegEx {
-    @NonNull
-    private final Pattern pattern;
-    @NonNull
-    private final String rule;
-
-    public SmartRegEx(@NonNull String rule, int flags, @NonNull Syntax syntax) {
-        this.pattern = fromSyntax(syntax, rule, flags);
-        this.rule = rule;
-    }
-
-    @NonNull
-    public String rule() {
-        return rule;
-    }
-
-    public boolean matches(@NonNull String text, boolean inexact) {
-        Matcher matcher = pattern.matcher(text);
-        if (inexact) {
-            return matcher.find();
-        } else {
-            return matcher.matches();
-        }
-    }
-
-    private Pattern fromSyntax(@NonNull Syntax syntax, @NonNull String rule, int flags) {
-        switch (syntax) {
-            case WILDCARD:
-                return transformWildcard(rule, flags);
-            case REGEX:
-            default:
-                return Pattern.compile(rule, flags);
-        }
-    }
-
-    private Pattern transformWildcard(@NonNull String glob, int flags) {
-        return Pattern.compile(GlobTransformer.convertGlobToRegex(glob), flags);
-    }
-
-    @Override
-    public String toString() {
-        return rule;
-    }
-
-    public enum Syntax {
-        WILDCARD,
-        REGEX
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java b/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
deleted file mode 100644
index e9ee18ee2..000000000
--- a/app/src/main/java/de/kuschku/util/servicebound/BoundActivity.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.servicebound;
-
-import android.content.ComponentName;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.support.annotation.Nullable;
-import android.support.annotation.StyleRes;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.app.AppCompatDelegate;
-import android.view.Menu;
-
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.libquassel.events.ConnectionChangeEvent;
-import de.kuschku.quasseldroid_ng.R;
-import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
-import de.kuschku.quasseldroid_ng.service.QuasselService;
-import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.quasseldroid_ng.ui.theme.AppTheme;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.annotationbind.AutoBinder;
-import de.kuschku.util.backports.Consumer;
-import de.kuschku.util.ui.MenuTint;
-
-public abstract class BoundActivity extends AppCompatActivity {
-    static {
-        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
-    }
-
-    protected final AppContext context = new AppContext();
-    protected QuasselService.LocalBinder binder;
-    private Consumer<ClientBackgroundThread> consumer = BoundActivity.this::onConnectToThread;
-    private final ServiceConnection connection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            if (service instanceof QuasselService.LocalBinder) {
-                binder = (QuasselService.LocalBinder) service;
-                binder.addCallback(consumer);
-                onConnectToThread(binder.getBackgroundThread());
-            }
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            binder = null;
-            onConnectToThread(null);
-        }
-    };
-    @StyleRes
-    private int themeId;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        themeId = ServiceHelper.initContext(context, this);
-        super.onCreate(savedInstanceState);
-        context.settings().preferenceTheme.addChangeListener(s -> recreate());
-        ServiceHelper.startServiceIfNotRunning(this);
-        ServiceHelper.connectToService(this, connection);
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-        ServiceHelper.connectToService(this, connection);
-        if (themeId != AppTheme.themeFromString(context.settings().preferenceTheme.get()).themeId) {
-            finish();
-            startActivity(getIntent());
-        }
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        binder.removeCallback(consumer);
-        setProvider(null);
-        ServiceHelper.disconnect(this, connection);
-    }
-
-    protected void connectToServer(Account account) {
-        BusProvider provider = new BusProvider();
-        binder.startBackgroundThread(provider, account);
-    }
-
-    protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
-        if (thread == null) {
-            context.withClient(null);
-            setProvider(null);
-        } else {
-            context.withClient(thread.client().client);
-            setProvider(thread.client().provider);
-        }
-    }
-
-    protected void setProvider(BusProvider provider) {
-        BusProvider oldProvider = context.provider();
-        if (oldProvider != null)
-            oldProvider.event.unregister(this);
-        context.withProvider(provider);
-        if (provider != null)
-            provider.event.register(this);
-    }
-
-    protected void onConnected() {
-    }
-
-    protected void onDisconnected() {
-    }
-
-    @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
-    public void onConnectionStatusChange(ConnectionChangeEvent event) {
-        if (event.status == ConnectionChangeEvent.Status.CONNECTED)
-            onConnected();
-        if (event.status == ConnectionChangeEvent.Status.DISCONNECTED)
-            onDisconnected();
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        boolean value = super.onCreateOptionsMenu(menu);
-        MenuTint.colorIcons(this, menu, AutoBinder.obtainColor(R.attr.colorFill, getSupportActionBar().getThemedContext().getTheme()));
-        return value;
-    }
-
-    protected void stopConnection() {
-        if (binder != null) {
-            binder.stopBackgroundThread();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/servicebound/BoundFragment.java b/app/src/main/java/de/kuschku/util/servicebound/BoundFragment.java
deleted file mode 100644
index c71ac1081..000000000
--- a/app/src/main/java/de/kuschku/util/servicebound/BoundFragment.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.servicebound;
-
-import android.content.ComponentName;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-
-import de.kuschku.libquassel.BusProvider;
-import de.kuschku.quasseldroid_ng.service.ClientBackgroundThread;
-import de.kuschku.quasseldroid_ng.service.QuasselService;
-import de.kuschku.quasseldroid_ng.ui.chat.util.ServiceHelper;
-import de.kuschku.quasseldroid_ng.ui.theme.AppContext;
-import de.kuschku.util.accounts.Account;
-import de.kuschku.util.backports.Consumer;
-
-public abstract class BoundFragment extends Fragment {
-    protected final AppContext context = new AppContext();
-    private QuasselService.LocalBinder binder;
-    private Consumer<ClientBackgroundThread> consumer;
-    private final ServiceConnection connection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            if (service instanceof QuasselService.LocalBinder) {
-                binder = (QuasselService.LocalBinder) service;
-                consumer = BoundFragment.this::onConnectToThread;
-                binder.addCallback(consumer);
-                onConnectToThread(binder.getBackgroundThread());
-            }
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            binder = null;
-            onConnectToThread(null);
-        }
-    };
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        ServiceHelper.initContext(context, getActivity());
-        super.onCreate(savedInstanceState);
-        ServiceHelper.startServiceIfNotRunning(getContext());
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        ServiceHelper.connectToService(getContext(), connection);
-    }
-
-    protected void connectToServer(Account account) {
-        BusProvider provider = new BusProvider();
-        binder.startBackgroundThread(provider, account);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        if (binder != null)
-            binder.removeCallback(consumer);
-        ServiceHelper.disconnect(getContext(), connection);
-    }
-
-    protected void onConnectToThread(@Nullable ClientBackgroundThread thread) {
-        if (thread == null) {
-            context.withClient(null);
-            setProvider(null);
-        } else {
-            context.withClient(thread.client().client);
-            setProvider(thread.client().provider);
-        }
-    }
-
-    protected void setProvider(BusProvider provider) {
-        BusProvider oldProvider = context.provider();
-        if (oldProvider != null)
-            oldProvider.event.unregister(this);
-        if (provider != null)
-            provider.event.register(this);
-        context.withProvider(provider);
-    }
-
-    protected void stopConnection() {
-        if (binder != null) {
-            binder.stopBackgroundThread();
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java b/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java
deleted file mode 100644
index 8e68b3dfd..000000000
--- a/app/src/main/java/de/kuschku/util/ui/AnimationHelper.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Transformation;
-
-public class AnimationHelper {
-    public static void expand(final ViewGroup v) {
-        v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        final int targetHeight = v.getMeasuredHeight();
-
-        // Older versions of android (pre API 21) cancel animations for views with a height of 0.
-        v.getLayoutParams().height = 1;
-        v.setVisibility(View.VISIBLE);
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                v.getLayoutParams().height = interpolatedTime == 1
-                        ? ViewGroup.LayoutParams.WRAP_CONTENT
-                        : (int) (targetHeight * interpolatedTime);
-                v.setAlpha(interpolatedTime);
-                v.requestLayout();
-            }
-
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        // 1dp/ms
-        a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
-
-    public static void collapse(final ViewGroup v) {
-        final int initialHeight = v.getMeasuredHeight();
-
-        Animation a = new Animation() {
-            @Override
-            protected void applyTransformation(float interpolatedTime, Transformation t) {
-                if (interpolatedTime == 1) {
-                    v.setVisibility(View.GONE);
-                } else {
-                    v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
-                    v.setAlpha(1 - interpolatedTime);
-                    v.requestLayout();
-                }
-            }
-
-            @Override
-            public boolean willChangeBounds() {
-                return true;
-            }
-        };
-
-        a.setDuration((int) (initialHeight / v.getContext().getResources().getDisplayMetrics().density));
-        v.startAnimation(a);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/Bindable.java b/app/src/main/java/de/kuschku/util/ui/Bindable.java
deleted file mode 100644
index 0413716cc..000000000
--- a/app/src/main/java/de/kuschku/util/ui/Bindable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-public interface Bindable<T> {
-    void bind(T t);
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java b/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java
deleted file mode 100644
index de953169b..000000000
--- a/app/src/main/java/de/kuschku/util/ui/DateTimeFormatHelper.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-
-import java.text.SimpleDateFormat;
-
-public class DateTimeFormatHelper {
-    @NonNull
-    private final Context context;
-
-    public DateTimeFormatHelper(@NonNull Context context) {
-        this.context = context;
-    }
-
-    @NonNull
-    public static DateTimeFormatter getTimeFormatter(Context ctx) {
-        return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getTimeFormat(ctx)).toLocalizedPattern());
-    }
-
-    @NonNull
-    public static DateTimeFormatter getDateFormatter(Context ctx) {
-        return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getDateFormat(ctx)).toLocalizedPattern());
-    }
-
-    @NonNull
-    public static DateTimeFormatter getLongDateFormatter(Context ctx) {
-        return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getLongDateFormat(ctx)).toLocalizedPattern());
-    }
-
-    @NonNull
-    public static DateTimeFormatter getMediumDateFormatter(Context ctx) {
-        return DateTimeFormat.forPattern(((SimpleDateFormat) android.text.format.DateFormat.getMediumDateFormat(ctx)).toLocalizedPattern());
-    }
-
-    @NonNull
-    public DateTimeFormatter getTimeFormatter() {
-        return getTimeFormatter(context);
-    }
-
-    @NonNull
-    public DateTimeFormatter getDateFormatter() {
-        return getDateFormatter(context);
-    }
-
-    @NonNull
-    public DateTimeFormatter getLongDateFormatter() {
-        return getLongDateFormatter(context);
-    }
-
-    @NonNull
-    public DateTimeFormatter getMediumDateFormatter() {
-        return getMediumDateFormatter(context);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/DividerItemDecoration.java b/app/src/main/java/de/kuschku/util/ui/DividerItemDecoration.java
deleted file mode 100644
index d5843ab2b..000000000
--- a/app/src/main/java/de/kuschku/util/ui/DividerItemDecoration.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-
-public class DividerItemDecoration extends RecyclerView.ItemDecoration {
-
-    private static final int[] ATTRS = new int[]{android.R.attr.listDivider};
-
-    private Drawable mDivider;
-
-    /**
-     * Default divider will be used
-     */
-    public DividerItemDecoration(Context context) {
-        final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS);
-        mDivider = styledAttributes.getDrawable(0);
-        styledAttributes.recycle();
-    }
-
-    /**
-     * Custom divider will be used
-     */
-    public DividerItemDecoration(Context context, int resId) {
-        mDivider = ContextCompat.getDrawable(context, resId);
-    }
-
-    @Override
-    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
-        int left = parent.getPaddingLeft();
-        int right = parent.getWidth() - parent.getPaddingRight();
-
-        int childCount = parent.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View child = parent.getChildAt(i);
-
-            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
-
-            int top = child.getBottom() + params.bottomMargin;
-            int bottom = top + mDivider.getIntrinsicHeight();
-
-            mDivider.setBounds(left, top, right, bottom);
-            mDivider.draw(c);
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/kuschku/util/ui/MaterialActionBarDrawerToggle.java b/app/src/main/java/de/kuschku/util/ui/MaterialActionBarDrawerToggle.java
deleted file mode 100644
index b6de73bc0..000000000
--- a/app/src/main/java/de/kuschku/util/ui/MaterialActionBarDrawerToggle.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-import android.app.Activity;
-import android.support.annotation.StringRes;
-import android.support.annotation.UiThread;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
-import android.view.View;
-
-@UiThread
-public class MaterialActionBarDrawerToggle extends ActionBarDrawerToggle {
-    public MaterialActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout,
-                                         Toolbar toolbar, @StringRes int openDrawerContentDescRes,
-                                         @StringRes int closeDrawerContentDescRes) {
-        super(activity, drawerLayout, toolbar, openDrawerContentDescRes, closeDrawerContentDescRes);
-    }
-
-    @Override
-    public void onDrawerSlide(View drawerView, float slideOffset) {
-        super.onDrawerSlide(drawerView, 0);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/MenuTint.java b/app/src/main/java/de/kuschku/util/ui/MenuTint.java
deleted file mode 100644
index b0251eb33..000000000
--- a/app/src/main/java/de/kuschku/util/ui/MenuTint.java
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Copyright (C) 2015. Jared Rummler <jared.rummler@gmail.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package de.kuschku.util.ui;
-
-import android.app.Activity;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.support.v4.view.MenuItemCompat;
-import android.support.v7.view.menu.MenuItemImpl;
-import android.support.v7.widget.ActionMenuView;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MenuItem.OnActionExpandListener;
-import android.view.SubMenu;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.SearchView;
-
-import java.lang.reflect.Method;
-
-/**
- * <p>Apply colors and/or transparency to menu icons in a {@link Menu}.</p>
- * <p>
- * <p>Example usage:</p>
- * <p>
- * <pre class="prettyprint">
- * public boolean onCreateOptionsMenu(Menu menu) {
- * ...
- * int color = getResources().getColor(R.color.your_awesome_color);
- * int alpha = 204; // 80% transparency
- * MenuTint.on(menu).setMenuItemIconColor(color).setMenuItemIconAlpha(alpha).apply(this);
- * ...
- * }
- * </pre>
- */
-public class MenuTint {
-
-    private static final String TAG = "MenuTint";
-
-    private static Method nativeIsActionButton;
-    private final Menu menu;
-    private final Integer originalMenuItemIconColor;
-    private final Integer menuItemIconAlpha;
-    private final Integer subMenuIconColor;
-    private final Integer subMenuIconAlpha;
-    private final Integer overflowDrawableId;
-    private final boolean reApplyOnChange;
-    private final boolean forceIcons;
-    private Integer menuItemIconColor;
-    private ImageView overflowButton;
-    private ViewGroup actionBarView;
-
-    private MenuTint(Builder builder) {
-        menu = builder.menu;
-        originalMenuItemIconColor = builder.originalMenuItemIconColor;
-        menuItemIconColor = builder.menuItemIconColor;
-        menuItemIconAlpha = builder.menuItemIconAlpha;
-        subMenuIconColor = builder.subMenuIconColor;
-        subMenuIconAlpha = builder.subMenuIconAlpha;
-        overflowDrawableId = builder.overflowDrawableId;
-        reApplyOnChange = builder.reApplyOnChange;
-        forceIcons = builder.forceIcons;
-    }
-
-    /**
-     * Check if an item is showing (not in the overflow menu).
-     *
-     * @param item the MenuItem.
-     * @return {@code true} if the MenuItem is visible on the ActionBar.
-     */
-    public static boolean isActionButton(MenuItem item) {
-        if (item instanceof MenuItemImpl) {
-            return ((MenuItemImpl) item).isActionButton();
-        }
-        if (nativeIsActionButton == null) {
-            try {
-                Class<?> MenuItemImpl = Class.forName("com.android.internal.view.menu.MenuItemImpl");
-                nativeIsActionButton = MenuItemImpl.getDeclaredMethod("isActionButton");
-                if (!nativeIsActionButton.isAccessible()) {
-                    nativeIsActionButton.setAccessible(true);
-                }
-            } catch (Exception ignored) {
-            }
-        }
-        try {
-            return (boolean) nativeIsActionButton.invoke(item, (Object[]) null);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return true;
-    }
-
-    /**
-     * Check if an item is in the overflow menu.
-     *
-     * @param item the MenuItem
-     * @return {@code true} if the MenuItem is in the overflow menu.
-     * @see #isActionButton(MenuItem)
-     */
-    public static boolean isInOverflow(MenuItem item) {
-        return !isActionButton(item);
-    }
-
-    /**
-     * Sets the color filter and/or the alpha transparency on a {@link MenuItem}'s icon.
-     *
-     * @param menuItem The {@link MenuItem} to theme.
-     * @param color    The color to set for the color filter or {@code null} for no changes.
-     * @param alpha    The alpha value (0...255) to set on the icon or {@code null} for no changes.
-     */
-    public static void colorMenuItem(MenuItem menuItem, Integer color, Integer alpha) {
-        if (color == null && alpha == null) {
-            return; // nothing to do.
-        }
-        Drawable drawable = menuItem.getIcon();
-        if (drawable != null) {
-            // If we don't mutate the drawable, then all drawables with this id will have the ColorFilter
-            drawable.mutate();
-            if (color != null) {
-                drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
-            }
-            if (alpha != null) {
-                drawable.setAlpha(alpha);
-            }
-        }
-    }
-
-    /**
-     * Set the menu to show MenuItem icons in the overflow window.
-     *
-     * @param menu the menu to force icons to show
-     */
-    public static void forceMenuIcons(Menu menu) {
-        try {
-            Class<?> MenuBuilder = menu.getClass();
-            Method setOptionalIconsVisible =
-                    MenuBuilder.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
-            if (!setOptionalIconsVisible.isAccessible()) {
-                setOptionalIconsVisible.setAccessible(true);
-            }
-            setOptionalIconsVisible.invoke(menu, true);
-        } catch (Exception ignored) {
-        }
-    }
-
-    public static Builder on(Menu menu) {
-        return new Builder(menu);
-    }
-
-    /**
-     * Apply a ColorFilter with the specified color to all icons in the menu.
-     *
-     * @param menu  the menu after items have been added.
-     * @param color the color for the ColorFilter.
-     */
-    public static void colorIcons(Menu menu, int color) {
-        MenuTint.on(menu).setMenuItemIconColor(color).apply();
-    }
-
-    public static void colorIcons(Activity activity, Menu menu, int color) {
-        MenuTint.on(menu).setMenuItemIconColor(color).apply(activity);
-    }
-
-    /**
-     * @param activity the Activity
-     * @return the OverflowMenuButton or {@code null} if it doesn't exist.
-     */
-    public static ImageView getOverflowMenuButton(Activity activity) {
-        return findOverflowMenuButton(activity, findActionBar(activity));
-    }
-
-    private static ImageView findOverflowMenuButton(Activity activity, ViewGroup viewGroup) {
-        if (viewGroup == null) {
-            return null;
-        }
-        ImageView overflow = null;
-        for (int i = 0, count = viewGroup.getChildCount(); i < count; i++) {
-            View v = viewGroup.getChildAt(i);
-            if (v instanceof ImageView
-                    && (v.getClass().getSimpleName().equals("OverflowMenuButton")
-                    || v instanceof ActionMenuView.ActionMenuChildView)) {
-                overflow = (ImageView) v;
-            } else if (v instanceof ViewGroup) {
-                overflow = findOverflowMenuButton(activity, (ViewGroup) v);
-            }
-            if (overflow != null) {
-                break;
-            }
-        }
-        return overflow;
-    }
-
-    private static ViewGroup findActionBar(Activity activity) {
-        int id = activity.getResources().getIdentifier("action_bar", "id", "android");
-        ViewGroup actionBar = null;
-        if (id != 0) {
-            actionBar = (ViewGroup) activity.findViewById(id);
-        }
-        if (actionBar == null) {
-            actionBar = findToolbar((ViewGroup)
-                    activity.findViewById(android.R.id.content).getRootView());
-        }
-        return actionBar;
-    }
-
-    private static ViewGroup findToolbar(ViewGroup viewGroup) {
-        ViewGroup toolbar = null;
-        for (int i = 0, len = viewGroup.getChildCount(); i < len; i++) {
-            View view = viewGroup.getChildAt(i);
-            if (view.getClass() == android.support.v7.widget.Toolbar.class
-                    || view.getClass().getName().equals("android.widget.Toolbar")) {
-                toolbar = (ViewGroup) view;
-            } else if (view instanceof ViewGroup) {
-                toolbar = findToolbar((ViewGroup) view);
-            }
-            if (toolbar != null) {
-                break;
-            }
-        }
-        return toolbar;
-    }
-
-    public void apply() {
-        if (forceIcons) {
-            forceMenuIcons(menu);
-        }
-
-        for (int i = 0, size = menu.size(); i < size; i++) {
-            MenuItem item = menu.getItem(i);
-            colorMenuItem(item, menuItemIconColor, menuItemIconAlpha);
-            if (reApplyOnChange) {
-                View view = item.getActionView();
-                if (view != null) {
-                    if (item instanceof MenuItemImpl) {
-                        ((MenuItemImpl) item).setSupportOnActionExpandListener(
-                                new SupportActionExpandListener(this));
-                    } else {
-                        item.setOnActionExpandListener(new NativeActionExpandListener(this));
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * <p>Sets a ColorFilter and/or alpha on all the {@link MenuItem}s in the menu, including the
-     * OverflowMenuButton.</p>
-     * <p>
-     * <p>Call this method after inflating/creating your menu in
-     * {@link Activity#onCreateOptionsMenu(Menu)}.</p>
-     * <p>
-     * <p>Note: This is targeted for the native ActionBar/Toolbar, not AppCompat.</p>
-     */
-    public void apply(Activity activity) {
-        apply();
-        actionBarView = findActionBar(activity);
-        if (actionBarView == null) {
-            Log.w(TAG, "Could not find the ActionBar");
-            return;
-        }
-
-        // We must wait for the view to be created to set a color filter on the drawables.
-        actionBarView.post(() -> {
-            for (int i = 0, size = menu.size(); i < size; i++) {
-                MenuItem menuItem = menu.getItem(i);
-                if (isInOverflow(menuItem)) {
-                    colorMenuItem(menuItem, subMenuIconColor, subMenuIconAlpha);
-                }
-                if (menuItem.hasSubMenu()) {
-                    SubMenu subMenu = menuItem.getSubMenu();
-                    for (int j = 0; j < subMenu.size(); j++) {
-                        colorMenuItem(subMenu.getItem(j), subMenuIconColor, subMenuIconAlpha);
-                    }
-                }
-            }
-            if (menuItemIconColor != null || menuItemIconAlpha != null) {
-                overflowButton = findOverflowMenuButton(activity, actionBarView);
-                colorOverflowMenuItem(overflowButton);
-            }
-        });
-    }
-
-    /**
-     * <p>Sets a ColorFilter and/or alpha on all the {@link MenuItem}s in the menu, including the
-     * OverflowMenuButton.</p>
-     * <p>
-     * <p>This should only be called after calling {@link #apply(Activity)}. It is useful for when
-     * {@link MenuItem}s might be re-arranged due to an action view being collapsed or expanded.</p>
-     */
-    public void reapply() {
-
-        for (int i = 0, size = menu.size(); i < size; i++) {
-            MenuItem item = menu.getItem(i);
-            if (isActionButton(item)) {
-                colorMenuItem(menu.getItem(i), menuItemIconColor, menuItemIconAlpha);
-            }
-        }
-
-        if (actionBarView == null) {
-            return;
-        }
-
-        actionBarView.post(() -> {
-            for (int i = 0, size = menu.size(); i < size; i++) {
-                MenuItem menuItem = menu.getItem(i);
-                if (isInOverflow(menuItem)) {
-                    colorMenuItem(menuItem, subMenuIconColor, subMenuIconAlpha);
-                } else {
-                    colorMenuItem(menu.getItem(i), menuItemIconColor, menuItemIconAlpha);
-                }
-                if (menuItem.hasSubMenu()) {
-                    SubMenu subMenu = menuItem.getSubMenu();
-                    for (int j = 0; j < subMenu.size(); j++) {
-                        colorMenuItem(subMenu.getItem(j), subMenuIconColor, subMenuIconAlpha);
-                    }
-                }
-            }
-            if (menuItemIconColor != null || menuItemIconAlpha != null) {
-                colorOverflowMenuItem(overflowButton);
-            }
-        });
-    }
-
-    private void colorOverflowMenuItem(ImageView overflow) {
-        if (overflow != null) {
-            if (overflowDrawableId != null) {
-                overflow.setImageResource(overflowDrawableId);
-            }
-            if (menuItemIconColor != null) {
-                overflow.setColorFilter(menuItemIconColor);
-            }
-            if (menuItemIconAlpha != null) {
-                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-                    overflow.setImageAlpha(menuItemIconAlpha);
-                } else {
-                    //noinspection deprecation
-                    overflow.setAlpha(menuItemIconAlpha);
-                }
-            }
-        }
-    }
-
-    public Menu getMenu() {
-        return menu;
-    }
-
-    public ImageView getOverflowMenuButton() {
-        return overflowButton;
-    }
-
-    public void setMenuItemIconColor(Integer color) {
-        menuItemIconColor = color;
-    }
-
-    public static class NativeActionExpandListener implements OnActionExpandListener {
-
-        private final MenuTint menuTint;
-
-        public NativeActionExpandListener(MenuTint menuTint) {
-            this.menuTint = menuTint;
-        }
-
-        @Override
-        public boolean onMenuItemActionExpand(MenuItem item) {
-            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
-                    menuTint.originalMenuItemIconColor;
-            menuTint.setMenuItemIconColor(color);
-            menuTint.reapply();
-            return true;
-        }
-
-        @Override
-        public boolean onMenuItemActionCollapse(MenuItem item) {
-            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
-                    menuTint.originalMenuItemIconColor;
-            menuTint.setMenuItemIconColor(color);
-            menuTint.reapply();
-            return true;
-        }
-
-    }
-
-    public static class SupportActionExpandListener implements
-            MenuItemCompat.OnActionExpandListener {
-
-        private final MenuTint menuTint;
-
-        public SupportActionExpandListener(MenuTint menuTint) {
-            this.menuTint = menuTint;
-        }
-
-        @Override
-        public boolean onMenuItemActionExpand(MenuItem item) {
-            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
-                    menuTint.originalMenuItemIconColor;
-            menuTint.setMenuItemIconColor(color);
-            menuTint.reapply();
-            return true;
-        }
-
-        @Override
-        public boolean onMenuItemActionCollapse(MenuItem item) {
-            int color = menuTint.originalMenuItemIconColor == null ? menuTint.menuItemIconColor :
-                    menuTint.originalMenuItemIconColor;
-            menuTint.setMenuItemIconColor(color);
-            menuTint.reapply();
-            return true;
-        }
-
-    }
-
-    // --------------------------------------------------------------------------------------------
-
-    public static final class Builder {
-
-        private final Menu menu;
-        private Integer menuItemIconColor;
-        private Integer menuItemIconAlpha;
-        private Integer subMenuIconColor;
-        private Integer subMenuIconAlpha;
-        private Integer overflowDrawableId;
-        private Integer originalMenuItemIconColor;
-        private boolean reApplyOnChange;
-        private boolean forceIcons;
-
-        private Builder(Menu menu) {
-            this.menu = menu;
-        }
-
-        /**
-         * <p>Sets an {@link OnActionExpandListener} on all {@link MenuItem}s with views, so when the
-         * menu is updated, the colors will be also.</p>
-         * <p>
-         * <p>This is useful when the overflow menu is showing icons and {@link MenuItem}s might be
-         * pushed to the overflow menu when a action view is expanded e.g. android.widget.SearchView.
-         * </p>
-         *
-         * @param reapply {@code true} to set the listeners on all {@link MenuItem}s with action views.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder reapplyOnChange(boolean reapply) {
-            reApplyOnChange = reapply;
-            return this;
-        }
-
-        /**
-         * Specify an alpha value for visible MenuItem icons, including the OverflowMenuButton.
-         *
-         * @param alpha the alpha value for the drawable. 0 means fully transparent, and 255 means fully
-         *              opaque.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setMenuItemIconAlpha(int alpha) {
-            menuItemIconAlpha = alpha;
-            return this;
-        }
-
-        /**
-         * Specify a color for visible MenuItem icons, including the OverflowMenuButton.
-         *
-         * @param color the color to apply on visible MenuItem icons, including the OverflowMenuButton.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setMenuItemIconColor(int color) {
-            menuItemIconColor = color;
-            return this;
-        }
-
-        /**
-         * Specify a color that is applied when an action view is expanded or collapsed.
-         *
-         * @param color the color to apply on MenuItems when an action-view is expanded or collapsed.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setOriginalMenuItemIconColor(int color) {
-            originalMenuItemIconColor = color;
-            return this;
-        }
-
-        /**
-         * Set the drawable id to set on the OverflowMenuButton.
-         *
-         * @param drawableId the resource identifier of the drawable
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setOverflowDrawableId(int drawableId) {
-            overflowDrawableId = drawableId;
-            return this;
-        }
-
-        /**
-         * Specify an alpha value for MenuItems that are in a SubMenu or in the Overflow menu.
-         *
-         * @param alpha the alpha value for the drawable. 0 means fully transparent, and 255 means fully
-         *              opaque.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setSubMenuIconAlpha(int alpha) {
-            subMenuIconAlpha = alpha;
-            return this;
-        }
-
-        /**
-         * Specify a color for MenuItems that are in a SubMenu or in the Overflow menu.
-         *
-         * @param color the color to apply on visible MenuItem icons, including the OverflowMenuButton.
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder setSubMenuIconColor(int color) {
-            subMenuIconColor = color;
-            return this;
-        }
-
-        /**
-         * Set the menu to show MenuItem icons in the overflow window.
-         *
-         * @return this Builder object to allow for chaining of calls to set methods
-         */
-        public Builder forceIcons() {
-            forceIcons = true;
-            return this;
-        }
-
-        /**
-         * <p>Sets a ColorFilter and/or alpha on all the MenuItems in the menu, including the
-         * OverflowMenuButton.</p>
-         * <p>
-         * <p>Call this method after inflating/creating your menu in</p>
-         * {@link Activity#onCreateOptionsMenu(Menu)}.</p>
-         * <p>
-         * <p>Note: This is targeted for the native ActionBar/Toolbar, not AppCompat.</p>
-         */
-        public MenuTint apply() {
-            MenuTint theme = new MenuTint(this);
-            theme.apply();
-            return theme;
-        }
-
-        public MenuTint apply(Activity activity) {
-            MenuTint theme = new MenuTint(this);
-            theme.apply(activity);
-            return theme;
-        }
-
-        /**
-         * <p>Creates a {@link MenuTint} with the arguments supplied to this builder.</p>
-         * <p>
-         * <p>It does not apply the theme. Call {@link MenuTint#apply(Activity)} to do so.</p>
-         *
-         * @see #apply(Activity)
-         */
-        public MenuTint create() {
-            return new MenuTint(this);
-        }
-
-    }
-
-    // --------------------------------------------------------------------------------------------
-
-    /**
-     * Auto collapses the SearchView when the soft keyboard is dismissed.
-     */
-    public static class SearchViewFocusListener implements View.OnFocusChangeListener {
-
-        private final MenuItem item;
-
-        public SearchViewFocusListener(MenuItem item) {
-            this.item = item;
-        }
-
-        @Override
-        public void onFocusChange(View v, boolean hasFocus) {
-            if (!hasFocus && item != null) {
-                item.collapseActionView();
-                if (v instanceof SearchView) {
-                    ((SearchView) v).setQuery("", false);
-                }
-            }
-        }
-
-    }
-
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/ObservableTextBinder.java b/app/src/main/java/de/kuschku/util/ui/ObservableTextBinder.java
deleted file mode 100644
index 5fa72906d..000000000
--- a/app/src/main/java/de/kuschku/util/ui/ObservableTextBinder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui;
-
-import android.widget.TextView;
-
-import de.kuschku.util.observables.lists.ObservableElement;
-
-public class ObservableTextBinder {
-    private final ObservableElement<CharSequence> text;
-    private TextView view;
-
-    public ObservableTextBinder(ObservableElement<CharSequence> text) {
-        this.text = text;
-        this.text.addCallback(object -> updateView());
-    }
-
-    private void updateView() {
-        if (view != null) {
-            view.setText(text.get());
-        }
-    }
-
-    public void bind(TextView view) {
-        this.view = view;
-        updateView();
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/SpanFormatter.java b/app/src/main/java/de/kuschku/util/ui/SpanFormatter.java
deleted file mode 100644
index 0a4a91eda..000000000
--- a/app/src/main/java/de/kuschku/util/ui/SpanFormatter.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-/*
-* Copyright © 2014 George T. Steel
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-package de.kuschku.util.ui;
-
-import android.support.annotation.NonNull;
-import android.text.Spannable;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.SpannedString;
-
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Provides {@link String#format} style functions that work with {@link Spanned} strings and preserve formatting.
- *
- * @author George T. Steel
- */
-public class SpanFormatter {
-    private static final Pattern FORMAT_SEQUENCE = Pattern.compile("%([0-9]+\\$|<?)([^a-zA-z%]*)([[a-zA-Z%]&&[^tT]]|[tT][a-zA-Z])");
-
-    private SpanFormatter() {
-    }
-
-    /**
-     * Version of {@link String#format(String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
-     * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
-     * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
-     * Any duplicates will appear as text only.
-     *
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args   the list of arguments passed to the formatter. If there are
-     *               more arguments than required by {@code format},
-     *               additional arguments are ignored.
-     * @return the formatted string (with spans).
-     */
-    @NonNull
-    public static SpannedString format(@NonNull CharSequence format, Object... args) {
-        return format(Locale.getDefault(), format, args);
-    }
-
-    /**
-     * Version of {@link String#format(Locale, String, Object...)} that works on {@link Spanned} strings to preserve rich text formatting.
-     * Both the {@code format} as well as any {@code %s args} can be Spanned and will have their formatting preserved.
-     * Due to the way {@link Spannable}s work, any argument's spans will can only be included <b>once</b> in the result.
-     * Any duplicates will appear as text only.
-     *
-     * @param locale the locale to apply; {@code null} value means no localization.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args   the list of arguments passed to the formatter.
-     * @return the formatted string (with spans).
-     * @see String#format(Locale, String, Object...)
-     */
-    @NonNull
-    public static SpannedString format(@NonNull Locale locale, @NonNull CharSequence format, Object... args) {
-        SpannableStringBuilder out = new SpannableStringBuilder(format);
-
-        int i = 0;
-        int argAt = -1;
-
-        while (i < out.length()) {
-            Matcher m = FORMAT_SEQUENCE.matcher(out);
-            if (!m.find(i)) break;
-            i = m.start();
-            int exprEnd = m.end();
-
-            String argTerm = m.group(1);
-            String modTerm = m.group(2);
-            String typeTerm = m.group(3);
-
-            CharSequence cookedArg;
-
-            if (typeTerm.equals("%")) {
-                cookedArg = "%";
-            } else {
-                int argIdx;
-                switch (argTerm) {
-                    case "":
-                        argIdx = ++argAt;
-                        break;
-                    case "<":
-                        argIdx = argAt;
-                        break;
-                    default:
-                        argIdx = Integer.parseInt(argTerm.substring(0, argTerm.length() - 1)) - 1;
-                        break;
-                }
-
-                Object argItem = args[argIdx];
-
-                if (typeTerm.equals("s") && argItem instanceof Spanned) {
-                    cookedArg = (Spanned) argItem;
-                } else {
-                    cookedArg = String.format(locale, "%" + modTerm + typeTerm, argItem);
-                }
-            }
-
-            out.replace(i, exprEnd, cookedArg);
-            i += cookedArg.length();
-        }
-
-        return new SpannedString(out);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/parcelableUtil/QVariantParcelable.java b/app/src/main/java/de/kuschku/util/ui/parcelableUtil/QVariantParcelable.java
deleted file mode 100644
index e809fdde0..000000000
--- a/app/src/main/java/de/kuschku/util/ui/parcelableUtil/QVariantParcelable.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.parcelableUtil;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.QMetaTypeRegistry;
-import de.kuschku.libquassel.primitives.types.QVariant;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-@SuppressWarnings("unchecked")
-public class QVariantParcelable<T> extends QVariant<T> implements Parcelable {
-    @NonNull
-    public Creator<QVariantParcelable> CREATOR = new Creator<QVariantParcelable>() {
-        @NonNull
-        @Override
-        public QVariantParcelable createFromParcel(@NonNull Parcel source) {
-            try {
-                QMetaType type = QMetaTypeRegistry.getType(QMetaType.Type.fromId(source.readInt()));
-                Object data;
-                switch (type.type) {
-                    case Int:
-                        data = source.readInt();
-                        break;
-                    case QByteArray:
-                    case QString:
-                        data = source.readString();
-                        break;
-                    case Bool:
-                        data = (source.readInt() > 0);
-                        break;
-                    default:
-                        throw new IllegalArgumentException("Can’t deserialize type " + type.name);
-                }
-                return new QVariantParcelable<>(type.name, data);
-            } catch (IOException e) {
-                throw new IllegalArgumentException(e);
-            }
-        }
-
-        @NonNull
-        @Override
-        public QVariantParcelable[] newArray(int size) {
-            return new QVariantParcelable[size];
-        }
-    };
-
-    public QVariantParcelable(@NonNull String typeName, T data) {
-        super(typeName, data);
-    }
-
-    public QVariantParcelable(@NonNull QVariant value) {
-        super(value.type, (T) value.data);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-
-
-        dest.writeInt(type.type.getValue());
-        switch (type.type) {
-            case Int:
-                assertNotNull(data);
-                dest.writeInt((Integer) data);
-                break;
-            case QString:
-                dest.writeString((String) data);
-                break;
-            case Bool:
-                assertNotNull(data);
-                dest.writeInt(((Boolean) data) ? 1 : 0);
-                break;
-            default:
-                throw new IllegalArgumentException("Can’t serialize type " + type.name);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/parcelableUtil/StorageBackendParcelable.java b/app/src/main/java/de/kuschku/util/ui/parcelableUtil/StorageBackendParcelable.java
deleted file mode 100644
index 95fe1c1cd..000000000
--- a/app/src/main/java/de/kuschku/util/ui/parcelableUtil/StorageBackendParcelable.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.parcelableUtil;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import de.kuschku.libquassel.objects.types.StorageBackend;
-import de.kuschku.libquassel.primitives.QMetaType;
-import de.kuschku.libquassel.primitives.types.QVariant;
-import de.kuschku.util.backports.Stream;
-
-import static de.kuschku.util.AndroidAssert.assertNotNull;
-
-public class StorageBackendParcelable extends StorageBackend implements Parcelable {
-    @NonNull
-    public static Creator<StorageBackendParcelable> CREATOR = new Creator<StorageBackendParcelable>() {
-        @NonNull
-        @Override
-        public StorageBackendParcelable createFromParcel(@NonNull Parcel source) {
-            String DisplayName = source.readString();
-            String Description = source.readString();
-            List<String> SetupKeys = new ArrayList<>();
-            source.readStringList(SetupKeys);
-            Map<String, QVariant> SetupDefaults = new HashMap<>();
-            int size = source.readInt();
-            for (int i = 0; i < size; i++) {
-                String key = source.readString();
-                try {
-                    QMetaType.Type type = QMetaType.Type.fromId(source.readInt());
-                    switch (type) {
-                        case Int:
-                            SetupDefaults.put(key, new QVariant<>(type, source.readInt()));
-                            break;
-                        case QString:
-                            SetupDefaults.put(key, new QVariant<>(type, source.readString()));
-                            break;
-                        case Bool:
-                            SetupDefaults.put(key, new QVariant<>(type, source.readInt() > 0));
-                            break;
-                        default:
-                            throw new IllegalArgumentException("Can’t serialize type " + type.name());
-                    }
-                } catch (IOException ignored) {
-                }
-            }
-
-            assertNotNull(DisplayName);
-            assertNotNull(Description);
-
-            return new StorageBackendParcelable(DisplayName, SetupDefaults, Description, SetupKeys);
-        }
-
-        @NonNull
-        @Override
-        public StorageBackendParcelable[] newArray(int size) {
-            return new StorageBackendParcelable[size];
-        }
-    };
-
-    public StorageBackendParcelable(@NonNull StorageBackend backend) {
-        this(backend.DisplayName, backend.SetupDefaults, backend.Description, backend.SetupKeys);
-    }
-
-    public StorageBackendParcelable(@NonNull String displayName, @NonNull Map<String, QVariant> setupDefaults, @NonNull String description, @NonNull List<String> setupKeys) {
-        super(displayName, setupDefaults, description, setupKeys);
-    }
-
-    @NonNull
-    public static ArrayList<StorageBackendParcelable> wrap(@NonNull List<StorageBackend> backends) {
-        return new ArrayList<>(new Stream<>(backends).map(StorageBackendParcelable::new).list());
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeString(DisplayName);
-        dest.writeString(Description);
-        dest.writeStringList(SetupKeys);
-        dest.writeInt(SetupDefaults.size());
-        for (String key : SetupDefaults.keySet()) {
-            QVariant q = SetupDefaults.get(key);
-            QMetaType.Type type = q.type.type;
-            dest.writeString(key);
-            dest.writeInt(type.getValue());
-            switch (type) {
-                case Int:
-                    assertNotNull(q.data);
-                    dest.writeInt((Integer) q.data);
-                    break;
-                case QString:
-                    dest.writeString((String) q.data);
-                    break;
-                case Bool:
-                    assertNotNull(q.data);
-                    dest.writeInt(((Boolean) q.data) ? 1 : 0);
-                    break;
-                default:
-                    throw new IllegalArgumentException("Can’t serialize type " + q.type.name);
-            }
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListPreference.java b/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListPreference.java
deleted file mode 100644
index 1396c604e..000000000
--- a/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListPreference.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.preferences;
-
-import android.annotation.TargetApi;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.preference.ListPreference;
-import android.support.annotation.NonNull;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ListView;
-
-import com.afollestad.materialdialogs.MaterialDialog;
-
-import java.lang.reflect.Field;
-
-import de.kuschku.util.annotationbind.AutoBinder;
-
-/**
- * @author Marc Holder Kluver (marchold), Aidan Follestad (afollestad)
- */
-public class MaterialListPreference extends ListPreference {
-
-    private Context context;
-    private MaterialDialog mDialog;
-
-    public MaterialListPreference(Context context) {
-        super(context);
-        init(context, null);
-    }
-
-    public MaterialListPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init(context, attrs);
-    }
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    public MaterialListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        init(context, attrs);
-    }
-
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-    public MaterialListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        init(context, attrs);
-    }
-
-    private void init(Context context, AttributeSet attrs) {
-        this.context = context;
-        PrefUtil.setLayoutResource(context, this, attrs);
-        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1)
-            setWidgetLayoutResource(0);
-    }
-
-    @Override
-    public void setEntries(CharSequence[] entries) {
-        super.setEntries(entries);
-        if (mDialog != null)
-            mDialog.setItems(entries);
-    }
-
-    @Override
-    public Dialog getDialog() {
-        return mDialog;
-    }
-
-    public ListView getListView() {
-        if (getDialog() == null) return null;
-        return ((MaterialDialog) getDialog()).getListView();
-    }
-
-    @Override
-    protected void showDialog(Bundle state) {
-        if (getEntries() == null || getEntryValues() == null) {
-            throw new IllegalStateException(
-                    "ListPreference requires an entries array and an entryValues array.");
-        }
-
-        int preselect = findIndexOfValue(getValue());
-        MaterialDialog.Builder builder = new MaterialDialog.Builder(context)
-                .title(getDialogTitle())
-                .icon(getDialogIcon())
-                .dismissListener(this)
-                .onAny((dialog, which) -> {
-                    switch (which) {
-                        default:
-                            MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
-                            break;
-                        case NEUTRAL:
-                            MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_NEUTRAL);
-                            break;
-                        case NEGATIVE:
-                            MaterialListPreference.this.onClick(dialog, DialogInterface.BUTTON_NEGATIVE);
-                            break;
-                    }
-                })
-                .backgroundColor(AutoBinder.obtainColor(de.kuschku.quasseldroid_ng.R.attr.colorBackgroundDialog, context.getTheme()))
-                .negativeText(getNegativeButtonText())
-                .items(getEntries())
-                .autoDismiss(true) // immediately close the dialog after selection
-                .itemsCallbackSingleChoice(preselect, (dialog, itemView, which, text) -> {
-                    onClick(null, DialogInterface.BUTTON_POSITIVE);
-                    if (which >= 0 && getEntryValues() != null) {
-                        try {
-                            Field clickedIndex = ListPreference.class.getDeclaredField("mClickedDialogEntryIndex");
-                            clickedIndex.setAccessible(true);
-                            clickedIndex.set(MaterialListPreference.this, which);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
-                    return true;
-                });
-
-        final View contentView = onCreateDialogView();
-        if (contentView != null) {
-            onBindDialogView(contentView);
-            builder.customView(contentView, false);
-        } else {
-            builder.content(getDialogMessage());
-        }
-
-        PrefUtil.registerOnActivityDestroyListener(this, this);
-
-        mDialog = builder.build();
-        if (state != null)
-            mDialog.onRestoreInstanceState(state);
-        onClick(mDialog, DialogInterface.BUTTON_NEGATIVE);
-        mDialog.show();
-    }
-
-    @Override
-    public void onDismiss(DialogInterface dialog) {
-        super.onDismiss(dialog);
-        PrefUtil.unregisterOnActivityDestroyListener(this, this);
-    }
-
-    @Override
-    public void onActivityDestroy() {
-        super.onActivityDestroy();
-        if (mDialog != null && mDialog.isShowing())
-            mDialog.dismiss();
-    }
-
-    @Override
-    protected Parcelable onSaveInstanceState() {
-        final Parcelable superState = super.onSaveInstanceState();
-        Dialog dialog = getDialog();
-        if (dialog == null || !dialog.isShowing()) {
-            return superState;
-        }
-
-        final SavedState myState = new SavedState(superState);
-        myState.isDialogShowing = true;
-        myState.dialogBundle = dialog.onSaveInstanceState();
-        return myState;
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Parcelable state) {
-        if (state == null || !state.getClass().equals(SavedState.class)) {
-            // Didn't save state for us in onSaveInstanceState
-            super.onRestoreInstanceState(state);
-            return;
-        }
-
-        SavedState myState = (SavedState) state;
-        super.onRestoreInstanceState(myState.getSuperState());
-        if (myState.isDialogShowing) {
-            showDialog(myState.dialogBundle);
-        }
-    }
-
-    // From DialogPreference
-    private static class SavedState extends BaseSavedState {
-        public static final Parcelable.Creator<SavedState> CREATOR =
-                new Parcelable.Creator<SavedState>() {
-                    public SavedState createFromParcel(Parcel in) {
-                        return new SavedState(in);
-                    }
-
-                    public SavedState[] newArray(int size) {
-                        return new SavedState[size];
-                    }
-                };
-        boolean isDialogShowing;
-        Bundle dialogBundle;
-
-        public SavedState(Parcel source) {
-            super(source);
-            isDialogShowing = source.readInt() == 1;
-            dialogBundle = source.readBundle(getClass().getClassLoader());
-        }
-
-        public SavedState(Parcelable superState) {
-            super(superState);
-        }
-
-        @Override
-        public void writeToParcel(@NonNull Parcel dest, int flags) {
-            super.writeToParcel(dest, flags);
-            dest.writeInt(isDialogShowing ? 1 : 0);
-            dest.writeBundle(dialogBundle);
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListSummaryPreference.java b/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListSummaryPreference.java
deleted file mode 100644
index ea2049323..000000000
--- a/app/src/main/java/de/kuschku/util/ui/preferences/MaterialListSummaryPreference.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.preferences;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.util.AttributeSet;
-import android.view.View;
-
-public class MaterialListSummaryPreference extends MaterialListPreference {
-    public MaterialListSummaryPreference(Context context) {
-        super(context);
-        setSummary(getEntry());
-    }
-
-    public MaterialListSummaryPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setSummary(getEntry());
-    }
-
-    public MaterialListSummaryPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        setSummary(getEntry());
-    }
-
-    public MaterialListSummaryPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        setSummary(getEntry());
-    }
-
-    @Override
-    protected void onDialogClosed(boolean positiveResult) {
-        super.onDialogClosed(positiveResult);
-        setSummary(getEntry());
-    }
-
-    @Override
-    protected void showDialog(Bundle state) {
-        super.showDialog(state);
-    }
-
-    @Override
-    protected void onBindView(View view) {
-        setSummary(getEntry());
-        super.onBindView(view);
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/preferences/PrefUtil.java b/app/src/main/java/de/kuschku/util/ui/preferences/PrefUtil.java
deleted file mode 100644
index 4ec183d58..000000000
--- a/app/src/main/java/de/kuschku/util/ui/preferences/PrefUtil.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.preferences;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
-import android.preference.Preference;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.AttributeSet;
-
-import com.afollestad.materialdialogs.commons.R;
-
-import java.lang.reflect.Method;
-
-/**
- * @author Aidan Follestad (afollestad)
- */
-class PrefUtil {
-
-    private PrefUtil() {
-    }
-
-    public static void setLayoutResource(@NonNull Context context, @NonNull Preference preference, @Nullable AttributeSet attrs) {
-        boolean foundLayout = false;
-        if (attrs != null) {
-            for (int i = 0; i < attrs.getAttributeCount(); i++) {
-                final String namespace = ((XmlResourceParser) attrs).getAttributeNamespace(0);
-                if (namespace.equals("http://schemas.android.com/apk/res/android") &&
-                        attrs.getAttributeName(i).equals("layout")) {
-                    foundLayout = true;
-                    break;
-                }
-            }
-        }
-
-        boolean useStockLayout = false;
-        if (attrs != null) {
-            TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.Preference, 0, 0);
-            try {
-                useStockLayout = a.getBoolean(R.styleable.Preference_useStockLayout, false);
-            } finally {
-                a.recycle();
-            }
-        }
-
-        if (!foundLayout && !useStockLayout)
-            preference.setLayoutResource(R.layout.md_preference_custom);
-    }
-
-    public static void registerOnActivityDestroyListener(@NonNull Preference preference, @NonNull PreferenceManager.OnActivityDestroyListener listener) {
-        try {
-            PreferenceManager pm = preference.getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "registerOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, listener);
-        } catch (Exception ignored) {
-        }
-    }
-
-    public static void unregisterOnActivityDestroyListener(@NonNull Preference preference, @NonNull PreferenceManager.OnActivityDestroyListener listener) {
-        try {
-            PreferenceManager pm = preference.getPreferenceManager();
-            Method method = pm.getClass().getDeclaredMethod(
-                    "unregisterOnActivityDestroyListener",
-                    PreferenceManager.OnActivityDestroyListener.class);
-            method.setAccessible(true);
-            method.invoke(pm, listener);
-        } catch (Exception ignored) {
-        }
-    }
-}
diff --git a/app/src/main/java/de/kuschku/util/ui/preferences/SeekBarPreference.java b/app/src/main/java/de/kuschku/util/ui/preferences/SeekBarPreference.java
deleted file mode 100644
index c2d2bc662..000000000
--- a/app/src/main/java/de/kuschku/util/ui/preferences/SeekBarPreference.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-package de.kuschku.util.ui.preferences;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.preference.Preference;
-import android.support.v7.widget.AppCompatSeekBar;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-import android.widget.TextView;
-
-import de.kuschku.quasseldroid_ng.R;
-
-public class SeekBarPreference extends Preference implements OnSeekBarChangeListener {
-
-    private static final String ANDROIDNS = "http://schemas.android.com/apk/res/android";
-    private static final String APPLICATIONNS = "http://robobunny.com";
-    private static final int DEFAULT_VALUE = 50;
-    private final String TAG = getClass().getName();
-    private int mMaxValue = 100;
-    private int mMinValue = 0;
-    private int mInterval = 1;
-    private int mCurrentValue;
-    private AppCompatSeekBar mSeekBar;
-
-    private TextView mStatusText;
-
-    public SeekBarPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        initPreference(context, attrs);
-    }
-
-    public SeekBarPreference(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-        initPreference(context, attrs);
-    }
-
-    private void initPreference(Context context, AttributeSet attrs) {
-        setValuesFromXml(attrs);
-        mSeekBar = new AppCompatSeekBar(context, attrs);
-        mSeekBar.setMax(mMaxValue - mMinValue);
-        mSeekBar.setOnSeekBarChangeListener(this);
-
-        setWidgetLayoutResource(R.layout.seek_bar_preference);
-    }
-
-    private void setValuesFromXml(AttributeSet attrs) {
-        mMaxValue = attrs.getAttributeIntValue(ANDROIDNS, "max", 100);
-        mMinValue = attrs.getAttributeIntValue(APPLICATIONNS, "min", 0);
-
-        try {
-            String newInterval = attrs.getAttributeValue(APPLICATIONNS, "interval");
-            if (newInterval != null)
-                mInterval = Integer.parseInt(newInterval);
-        } catch (Exception e) {
-            Log.e(TAG, "Invalid interval value", e);
-        }
-
-    }
-
-    @Override
-    protected View onCreateView(ViewGroup parent) {
-        View view = super.onCreateView(parent);
-
-        // The basic preference layout puts the widget frame to the right of the title and summary,
-        // so we need to change it a bit - the seekbar should be under them.
-        LinearLayout layout = (LinearLayout) view;
-        layout.setOrientation(LinearLayout.VERTICAL);
-
-        return view;
-    }
-
-    @Override
-    public void onBindView(View view) {
-        super.onBindView(view);
-        if (view != null) {
-            mSeekBar = (AppCompatSeekBar) view.findViewById(R.id.seekBarPrefSeekBar);
-            mSeekBar.setMax(mMaxValue - mMinValue);
-            mSeekBar.setOnSeekBarChangeListener(this);
-        }
-
-        updateView(view);
-    }
-
-    /**
-     * Update a SeekBarPreference view with our current state
-     *
-     * @param view
-     */
-    protected void updateView(View view) {
-
-        try {
-            mStatusText = (TextView) view.findViewById(R.id.seekBarPrefValue);
-
-            mStatusText.setText(String.valueOf(mCurrentValue));
-            mStatusText.setMinimumWidth(30);
-
-            mSeekBar.setProgress(mCurrentValue - mMinValue);
-
-        } catch (Exception e) {
-            Log.e(TAG, "Error updating seek bar preference", e);
-        }
-
-    }
-
-    @Override
-    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-        int newValue = progress + mMinValue;
-
-        if (newValue > mMaxValue)
-            newValue = mMaxValue;
-        else if (newValue < mMinValue)
-            newValue = mMinValue;
-        else if (mInterval != 1 && newValue % mInterval != 0)
-            newValue = Math.round(((float) newValue) / mInterval) * mInterval;
-
-        // change rejected, revert to the previous value
-        if (!callChangeListener(newValue)) {
-            seekBar.setProgress(mCurrentValue - mMinValue);
-            return;
-        }
-
-        // change accepted, store it
-        mCurrentValue = newValue;
-        mStatusText.setText(String.valueOf(newValue));
-        persistInt(newValue);
-
-    }
-
-    @Override
-    public void onStartTrackingTouch(SeekBar seekBar) {
-    }
-
-    @Override
-    public void onStopTrackingTouch(SeekBar seekBar) {
-        notifyChanged();
-    }
-
-
-    @Override
-    protected Object onGetDefaultValue(TypedArray ta, int index) {
-        return ta.getInt(index, DEFAULT_VALUE);
-
-    }
-
-    @Override
-    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
-
-        if (restoreValue) {
-            mCurrentValue = getPersistedInt(mCurrentValue);
-        } else {
-            int temp = 0;
-            try {
-                temp = (Integer) defaultValue;
-            } catch (Exception ex) {
-                Log.e(TAG, "Invalid default value: " + defaultValue.toString());
-            }
-
-            persistInt(temp);
-            mCurrentValue = temp;
-        }
-
-    }
-
-    /**
-     * make sure that the seekbar is disabled if the preference is disabled
-     */
-    @Override
-    public void setEnabled(boolean enabled) {
-        super.setEnabled(enabled);
-        mSeekBar.setEnabled(enabled);
-    }
-
-    @Override
-    public void onDependencyChanged(Preference dependency, boolean disableDependent) {
-        super.onDependencyChanged(dependency, disableDependent);
-
-        //Disable movement of seek bar when dependency is false
-        if (mSeekBar != null) {
-            mSeekBar.setEnabled(!disableDependent);
-        }
-    }
-}
diff --git a/app/src/main/res/drawable-hdpi/ic_splash.png b/app/src/main/res/drawable-hdpi/ic_splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..866a830e57094c84e6c1a65d43512ca8d7d32b82
GIT binary patch
literal 11789
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
E4^xop`Tzg`

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable-mdpi/ic_splash.png b/app/src/main/res/drawable-mdpi/ic_splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd41d82f31eab00a5f7bfb4bdc7b088d63352cad
GIT binary patch
literal 8421
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
F{{tWIY>WT^

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable-nodpi/bg2.jpg~ b/app/src/main/res/drawable-nodpi/bg2.jpg~
deleted file mode 100644
index d55595ae5a8581e48647b76cd641524359cd2684..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1183302
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%0DqLnld-El%zb1A$5_4A*4$dNf49D~
zs>#pK8&@iG`6qS%04SPTukD}Ds)CQ+{{ZF~d(!>oUyZs>k3Zh<E1~y8<stWVE}E5k
zTLZwsr@Hvejpxrb^NqUv-_+7SLZPMlra$SsD`BbjXqETQ2i+P=e(%8i?kMtUL+Scx
z`#Wdn`pD$6e|X2er!)`ivA@5XxYH-m_Fl0_zSI8zeuGyu0iJd2uCEn&xWc^S80`cS
zDGQ<}L_x8a4EZ!_kV6<UJ^>0-fizizeW1-7GF}FQbO+!@@8X1JE5Sil4zfs)K)D!9
z9_BBb%X#e;mmI;uU~XZ)iVy=J5IwWCXP^{rDgOYOm{G#9Mt%&nL#D?<&>|mwfFO!#
zt<({1Jav0T=)dLaqY%pBUX5#2Xc!MO2hoOEe4vgY77s+;_@YVw04w79UdoHGi@GC(
zMx3bbx#G&@mAS($x+9SbZEj_D3@M<i9B@CO^&HAQPz0qQ27W-6W^HODTQj%F5k0kX
zsP^4BGJ{;zgdJ!~>JiE489(4C#x{OPNV)>fKM`A&$?q|8up=~D!OqJxi8Mf9^(`P<
zB_<{~{{Xd(#w(`N$&rzZH8`QR$>dhMmINDiI$9?z3)n!k_eLDdg;=M04=mXOH9tp&
zRNWJ71h0#m9~%9lqIId70ty~Jf-$l2<T?nsC7*e}QGEkbkw*)z60QVd5Id0woB7xf
zZ6<d^l3w^4Jiw%Fr0U28#sVfqg62Yrl!X^<b9n%ru0S;W16d55ywI=}>7?cT-_J=4
zM)VbpFkm~dKhS}O)bGefK)6E(A=Bgu^k5C_gxe~FCK-|^OJpzQ(GGrgS1YB0BE9@V
z#z{MBc%qkbLF#ldl0oL8>wb3>Sc%%$tGjwY-xwz&!$8ujxU9Ks7&szrYQpnW$>4*I
zVZ~{^r+6zl5OiC*FtIdBm^TU8Ljh`mVhhI<^2#ZYh^yKw05`T0g*(F~CeWU-BG)sF
zg+%r=h@ROk?8MfkE;-q71)*@tt=sPx-uajwMG=oquabByMUX5onjwVj0wV_oh5XT5
z1H%<Q+4gpaY{BsEdjZ9PDxt0T9X%}u<ZP9~g_2{O3#G0EAv7%tN6z@6dD@I`{f5IO
zSDCYuPj!imE#@;}U?#4h6<e*a1dW)Q7jNQ;@=L|eK#J>@+K-S3+ypkN$|_7A+nmnW
zbc^m}Uj@KJ;W?sPFL(!;h?q8GDu^iUxTGNq-HX(3;gaBc6W`{U3<cw{zdi84qRi~U
zpSV<aIiRJ+dBW>_2Le{=&-f?D0_hPEv<eCUT>$<=7WlIcY!U+LF#-zhj%b3Iujy!*
z4=|MsoHGXuNkgm*fK3s)aHYVATrqScdHyZOO8zPlL2WB=K}kXJPPHIFUN@LhJG{j^
z83}V{%Q{q}mm=m(yhZg|3tT>-xxr(!Z&9N(I58NAn~cyRD*z|PG9uOIZ(z%8;-}NV
zyZnvUxlJy50<wJ<$kYXiSSzZIz6K2~?72uw%P3I5$~|N#fxs$*ahKq{P<}@!iY_%%
zx)m^(xV_Mza8dyY`4=)VOe}qgg_&GqgP3fQCR<#I@f-MnW!68Z4=f`tD=ACdWrAag
zs{3CLBXMAh2#0%_SEV^Vp#%X0hpLm%z#XWuqD4K3l%O~z*nc(^(Q<vgumV~Rl7Wb|
z4+`o<qqVfLl9h571o;B-B17@eF<_K+A;oeQzYvK4;t4|pDq_gTa9i>)vM58z@j$)n
zAM1r@Z|{`dEXWq$c(o?nHg4%A#SWo{?%@l9c9rELnzKtG@fV{sBiB(3Fhg+ddMgC=
zW#P_kmdT<l8zu734$(HC3Ufo-7P=NnyN&Df9K**GdPL7kQa0SM7M68TTrRQ#mw<!>
zuR!3I1)E+Al0!g2Xw-^kuOgHY;%U(U-j1B2#QbEGQEla(FEAbh$RW|C<Jto3b`3Oc
zc!+~(Ad=9}5^#=hH;z1{hnm`oMqtR)=6(of21t{(ESK5M5GHOm%Z|6eiBAmtoW^)-
z0QM+3g^O$=9Iu6q0yJ99A07+tE@%K00hTd00@n|I0Bo3sAiS2f<uKa#4lZfnpUW7m
zgcDXZ@9Oga>u84?Vf<f%T#*9VWt-a5>Y+%P*)qXn!tSC*_^Kquym&dG+B_ogBtn%g
zPXy8SoMV}BVW0$1rgUg?7yz`H1pstKK<jXlxI`q^SBkuR_aueUlJO^Igr4mr4rbEH
zA}=LaH6JX53IiaJu>=xfW6>Fo29m2a0eIBPHo=UW4i<h-{=VL}d+go$;=hE8i2Kb6
z`^OK5aPe3t_=@AdGeZ9Wp>~Y?Qhs0HFW=}<E_WviIG^FGpWXKMGhgVx2aJ!JxnJu4
z0DaVlSL&u8_PY^I$L{#%g@!)AGhqGhu!mZ$_YU0495;{M{{YJ5pUb~9<IR04U_^O~
z)=5@>xjr;0k^|q@+*O62eIM`S*ZdE>7QW_zxAtG}JI+w3l7PEF`Mss$xJ?}6@cq+g
z*O%XsT@HnxdfX4^h18GMrB&DvW|gwO-<tiau3+DtMG!jYdH#-gqW<;gK9c5`A0N-0
z{vv8r95`AxDK9i%o&CS!k!1J3KTN=@j_v?>ftv?`Dv*Q*xB2Ib)|b`)0Ic}E6ZxbU
zA3uePNq*V~zNqN@qhE0|df>O>TIcm>WjVWE-`V`rFI1}YKflEXlKQ?M6ag`lXPEtu
z=_7*v>r7-l;;&Q)53%8Tpm89N#tFk4mZr=A{iGO$B#l2{f<iRg@<qPuIr6i#PTpcm
z!uei}ZW-4}4Epm3sxX{SV@7<eLXh~6kY&7wlbIz}6<xYllCTo-P+f+mO2G)z*ad+_
z9q@9qp%whVlZ6CaM^sZ4;khgP35&p^Im&?)tcrHo#X8(3r^`x!S_vi;3?t_&jxa)U
zcL_VwZQJwvIH|4oKYu*h!Q<!bSNL|_JbUmalKI`7{&4o|fv?-IJDD}Z(}(#vPP8uu
zAM?6J`x5o_z*T_nkLJhfYM8bz!Fu!U%^(<T<TrK^&*q?}>VNEUT)v~81GhAZ&-F+7
z9%!xcdy9*tY(Zg)zCRQ8%N<iF>uot7^!!v7(C6*^j;S!45c`kq-G2D5AbUT($KU$v
z^?C*8oD<_yUz7Xt*Xq8P_vb#V_%|RAuK9KPO7HHelONP~&3s+=t*7xi3x6(K*>68x
z5defqOsf_buOh;T7>Tq}gDF&K;?*g3aT%F2wK1C$M?}03oaWQ>XdO@j56D)-9dOv3
z)>^tow(;UPp+U$tK)F5sxlxh3ioZODZY78Y@*iEt4|ikDg&-djzxuEF1mz&bP_T@p
z!DvY^M6(pwN2{-X*8vxUm+L-F0FJQWd)+%#$8^o`NP_}0v39wl5hoB~J^;6+s6;ed
z#S_>lXa$NSDy~x`9ZP6#>`{M$R`Dl|;Y6L2U`^zRGXUZxfkB%FUxyA1w1YNZwlmlH
zu`s~Q*Q_4<E}XAE3{zBrVtLL6nHU0)X0EPu?GOOM0M8DL)dwJmFOhGolp%z(%jfm%
z!cS-bwqw|Fd~QHI0YfC@u*?q#{1pe~*aFjI44ARC=|JDXX!3+1ou^W;z1A?3L&SR&
zoLuM4H>)pKH4AH~WJ3TH0HD>hptwv6cnF@!AuoOrm@|z4CN2orgy$1Ozb-?uCz>R|
z+UA7XSNI@MGx{Kn@_J;RtwbPcm<rQ+A8VTiEMfh|eI@9-0787&W#R%dQ-axM>`(#m
z7F-$`x|hHXCotyMH@F>Y(^e2Vzp$Go*Cz78;bw*c*C02%;i|<XyoAJUlF+`1uLPZd
z4#+!5XGu_EB&@BKgaw?!h$H}rtXY05w-_})`xY7L{;X=;<UI2?m7qGNFbLyia>Ct<
z;)k61>&c9sR%b=gAF4qLJiN?lQ*Iw6^SMI*0N?;?UBJp*&4~15oIVC?Uw>f<Mimr#
zcQuzm9=Q~7KN~@7-Zm>UG$m=j){jq^^8{5)&Drv95+<ZLPx5_7mexl#$T^1_d3vdf
z1QDRj3BgP#1W2K3cT!JCw*wW34QfLgb5_}>kolyKG?>91o)}IC1ku8K8KS~y86Pww
zUX35ivwlEIPmD7NQX()0XVEj)dv8a=w=!xl$QywalJGjSRCP$fqDVezuMspm8ry%A
zGkCDIMu7+L&tm|=yqgs@!<KCzxXf&u#^^S&HB!>z$-ypjLX4B9N^z?GMDbRl?<^3#
z0X&%H_lK}3ze}_7WcX{Xyxa&yb6ry0@pG?eDkr|sYTuP>8{Ui8<liV7MWZrW^wT~=
zH#T`<;o66yIrj$xK4NZybGNdLvkciN$&pMCKdO>7)Lw~80z>=GzIBUi9Kz!PI0GH@
z*z`4Sm8|B*=Up>K0AHemj35Uc*LThYM<d|cJGdBQ@^LmKMI47W;94RFFi_1I2OeS1
z64vm94IU17{ErB3;_ySK%MSS37g9EMj5-s?Az<Qt$MY_9A&jyZSFm<jwMNhn43wzJ
zV?(-%caMmZptU`xM5G3Cv<zwdP0b!>7hU{l$+r+eAPy<&B>2luxMoYU1~d2(e={@@
z<Q)x!NU502lV7k~I(PUhS0y5Yr<@~v>ybj8sfxqzy&hd?eqtWhq)5h<4jw`;C?5uA
zf~Z8H9c3{b+=&!W+Bwp#1N%130m@_cCl(RRMS1;<{uKG>hOo>zTxFofPBpDsv%GV@
z1qv7A7LSmz#}_V<1fPJE%cNo;;Jp~LY%y-wR02JP#Px%L)?KcpXG)2bWV=Sd5KEy;
z2?A(7%VP0)Q2;0#SQIO_#hnVv8&G(Xx<YIy6kN_XOfrj;?v8A4V}xh1AC|!&1pLUX
zSGUeiAMz)x_knF-SvH^iKjvy{{)1a7#7qL9f=)(<XBRy!RvipWT(bU%XXbNw9i`J2
zGR0||s=YC3K#@ca4kM>p?PC;exy-WU0zVU~Y%6$XAPfL{9zjmE9Bom*SQU7}ego%&
z$Fgf;+fF~}db3l3n!nF^E$z!@NnFqfoZK*HsR7D+CD^+r&P)pC>XSi+7Fdkktlq{P
z8h+4j;i6z=CLg=Jng#PZfM3|KVFFz@e%@XUyC5ks%BO)=a6&|kG67@3sl&8`5;lxz
zj^1bRIr>*iAJSD><V!Z!QOdbV7E$;)01pi6cVkJ|tV%2y6M#*?O=W=~0sy!w^EP9^
zIxKc!;?&}Mfr+8!#+$_4*x4=egEFCei-5<)urGUT=?LUKWTtIPL*MSOe)CO;V1EJ3
z{{YH1$!PJ1gZiI};l1Sd_Z(3P`)+<r^+AjM_f7u*H~4Sks`6{w?;cejukZT#Q$YU!
z)sNkq_^BAgIsX8DI2`tF_5HzJSBG(%Uw?03Mq92j9M{p)>x){vAp`Ef_*<wbx&8Wa
zy7~i^@5rV{_4~KNr&EW(@OAKP$J_K1y?y?%rTEO!K`%<)cFK`%>B-V#42p5i;w@8t
z`}TF;2yh;cSI~j|ud4T@QXYA0&;4}laB<;~V8=l7LnR{;;N_UJ2!jmGa6Cf)05jL>
zyt<Bm@_<t}kCcC>;?z&~*XQZtjp3Hfj6{8ejeS4P@BL9-hW`N7^!lSI*DMb|^N~`K
z{SBXAb5ai)EcN&BC=~DV`o{07`r7UdoJZ=qPQ&f}6SYmr552(m(RKAc_4~-g{{Tli
z`ik1GOy_Pt?{$cL{{Yc{JkZQ+=43`6AZ2i>OSBAz()X}0!lCgaIDZim)LT>;K>%U9
z(I6tafOJ6a)jn5<OjC*llRLTz!s~t{P&=D8&7{qk4qYi>?$*VCAq;|<CZ!wkl4OW0
z_PK%;wNihLhYZ34F<WiZ{{WRDVR2AE_*M<AkH$PHYBAJjlHLCRH8)M(5KzKGZqn%H
z_##xHr5Xj(!s+9i5ycZWOFCK^`FZ{<=%p*CupWQ6pnR8mwfX9$dWd3vnI5b9rPtq(
z>mi+gzuqY*<9svY;+cDYIl0O6>*-&g=3G{S`iGD28KMwOS2xcYR(j;nD8Qd&?*8lt
zG#F9z`n~sG2l^6n^QsS=!~6dLd2~{+U9p=ClJawztA<B|UyB9&F9!HxZ4>)ckE-X7
z&3#|1Z}&(2oqjdC{<pPw?EKUpAD63much3=d-Z(C_x@7u)67@a(0=~aZm+HRpUS;?
z52Gw<*!5T+tMPjLgts03&1w04USt>;xwX+s%pLn#=O`w|sPs(ko-P59Pi@FBOZex=
zUzDsw1S&!41cdJ`1nb2Bi$tm2t)j0hRN>xZ0eq>*)aH_kbQS<g$UMnfDvr<K&sD;@
z-N#fK6vU6oAc+O87R3Tu0-qVx{vTDIoc(Ya3|VmC%^c{Jp>=@qC>bQ$h@LENO-Z}7
z=m!@G(~!Hxh;aI$L-9pB3_In;5bwy&3%u$T5*(9wafXU^(nx7G>_@CX89P)gHZqHF
zzkOg6(Luc;B=|65_6|P~Sg;-Wxs}0{sXGK5k_o1H7IXm0{sM}O>m_>!MV)wWo6nB2
zBI1LW+}UiqBb5fBm6peFVhIgkxGQr5i7|nMc-6S0xuK0CBV%Bq%7;+G4R7&v!kep8
zPIU<dh3)xJ@Cq|^yQ;flFTt`VuS!uN90-j_zHe6JF$@a86B0aQYL5{y3<4VrM75BU
zLC&!?W_c6UJa-PXmAG`5N@?dhp|AL4zjXL|#$lVG$!RK4tdpwNGTfIrnj~E*XiT~Z
zdk!KAtOUz8E!d6a#y|?m(J$>GoF6K(xAZ$1gVb91NS)fJcYw*(Sj{xC7s`4k906oq
z6fz^BB19!>Suk{JEtzS+?nlSEG#pEpY_m8A8L~2WV%sg$*a?LcEi~F3p|P5Mbz>oZ
z*Uif|uo?h+ER%d^5?#n@2#(FLC&j}&ETKp<l6XRO%*I%?=<CDlxTFyWbuNj3NWZWh
zpv}QI6xqRl#l&=v#R7R@3;XA@=AZ;H^G{0hREZQrI&%@&Buq&RUJ08LCt#cW9tp5x
zP0vo4VqmQYFv3(03%r6dod^SL-3L4MLfwqAl+7}%rP^6+K!KKQ>8vbAJrZS%#ioix
zs+vcn)LEuLqEsq3Acg0^auPIHwT@uZef)z2gG^7nZr46GiF8bR<0IneV>$K!11UK0
zB6*jyw-biJA{H=WBSX7noC~HHvT-3Jo<gN2DsT3dPk5{Yh}147MU$7Xk?w4}+FRgV
zR2xIi>*CDi(S6}<*@JiQE{-CoaB2puaV?6BCz05QMBUecP#W@{Cq3S7>`h~uo^H^D
zUMa}WTO%^;nJ2RcI99y;Qzan6%Maw0t11wDjUs7+%iIPvb$2;*OJSU_FQ*0%S0+kD
z!F;1W){)N!J9E<s1nUPVM99WYgOz#3H*=*|O{`#e<pDq%$Oh~IP6N3Os&LAQSK9Dj
zK+sM_7G5D6JOCS1Kr)r%7(V&mRb&_n>o{>Mp6eoF($awYC@mpEe4s+uD-xw#5~wBo
z-_P)3unOoP4(HC1#z_a)B*zXt*NBDh!B@7sMbZrPUhQ*4x}NEn7dI;dgG}3#Va|Ks
z#%N`;f))k=#LvwVvA)}~G9>{&25Z4+UDOdcwX2{ahkU)Vw^(4d_popCAy5&ElK%Xj
zZx^A9L%J>t1)NjS5>UWnE(j5dd(OZDlJi}(QHeU)pkW^OdYF^!E@W1rl<@i}JFAbu
z*#;H>j{XkG%`x&3p*e+Hp}q+*E!_=7)DzF(`iX(N?u-`>V7B5~fx%Opb&^tfU_&zq
zPM?4*$zhZIFUbarZV!c!Kq(pX5Gd2=w>pX8xx0|*@%NgkcJgg6G+`F@7?Y)!(?S8c
z7w~^mK(P|<k}ckMK$=zvo97gz_*|+417O1s+duO4avaz!wQTz!Ix<Oe{{Sy2pWTKx
zA~qwUSh-lnLtGJOG0xA30G4ov0dk;Bz-KadYyC_kxUu7zpcJDK)wYrw5tLUnL$(q4
zc9=8UA;m&7*Cz>w-%8jtX!P9TO!zDZF1(yFPbpKcKPizt)wf+z+DExUbKk<WLfy(g
zG+ptsAZ>iP%R*2}&IAlNoRmKA4f+U=p@J>T-AkES60xT}%RKGq-w4#gF@W>FX1Y6b
zV+02MZp@pIc|6NVqT|J=erOk%EasmC@_HfegRpxnlFL-mOq%pS%n>Y21CRwqGiS;<
zAwY)CEnvXd;$%v^vcW)vAk6H%KhS!!4s9Z}x8mIeNz>s82N(wIZ06vf{6I_CkX**V
zgGoiVlTr|6Jffv45CVK!g`Sz2XM(OP{Tf%>kNO9d#lOO)O`3HtuIry(s29KEsXw~P
zd%hoJ8vPyL`71u_l3tHrXBFH2AKd={!$jMcl4qM^j&@%Ad5ZoF^3Tt{>)>C!udcpR
zmH3aj)m<I$taW~?#N4cBl<kL7vR!lc)@sG^`M<NxdOPkX@m{0OM|#&h)SUPAe6_q$
z%R7a3*(WVui_IIDSlw6|AA>V!pfo^U2O5xiVaes*@2x!B#d-`qXWx89Nc*3-{{WS9
z=ebP%;9jlx=3gH^sjd_Q29#vUZy0Sl0gy}(nY2PCz|6xs0M*)GQiQCJ@2fl@elT0y
z{LKPskfb`w03m(&B~)W16DXcgl<t-d;B+>0{(a2~KSwtLe$9JM#{U4j{WQb-@51NB
z@me3p!}#@CE9d?=zeecX=a=PvzwKo1^?%3M`N2>9AKM!L00aG*Hk-()T;=h_bU!EO
z_z&pE^|HqaE-lS2DT6W!wZLAaJx~<Hi=a4Zzb}PEBH1mC^P3SMxE2KJ6gW3v3J|8s
z5ORV=$=Kf1PgWOhlzj6BG)?%l=7SUwZZv1v5YB0TeO~fSuaKH9{G;MB(SsI-El(Vq
z`^W(=gDY=GjS5x0{=bMOzcXJ99w9O!qM_bz<X}OW0TFPi^9Br@N*5QnyqQ0!{((f2
z64}VGt;&cZLpJQUsGv^h;+pnsIrCUP8#h4wd(99ZsGeMS%I>8G&)28CP_O-8{p_kF
zPY1a>H$BsVrdG8e{rIcZeVgx|=>$9ChrRf(r=u@dy4?@p_xhms8FKQSdfy+a#fEB9
z`w-6GQt?E({qS<%FXj3=FONL$n*RU?zTA#FLSMI=_QK-IveW*jnmwmw!~D9q`r<#%
zEm^-F*U~&X&wf9z?CP3coX+>wzct0ZAM^K$_I<(nADa3M%a7cTmp}r489th1{>@zF
zi~TbO;bUmvO8dE3xje<(3I%z(1Qg|&kZ{b&CPHB&<&+6vH)4g$NQkiqNfO8$%MbZ<
zQ}|7iV2=R4Vh`9wv?wDO$v7!R?ZiQ7n9gXji__p6WMo7xYUlp@vn~avP#qEiJXxgP
z<X&)WT`=rUH(<fQv^NOQpN$l9F)g@uxTOR%4TK0Bju9dre;Q>{?&mD0b3m$7>lp=Q
zmS;AgLAXn~hn}Z=qB|{<l*%3kwvAD`E<^!$bkpL7btn{KZ5xb=xFvhU2_{<r&x1&<
zzE>M%*3VH&m3;lHKjz|wRkv7B#H`7*JPL^pm?NM>rNJ9j$(moZ2+XI=9<aJ|^cBjP
zX1i~|B68(?svzuPz-|%OL6>sRrtec^<nWaST(#2=0x!OsG(a*|N@1&t4mRb}gyuX<
z2<KQB4(^EH2zkkqc45Vp56cyv8NVvahzwCuOUG7r5nzqRXk_#VXw>yB$6^R(o5hb1
zfqOOCsc8JUi436vP3#U$04|myxwo?Dx`#vua-Jf_lXfD^Md&2sc%h3id<gfp2hiHp
z$@7B*rgdxS1A$PQG}U8eqp=LaqR%{C&F(w3u+0oL+?TjeT!fPHTM4K8w?4P=*<m)J
zu%G%6$$=n-n29rTU!d$_h%!=O7#-ln=ECHe7L{WO@1w^$kR28tJ=qKb3?;3=iYW?p
zBe>y$oN9>M)zRmOT7G62qym=iXd>M1BvG;S$U!{GiAtNV@y#t5yVwv1t6q!+dgjzR
zJ^uj0!n1!VO&j>$-rM&Yp#){iNp8=c)ZVQG*g_TtGETz)P=IXlK%D#@x1*6iPS7Sc
z(|5HD-NlzE5u`DDP;|AzdmdbtIS@nFz4N0L7jS4!&C&-J7|87?Dkg(osahwIJrc-s
z3}@Onlzhkp02r}0p^fr@2^?;QbqoPmMnpi5nE;WE#vfHX{u>GI_KQ{8u|yrCBK4q=
zN5mJ@+0pYvnGFF?grbt86{Ze>gEUKzwHOLQ<u-e{XTJ9R>=K#c9%+#jl%80RE{Y7W
ze}YlF19;LQP(rtNo$&!PqcYPcql8L8J|cjceA)Y4!9Z+BV)0WR=>hwE5vCgedLKi!
z7Onhcu#%W2`Ym$^Wg|41I2ph*MI68=P?X-^j6*%}<W8r?fWe25{Kz!n-S8u8fU@Is
zjgK-fh!#hjaEUBrAvp^IWJIcM3{AAI>E8t#)`l(!BG3zHUyKq0Y6J3-^2Fb!{BKdQ
zxev~Bvr$Ky_EElF7A_MfsY70~(p1W&%^E@{Mqx#y$;{GxK^Y=mS$fxsy6r)uW?~}6
z@kATUm=`!~AB?I5bK-bq2JiylRLh$VaK<uMBt@u$8%AGLF)%NAL6=-Pd%=O!yb#3}
zW0m+~z#uyryg3FKJ8m(IU%bUf1#k{2G8kx=z?yzOx}1O`*qlhB0k3z%lg{nn7U*4?
zbeoFtu1+cgTGQBXLqpS4*=kC*oxlAi<ozRd?3g}ai$w*-WR`vk%4P%m62li?6+ePQ
zh!xFiVtAMSKR#nQ68;<romP>h^A5GzZ**tT<mf%O90W?EEbZ{$zOGXNnMagm{{Yi(
zmRNMe#7qP@6DP+Pq<qo?$%n3QBnYTU)MVc6$g^N*nutX6jzZW{*AZBTmlw-s(0wW)
zH{SRO3rh1)Nx0epgs}vVnV=&9T&N>|tBAeIOJ}{7@QTo7LvaCR-p)y*5@;U^&+RE!
z_umm^HV(-y1?u4IL7x4XzT(kNMH6(%KVmD8Fs!+{liW}x2r<N;9v*2!KxDzXqnwiO
zL$KOB{BZToO~cPm$q$!VK<(ij9+<YI+g4<eGKe1Q?4B}5r3_l6DccgTj0lLfDo3ge
zt`2C!wdjMZvzT^|m7g(lscT4Z&CSq0F2*qcb3p?ZwaTd`<u;UxH@-t94+v|h!Nb1p
z0C8{eO^Rpv6W~;rM_ziO1M=ca04cB#AL58ZUm|1Oq7oJciHRlwOG0fVG>Im8p>pFq
z%@#m{$pHmm&Fh@_h*^`FWbRHK3VnX*9xsGBJ}5pC(2Rmpx=>03Nd_=3uuav#f{s@e
z8!>`1Y)Y9$X>b6Ij38`~WfmL2uw>5c`;uUt`?OFFPgnc5_G{$Z?}dNGeNFS|YS){f
zJ_nUZv$+WW0H@;>^ZMKD{MxX){(iXs096-gJ!_#S+7&Y~;?Im){{ZcM_dIDI)c})s
z?eEPY(eA(io<G{R?RL)^>a0lo;V|>@Jka?cjkyu-k~rA8H#{3{TGfKV85MiWaK*z;
z6>B@(gZTH+udTPNdC#~r#AJI1cg?PrFN)}dH~9htF`^R6E<=&d!_IM8?l-{#Fj+*F
zAFBFIWB?vN+JSMI{{TN2^G9R8{d2-q@E^hDW?d3UO$o|g!bDiI<QjwrXp+g82&~T_
zw5x=V?uwTER5L%+Tjumry^}GQtCViqiAWPP0brpJ8E>1Ji;Kp=k5~D&SC?N$^*$$~
zSQ)<MyheT0huPuy=Kgg*>sI@}%=j<G{7;M4kFoIc`_?j^y4?Q&GI^${`Sa`gD}wyK
z<oKx!eHx2D1XCO1#{KDPp^o748xx@$y{NpL80bqe!D2*9b+V>%%f>|-EJ=peaRMzD
zhA2rIn}!!E+C7M?)0<9VU?OASsl*LaFeh_|u;(mk(rVNvkK;z(8O(`*7@J@gZ51Q?
zfZ5HO7o*b^nZ4M<F5>|m%PJo%(i;%+NCXBlHb%a>5V8CefmHAcJt*5JH?=7vu99Em
z1dYQL5)Y6l)e0?iWx4}0MT=q~0HlxsSn6bLh(xPyMyQy%SHPTkM33DIjF<=+=Yy}s
zeGL9Puf<wM;{JbsbzB02guvgHqwz+Kw$gu<`cF;>3qQcC2eqw*m;Ipou2q+dW|{Io
zR@A;?tS#J+9US9T@E<Qf*FTz({r(sK04B0*fDgxyynRnZeVpo;ajd=j`!qKn?Jv%&
z1-`3Yi+_vvth;CK%@(Ks09x<sq87RT07Ds={F_b1KKA_iui95W3idey{)SzVj(^ox
z9pUJ2*Zhk8F86QySA@S-ZK5K<+o<j_fe)l;3#iBzh`9}X$mOLZ16IUwmYHNP#v-nN
ze=Y&UhkLh1V)rY~O2@fk(M8S+EZc2{SxK`H<h`fr#`CgTH^6lk?oo~8{{Spx)}5X2
z)=!L*Ys<-yH*FnPL3|@{vG<1*02yX}Ms0|_95{LW^LRUBbPuVdgD@bnWd`0t2w%-@
zWka~>#PYH`tedoCY@8E)dPd3|K_*eM6ivdMcD|&N%O?$w9?Eeh4#T{tLPDR~CSYbi
zG;bX0&-vY(MiT_NI=4MWkIe|T2EI-si8-1)Y!bnd6Mw>UsszL4GZy?uV(2p>kVMjr
zm|H`u)c8D|0CWfY7Ok$l-}F2JJ47`VV1CImzF=m711uiVK(P}M&{IQ2s5_~XYk2V0
z3*ScaQW(ZOcte&s&c(3Kmo6+4wZsVAOSfgTQ3(!owp^A9!Qfn|-ox?XKYG0on)!=V
zyMiXenkEdZKw)I9Iz)m<0HH9PS%@~ZnDZ#m3As^OJQc1A=8}E;sRM~4qj2CUOqu@x
zy7LT4iqx#Q17W{>5!~YjJll2ndp9&d!Bo6&EHkHtQoklht+0zdct|o#r3>TZbFgg@
zhi6#B@(USTZqsbeFWvx$qLGUw<YMFA7?EqFs1<=R)H1#-K)CLrE!0P+OfK?45-3P}
zL6HK}1_#MR@_jN&SNz<3NP}B^%mghr@NB3997*DS;GvWcbgsa>*C+rC{{YPseJ>tV
zSfo8f7DZkws^>T%dCo=ytJP#O{sQQDHOKnmZ1@sP4v{5-PkH@XPHZoM5e7~(a{_P7
zSZ36~`)qLvVcZVGqKklx+nX_Lh`f{`6w{g=lgasD)E)|qK6p(82vJCjMbeer*?EVE
z0p9yrX-$u@_zwfL?B^*E_&78PgeC_hdIqy}OI*YkVj3M`@XYol;Qe`}c%ogOR1_g9
z<ZwHyV0ANdVGE^{dY~@?LZ1Hs)sf~Bq|k_DW4`B*ja={vx(FBb28E~^k!U^mux8V5
z3GFztSh2o^3WOsCeLU}Zsl=YfEh2Hii6;h)+#$=_K!suWDv1dso?GC9JCbr01Wgsd
zc(joiKBM-i&rn1GVnf;h4X8O{2hWCN5k&-g?Sy30y6^#Zp>bIaxk66dtuaQ;uNUDq
z%A=nczp<7?nD<s`1KYvyUI&Ujz5f7IwO-h<pa+D;{w=+)Y7^`a-3HyV#%MY-4`L{b
zQS&qv5)zbIJ@M#CENrr1k-lMS;y6UuN`)->un9z##qSg`&%3lNMXz@z$kYMuPlm&P
ziA=Cf9MD>%03|J%r3r934^n$Yz=5a?f<6G-9w`Q9ebD~^xzd;Xaf2_yS7`Hzo9?h`
z{pBj(0~a(95(?|_D=7X=e)33$9=86LN6h8&m@{CFtrJ8IC^!<R8m8AfAR1}RDl>dy
z_dw23Hzte&7J<wjA<-A6oW5_t?v4h_%W}>J3ZpE9lq&q#S;c^9@xbs^wG2@|i;6~Q
z!tx*Rh@eNe>5(f3xc1t1Pq&Cy-2TfGh}uY(U?6d#87bvW8<yE+;M5_f?|@PGkm7(N
z?M()GVclZlqSvB!HXRH>@JBnO5u6ew2uYo~R%%P6vt{NZ_CXCwrn~opoQ!6H3$i_h
zEN1KGfu7Y*3qW#Em2~M9MY?S;URlWuz!VFJRU|1HyVH3zi$@lACo^;86759}K!0q<
zXEB=^BJ2UaOsO6hS1b{td-cuU?Ugdh934U$(PeF6kypwg2)y^5n&OeHAm0f$Y0MAD
zlOC0s;JmSUE^H4B2|IRo@7NT<KyW#9d3bFIakDnVqIaFICuRc~?wZY+*>#C9={uS(
z^dXiBJO<3sk#<3XV)j2WC=haFW@Ej)5P3zUFDPjIWDm$R%J~(1G6>m)12jl5Wa}b#
zCNAuwUj_R;cm73AT(DGpsf}6Dap&lzj0ZTLXpwW5o~vl7qS(dY@=(mTI6x3d0@a=H
zATb#L``KX!H{M3LSQBO#s6@dKL|E_}l0X?oiVXn9<qMuAJqre)8War`pN0Uj8i^i_
z7D4g8Ns?wA%dF7HCMPOK03^y+po{5<`LG)>?l6OF5c4YYV31uB(6T^@L6kE<<-}zX
zXBIe}E%HITt)FufZ(qS*koD*68X7S4^8WyT*JA$6_Lm;(@K2~$Uo=|!r|td3SN-?z
zKW^)T>)HE=t0Vn>7sly@;m_;G@{2zsz&HK*wIKMvU(TurZu%JfabCvr`#u%TUHlK%
z`Cmge_!Cew-){r1G^>EY@f>{ob6<D*b;r86ll5=6^6YbAwKMgP5o*vrx?XDoCMLJ^
ze|0O&`zg<@(&yJtiND;3*+0d~`4mmU-S=+qOuy|%i5UJ@N3Qpqf7@3iuf0XC=!fsN
z{Q>!}3*)b!xT}KB;rsnokJADE_=?#70PcSqAFCJVxBl*E0&(0=Cg)B&ozd8nzIGkq
zcp9Q+a{BDNTJ^)fxAk@T{tv$&@cV#T=iFn?-9R(EjNuM+r{n+}uj{LqGoh$CU%qTV
z-?|Y7t1Jl!X*-2}+Ef1koL_-g9ZQ(MiQHa^^mC%Tcv#^<weFF5(Xs4S0sA{FZGlW*
zGg7blrbZpcNi;T;&H#2)g-C~Ra&p&EsVfY-7-h1G6g1(U$m(Z|j0gfos7hjD7sCA3
zc$qnAU8UTb<O4$mzkdWq5T~9+U)y<3jW;*dtRm6)ni!gAeh`ww-1GtE84LntWx9aW
zfJy?CP6PlmL!bl|a2up81y0LcuT+bl^2ZUmq#Q5YlWhM0)WjmKjC}t9CiN-bX}o+K
zQD}H4-@fc<{vTN$2Q_s3@%O-_4uX>ldJ;X}u)kXR?mo?bz@D%5LajT$X!Qe^)gnG;
z54-uVqQP8i<ELL!XZ`;Gm#_JG-{^2E5WkmyC+MVq)@r<DSO}cf59j)O)1L89-JD;J
z@o;0d3-ZT2m3jt^v&N?<`Cd`ZK0f=1F`D&{Ee-@s)uan!gt=X@SjlzHWz9pPXOi8b
zp!Zsg_JO~{WQge0J~lSTF+elw^}m2m`NdcW=Z=d8oEw0Jc(wtkKtMlS(YzvlaWH~J
zv)wJjh_;j%J_dWI-{qZ`7@VmyVofm^UoHNBu#zTB8U%nbGW-DV5HlL5^9iZ5puq*Y
zyFW-vIn^L@ifLMH@U&WT<3wJu82<n?Bsrbxu6=C9q>OvPs1uYh{Kd=2ruD;^17>7z
zlniV@tAUgI7bC_Ip(Ssn&o%dboUsAOkQ>B;cUUtMb0Wg;M9r{MpuW>_!IWzRnAFfU
z+NBI-#R>_5a~M+{kjY0jiGpU-NUp2E9g2ny&}%hxPmpAVa?GpU)1ki;@mp<^Y*2ts
z_kiFJaE}y79AiR9$Q|~i@FVG(IylI+7L+iJ^SkPSP0b!Ib2o;u)EI_BtE*!KxB!4<
znTJh>AISnB1Mpp&E!3v6Fi<LFSXjVQXIHDfyD2j)eOF7--)M>8*dfI*hG772(!ed0
zsiL5Bm6R4MVv$DItT)hG4j5R5$0nRa&sa|Yzc7^EGOH%QykgXTCX^e)Jzt{gVpSaY
z?ku|C<@+YtvRNTy`P4-Q3?hfRFS6f75l~{c3PF(<i>%tfQ}`$wC^s5`L<J=3c^{3&
zU~Y%Uv_kcRxN_5Tdcf{uX9dEaMUW^$H))j$#OTzB{{Zst5E79Q)j36LRI^|OfU+bU
zT)7A@b%b(&XuXJ5VE+KgXzrj{O%~$3*JfCab*4WcLbqVbEK7(ThuuD07B1p5%+UKl
zQjxT*{39t+3-%+Vpo<}ug$BQ4_hu*Evx<`P{s_S#G2n=sIud5W-oIygfsuPB$WU<H
z#PFLUfh$qT+<9(%Q4taxkV<T~y$KldbDO_2WHX9&WhEuTQ1l8Y=!#Ha92~YH0|TWd
z?8G|pgc80jY`Tte$X-Vy$$VbBXDD%hqA|BY3~;cZw~v3wbW@mba=E)5+P|LXq{w&#
zkvDDOYsSc<o_7-k0GILVu1Ru(vB<muS_`;;%!oX@Q6?OMSg;IowdRC}{OAx`x6u#)
zgFt-0DXo^j4)(M4phS^7FHlD;ZBQX`IP}=qn_lAd30$(+lMr$_%?L{^#C8JlxYfHy
z6Ot@beqsoj%>etJ7m!l|ZzuqW!HT{kyfQ7bgk?3w8+ifqIX&M}h@`eGZ3D>H{Y5uh
z{{SR@CS^1Wz-FYe3G8*nNn)L3D@+?pNf?glIrbuMixw0Bf<SRNSWgp$paloX+KfD;
z@yj%%;-uAPF^0Ob1amXmV;H$%_dt>oBFq^LxuoZ0(a4CelH7L+xIQ5QxEA8lNwQQF
z!afEBmt#BotVDxiAz*<HB_W^y;sselQ+7fG6}n$zYn(>stD-12;>b{qsE!?4qP5z6
z#@5=rOwR5j+7jrW4=%o=Mr3;DnV}6zWRfKbjm7|qQ8_*Jo5Z}zS8lo*E-TH5{@dt#
zHvJPDG=un*Utfhi9%hJ|l#<)wHgWDK1|S<cCKaR>`9&n-gJMKP-LNc-HMCJ&te;-u
zunuXnR)33T^p+Ec-&h>=P}psXjHIh&6c8WiA8g}Z=4P))L<9m+08kjZv8fYr&Of9C
zV{nBTl1xSjQ4+#;a}+_nZ35gpqdn44=db|jfxZu#n74T&t*zQUQ$Wd&;hjdT$v_fn
zIl=O9CnzudV3KeQ{Na`Ot_~FwB;n1Jn;P4^uqSdEgq|xHffu04*q@Anc{~?ZQzqUO
zad@&n8kDEi*7-BeQK#wH+#fLN!xTmYX22Wq{{RI7W4lOs<1yrwDxP!Lf=&K*1?&A3
zZd@z8iY3tFdj9}+M$|wooY@D>!BAw{3@q!|<<}E^!HDmor>Jh%u8G=zEO#j*YY=*o
z#Q{i}XIV~zBX;wBD(?!N5_QMPwI|=r1B0bNnNG4f2g9rv5@teWG3&%u6%U$rf;?b}
zRJ?I>kCNvFM(8EwO=4oegq1mV8Xu5|6c9Op0tB<&>8J?#bMS#e`bMD8Qg<mwD-TJb
zXO7pzm{vdyh~zj&Qr6_j0PL#yK?znE%0CcE;DSX;Ufr8JkO@@rsfBl7Ovz;;1tN81
z45DB>xE`pyEBTucoDRcE(LnlyN~%qP0J4tcBS<0X35<cPft(7dh3l-xd}mW%N#CRU
zK5Hj@{oQ?4u`#0$pC77!^ZszwbgCS^=_J1XKCU^RS>r~&o*iQ|$GZD@ugm!2yhwfc
z)qQ4RbLNrh&oFO3CQotv4WI1ulVwmb^8SAOQVY-4(H%%OuP2G?o274xU+v4kx+c3N
zf9|{94H3Nm0Fa_buQmL1FXW$zwFlNYnZM)BOZ@Dgzw)%cZhTJ>KR-dfV?Iu*Pd5YE
z#C2q7ZPy*O{#`|VS^mG5uFL-b0Qc`TB>eL5*Q+YQWd4x;GkSp-{j$}MvTaNWhv1rx
zGQKL{aT`biFK9v|x<w)&41|~l39tceSgQFX-Pm@7owlN(^#++FaIFadtX&jBD`pDK
zvuxZMpiN|eP*L7ElK>q8O<8?&9{#1kSJ<|CQ;Ov|xBG{<HG)y}zCL_V0g!{OrX++k
zTu7l{GKHh^2ytKtx<Z*G$`*jhZ)72KWtC9`z!o6E&7_R`P)%SLn(OJJGS$AikB|0^
zvl#j;9FSB`^0;!B8*mma&FW^L!6sv(8-fdUcKcks=8SZbYAfB4&J3d2(ou3@2jxI1
z-d~O2);!^Ky^Mu&*-58y)QyB2Z+!~?0D-pZBNhqJrbqt(hcMnOoOxyg>MQVizYT(;
zIZJ|+ZhW%2RU<XycH?Y+DKvK(=59&<0Cwz_&fY*{zy^$gR0wx+iJ9U&P?`Wnqf8aR
zGIYV>TrZUiE9JY1v)T1hPp?;henBt)0Mq!#Rp8&hxpnlk`1|UBEfH?HZZr03N3Y7X
zMQlHq@wa1>PH$X4NM^pu_twd8)qRGD{nJUkE%V36hI9bEe*O*(K{)*1zuiDjf9lqZ
z(IL;p{YO8#FQ*@WmS@z@@skeyVyrRS&(HGgSM;9SI*-#xo1l30&t9v&`D`Dz_>l=;
zV|V5)f~+N=6&HEAag>A4E{KR3kB0LF<u|MfPz9Edz8Fj#`Jl<O>L)BnFEcA=riD#V
z!sN5YiZoanTc{T~MFg-P1=acA%?IKguU7-2FbR+PN>YRhA!6rl5!>0jB1I;@17qCV
zUwN;8SCMpa;ux1lK(zk=Km{OX`m}HlaEs3Y;5obrky6hB%&coBU!0L&)P&A$D|D!@
zVtvcr4gUbxkSW!4`+W4P^j2DrCrl(@G*LWfmlO^mScF=Esgci-<)2j%<-|btNVZ8i
zy;ulHLeeGX{fIC{z?K@U!sbUCr*ink{?1nubGa67b8!vuQEG}^UC0hPP{&FQ9@6;j
zl_jpSs|a`}z}|BxqHe_mydq#+2?zeQL?F6n7W;nW3R`*yiSlC8_y(2ZteUc4dN{#Y
zfEOq~EN~cf5#*IHP!<coQU^gCm!2f*!f(COBe$dbUlT+IBt0dc&Dge=wj6Wv9{`@)
zt@Eb*S}!+grd<<4;6=NpCmgB-$jDm`SNN7qbJ~*;z@D;{s>S2E1lud<l4@Wcqy{!&
zcuH-Wg)jp1V2G*BnJ0BPLp_uQn*utT)**Iz<Tr8yu@1J@AFjq-jue7`Rs>0;8+Xr*
z$nZ1M?Dj;vY1BD_fy?NaixhAYE7bw+uHUTH76RsOJ8;wvWg2U~Z;B8cwj+*CP>IgL
zA)JZ!!J@*hJXw5xOk7cp=fMXC-ccG7Xpy)-<UEY3y@cn717#eHxtz*~ei{I%1r>@g
ziY#l&{oo&iLk9cUUvl_znTy6D2q<J#?z{7p?q3)1L|jtKmu_4GiSmji5tkKJh?K$s
zM|Bi<0?W;7{{Ut{+ikjf$NGyi9rSf7F`|#{EsWf8LCXc0+)z}0H?BNYv;}~eqL%47
z6e>teyooj_J#H+Z5s-I+5~4XwkOp3&=p~VT)x#OgT`arFhd@B_UUu~T;4p|u7t2?(
z%7do1X3#G$z0jT00gVNvjy(?sq-V%jnOq2=)Y2t|yB;olTxXriSvJszdV)3p+S3s@
z;4eg#HzzY^*JkuxHEppF5F@j_(I<!zqZJUZlfZ!yNn0fU02^~jNT$!W272TUv6XrH
zg)cq*;E^!M*e3E%@KCi33XXkXZ)U<N#}xA1+Ra0@A?vmfk%-fLZhB_FWsAElJKd#n
zk@%l4R_2%>gtEB+hAzte0EtexM4Jaw%jA(kn3r|YGfGY~L18F1JJ0xL<FHr+5PkLy
z1M+PfpP2JNlrZ~5yV(;o9mYVS09WB@n;XbQ58s(eEXa^S)DtoSJ763Dlh?Yj5^h~U
zADz6&qTi+0$z_0(4b~zrk140q7)I0`(XBy0anD&ZwDiHArl@6T$)>x}z97@E82<o3
zVrRygv=LJvnZoRN7BMwxK8ay$pUq4WM!IY)QN^={6G<$&Wn&U+FWdGsDb$N+a}*V9
znhL@4qB8=DJ_&u9gY<Xef;qg&2XFvoWl{sQCV$VzIX3d_&@c&}5qKAX3|l-Iq=efV
zoku^-{roB?T)sb)OET`!6#3IXGke8w{j~ydM6GjAjD<4>mF<u{yAuy~h@o-I5p%N{
zfq`Rs1x1YScwSaGrYc?b2@fT%ZfhsY0RqVl)xM}hb0ZSmKaK7Ut2X9pxXzwAZPbe2
z=YROlVxlxgPk{Au*q!uNiz<G?+Cr?&t6NX(&*prNS_c0BXGkN3%ZAP+hTzg*g?ny@
z1J@k|0$qs=8_quh*iw-uxJ9u?x>12z7KE(B!lexgq{6VlU>sV=l0qbe0*5h)Npp?T
zom0p}3Oink-C8{*$2K;#5g!7d#w7m$nbZ=~fzCLg5*MkW$S|MkD$yZm)rl`><2DOD
z+ylY(I7gBro@jA2MnoYL4LUqxoDXOFU(FU4v7oP9D1l5;XdZBw5CbVzBk&9W07Ujs
z;=xCfGNB(j7Z?prLLC$hBw*UyU72T`rnQAdmO&GwaU|0Szk>1Pgn{T}05<_-H!u%?
z37H^ZDUW6W1`sVP$eaS^NELdXLI|)uF2V?51yaPcO^)JnO^*V!feVq4M6kai%ASas
zkf0pMfI?uCnnK>Mj3blU$fIJV&>4x{Vi==9wG3zp?=S{#&FRB;@-uw?f>rRkJG_1O
zK#7@oa6k9^pO!2i`=5$GPK<Il9jn4FpWXO4Tis-zp1wZfS7ZMGI@g{nf_VP`r@i-F
zyuVHSelx)T07LZS&QF&4g)jGd0d2ppnESUbo*wl%-m2_uWsl^z3vpK+yR1DMCVy4n
z{7aYMYm=hgw@~H(02eo`pI@E-0K6QE57qjvPx)L-{qb3Uw-yJ_ADTt@+kBSen)Ytz
zE5_|z2T#mzHt;Lxy~g9$4y2KF?e~Aq@v-(kW5sq?*K_m^4Q_X9c5mPLTpK>^^gP!s
zU*+}X;)WI;8eoCm2xW&@21oCh)Ds1}5lFVv#^sbsFT4wKMF}uFv0+4_sJkmtLc}59
zs9O!dqwxX^r#zCEvf^o?i@{ifAKY9J2`;AM2bciK0ggl1VG}?CB4PmL7mNYq>c@pG
zz{EN7iDaVWP%t;nc5#B0@#26)h&L665g@_05UpP8UKZvdTOlNXK!?8UGG@fES&r2}
zI{q)uT{}`K8Pu0$aLNdKLRA;G<~B(sWLcK)W(^5<lC+tHazw$|R4VFVe<HRb=Nq8?
zC^;ZU8s~30q*5w&qgv<HCqOL59W73R4HeRLXxE{kMx0D7le6eR*q$H^J>Pif=K?Ry
zg>ct0`@#y|NVTiMH+9mvFknoRU6bJ=cH4<aXwY&K0{T_Rlphyjm$!hB9F^`TSb{|l
z1pdYcM48FYdh9k$mgEAUY!GBf!WGun{{RrPz7$pmy<P|HZbdMDXO}Ey{{Xtd{`Tej
z{{WN~Ig^@NAM=5FVGc3<l<$iXQVqW=J9+;AmGZj3d?`|E=*a#37@~jE`2PSumHIi_
ze!ms;xBUGS@Px_SLG$zt*W>Hk@#oCY5wG9<t`G5C{{Tq?AlHz=yT3d$6F|P|{Hthw
zXy6&CwYT^aVNT3n(VM#y7LZa0^I6MR;C6=MGzT<wf=hI%kavl{G)HPbfDr8F3n3H5
zNe9hY()>J?LWxQUqP?V{aWp`A%_#Bstp;fr3BBSte^(B)wh8PdHebn_NfwG@$YLCi
z)e#Eb3Sfj$kU*U~niux{fGM(UTxG;iTjb}|ZBYm!^En`VS>yx5;MbQ9iJ#4LiFMT6
z!$dC3+z9YeSFpcwNeR8|GFs9jGxlMHW~c?$dA~Q8$wq)*QZ6FK@#LY>?&99#YenX;
zyEam62}rnd2zCbAhH20YnIpEs6XM1&m~j21%_5x)%_ZkXf{Kz>@6C*Ix#3)*8EP3s
z`rplZh}V={0)ZDUmI2Q@8HKf!0a&6|c5G3!xNao)RRewFw4D$D%di!74(*Ol^8=b8
zf}S@R`XGXUg#?jDneSly$c0I-Z7psx4o`91RgCf{eOm*C)n5bV_POta=9ZjEIg5$S
zyg{Lk1opFI7yxreu!R}Wmw|+r22J1IT(f8r3$V-4r8zk6XM0<~y8`ra9$|$JQMx~s
zY_yj`{QgoE0{ck^^J8@;2!gAPj%XV+z*ZqB;Lxd;&m@zwe!?WiZXu5ETyQ9pfe@Tz
z1Aarm(J$NiW7t!noTfJd$i02OJO>~ai>&#5rspcuw(?3?j!)@gNo3QnJf3m{T-xNi
z?#><%V70-67BY5AY3%-|F*H1Z=p&I`0jUYmGV<i&SfCUg?Z{MxUnGVnn6}8XG;av6
z=3n(>mK7nFwa^#uecdT^yNou!&@lN(Wa)tVCu<dsAcs2lBUD5xB6>7e$tomX{eeKZ
z=ts94^I_#Cww48|w`dK5HY+TFLbu`mQlLkD;`i_Vje&he^q>88Q?9UI6QR6p-US3V
zxFIIS%xS<bkXt$<BJ(ij8wIFu<kF8mK&9<2s>`+FV#jm<Ne*S%@<UA>CzgWjNOD@s
zceK%yJseC%nP?jxBno7r%KX5xWZ#D-j3-yNh6v(LNsemsAbZy<B!go-Ad6!F5D8Dn
zIEk7X0!6pGzJMX^tEV<f%D?`nG}HUZ{3{MJZeq4U$St1Wck(f^@Q32WuaSTtZ^W(S
zrX07TXrE}u+Cg157D=KUS?54u;vy#ZB(;_gmCNI21(Qdb;k6%?g5?7Sw;@>ry9Pw@
zzG(0imASKP%srEzDlC5nh&w-hNtj#6eI9+YNYb_Y_YB!VN1ry{!p~`ZZriwqY_KG;
zhaC}s0+q((6o#-Uk9<j@@&L{9qB@x_C1o;^;^muS<;<NTRi`@vDqSZxxh{&I=}SNQ
zA6O3W#nfJP*mo}bPgj~ke|35!g(|@}(RWZ-iU7t*Hh@tMl4~2nT_f-=dZJObNPu<;
z0r}kkNK`{sBRM>xz^$SnF%3Jid7v2*W)7q|GGvs}iXnCp*5RHHSCUqv`{8hT#6Wpy
zJdl05urOsJj<&&vUU0yBqmY%McO#Y^qe%-yu-$_N{Px8@i~j(%QfA+@eJ2M3LoqU1
z?b8P*6F36j`cw@KT)r;&_A<ust<iz6TY&}C1DSK;B4wB(ie4^TzxI7ViW4UN+crXg
z^RfluogB)TK4GFTYbIJmxG_djUbb(}N4^*ruRS%{@nv|XHnBD-&&FV0lQ-tT0r?zH
znj;9lWHx^=Aa*Dhcp67d+APDXhxSaBrsq4=s^D8h@EJV?GyrgwmR~UV0f7SYDG9<t
zsd7T)(WPF702<n$;zu-RxKn4~@d!K6BH(4*EtU2KuREp5V0(GU0$7V^m#3Scw!+B=
z2}o8Jq8M9ZtOL?>%&M|FGZ@Lk1+nr*qOwjW^dw@;Q)HQ)YFeAa5!TH#1Aw~@=n4WR
zM+J^}B*2Gt7w_<PCpfRHhhZ2F;&w}&XgNUG2{6MG&IPctK4_Ekl*D9-G@r*(Ll^?{
z9_V5SZKmYl1Ofj5icUq_yh21sFK7*7CjJB%gKb5Jm|+CTB?)(Mr@MPJz(5F<q}UK;
z02$jY&`ZeQiCElamQa)twgHfU3hO{vk>S<;sish_0uzMjGFVN7z_K1-rE&xTOcO?>
zH%Q6JVhR$HISE7LL<}(nS#v0meD=u!u#5o&b|P8o!d#G&l2?L4W1t8*9q?-B1O>#l
zgu~A$7K|JgB_8WioFVDXA+l~zED^yl5b~x_3nU*Du=o&TcnDh}4nn>~rDa;}{^;p5
z^9~sQ07V1gvi@)W3heG~;~#zUoq=y>7O$DVZy(C=eXmyZtHS24ZhrWykD7jzyYWy*
z@B7z#qLZf!9Na5q?zTn#yhn7&-;_eXXHaYD%XEnJ4Sb4j`o>>4DmSK2Y{WcjD<gbq
z6Cd}x*O-RHztGmGkHPgl`0l=64&ZxxituESz5bS~>i);q*PjOC+~?Q!zL(5=TDopN
zTCS(cqWeF77n@Nn{Y-s>&351RzWF-k{Pg}bKXvjM%dQVkb%5>v0G|+kfZizl5#Q$-
zqJ->_Gl7ZYSf!i4f%DwN-9-Z**amP3x(6_(P&DuPA`~&8m5VwWJhzc?0ExAj;jv+W
zbIJnTsZSCYEfGaKKbc|Rzuf^xv0wos!ntFCMGX*t88|O0!9+~FBmv60Fdv37V_gg+
zBeUamWu}e^qicvUk%2^9VZ2{ZO9isqV7pu(c$j&W`5AJqEBKjOywNVe0vF<DF5m@w
zpn(LpFvsEk0<)SNF*9Q2`1+=X2az;_l$pDL4dRst7ngy&3mNIK1HvYOBj&dtg9ZTv
zLDYb0u~^8vrDU=y;>k6(c_e@k8UU=GkeCk!#<xWW_-O<O#(kQwqth{>cX0<b*$KgM
zF3AxbMKqyk&mMMl;!l*LHRt<->WTSI281ZSYyd)v=5QD|kVu9l@5Lt8C891#nM?sB
z7=k%G>MyUSn%MYf$JZw;<Im6hy!)$8d|%JLD~A0ncz=f#e22yV0BHH7D1CpXdhn_+
z{{T`w<2_DjOXu&;_$%~XbK<bK`;*7p*U{Op-{UU4%=-Ss&#IBhaeKEl^zR=ZpEL$f
zFS%xI%=7Fw#2x4LrEDJ?KOgi^7_ZTYIlDUp5y+uI2tDWRoup2l2}q@!r;8{vH>AaQ
zm3@F_1N>4#zj=D-YG9~#r-1jX<~8i|xXId$frMcD2^t@hk`yGACU3d55>=K=$b1)O
zQW_X8hWnu&P_vaH^$ClgCCmdFbPrFMU2aSA+JQ_8$rWF6aQ3S3&<VDL2_Ygy5+Arb
z`SI56U8Uk^yV=-ra79E9xeH!F1lfNr?k)(kOfke$Lc{XNqCo|@BpD|(0vi2|-IxPI
z@d3(B;*p<8%wCBG)QQgHl=<X?aGtF!oykLuBL!x<Ghl}8#8if!P%Y0?VpWJGwlqfG
z=xp}y6|;ZMf#j7%9JdqY@WQg7@KPl%#18Y%G(ZRL(v)>A$Kxc1f{DDoW-*|{qL^A+
zC^+OPT7uE@uOk8s5^_cnVuBMph?+ACE<()QV7r;gvdNJnM|EJW&_~E#gkIGI`9qKW
z;zVwvC>PqO5Ju-PtRyD$4<=xaq?_i(wJx!OKNh^erw%gt_-soaVTzk=od=N2GreM5
zmpCV6FCQ``D!#I9DIofGri=4>I{<`jX+oh5&JcAC?6wrRrUb6Km4fH=RgFEO$O|7!
zM|$!~;7Mr<C5R?fCcTT`mEa*}<kJV*%hWxH23b|$q<+<;&D@w*qs9RQyxS;dF3Q@j
z35gA0Y2D4Jflh8w$Pl8zdD(y*xDCwSP@nijZE7G|8RPAW9Z{il8TLA&D5W{oWadE}
z?uaIDQD8XT55|gdTk=`s8A|**wKy)eZet}HudcY{vj*-J6hmj6JSebph7G6_vHgdx
zOYsJoXdIsQ6{7zDnmxeqa)g4L%)yJ2V0zC3ybTr;Xav>Q_YI<qav`hG&QX^&lr0-w
zRFJ6)vyzkURLwyZY)q~A`y^06bik4F=v{f8IVBcmZ7DGnW?s9)k2w^>c@~`NY)`?9
z3c$x1S-hcwd>haziVF|)nkeRE(Pa8n^spxKr;?Xtn#V+t1iKls#T&otHO<0b@@P;C
zEs%B?j3J1+FJM&?4lEL)D<g4dVY}SsIzWI2w$zG_)^KnbccQ@nyL4hk>}6$!mASRZ
zG?=!92ue+V7GBEzXg+;`1ObdMmey_wFgbw}DHtFYL=?6x+qx?N@ZbPRu~q@U;BqJ3
zsOd!)p5JkEq80$c=Drr?nqGM8bVM#MLX&OEwS}Zfh!~TfgFCPpH~1v|ERU!MYVcES
z8-oBy#%sK$JvR|9U`))>n5guP1|lGWul2)j0U~YCHUv;&&{Q|($bgC$YUUV8d&HXr
zV&KWDh9pdfQ}lx@nV@m_hA>*&1JWakD#7Bl&vHCRG#e9a_-Pv^Nb0x-D7fWbu;HuJ
zffx5hlP()HX~&|T{EVOm_EfmqXTyn`{MVQ~j7a_tZeWB#u@%Y8lkF!Cl^#Xf9%rG2
zx`urjlemIOips9YE=*$&^C~M8_@vq4nC4o=1HsvEhiDGq{PRP|amROBES`=*HJ(6V
zItWPa;>8x93Q|RJh!rdtVO9|?OhR6O8Ig*(aDaJ`U`3Evh$9L{ANs^4;=m(^UV_S0
z`Tqczs|xCWc1m}*8KJleCNZU}{{WP-=(kv$D?^19w8zTPZ`qAdKRX7;7Z*NbOb;Y4
zD)Iz0{%OH)AQ5*%k4)OMJ#ATc6T8%wUWGs_0ni6<?;*3?;R|`X5J8y+z<8{eDLW>^
zcCN+-vELgek-4tYO!i~TM%KB^YKNQS(2!&svr2&`%!EJ$XAaiG0w}@{H%YeN-~cDO
z5XiRAPw`&j>j3hBg~Sd#`M&5P!joaN%pJ!Eb@Z0PBK|j~?q>F<JqhXxs29c=E81ne
zZ0LZd=(pK-xEl(JDBa|RjhA6f05Xk72G}Cn>lW@b3mRM|$%>nl{vJr>{{XueQaw{m
z3-u@)Oa)2y9DYgfvoa?`hi?ndFS^Xt!X6y6&Bw~1+)&cF5WvHZf=-d<yA85z(L=@P
zqQ!<su0OIZ2B0}_wB{~BC6rF)uL?=+><cU)(Td|F%peRD7(_5^?wz18j$}X<lp~7)
zS*!kvAlQIN%0;k9E82L<+yXd&5l{lC5@v|F2_Ogp0kH&x;s--<adL<xO3GMp`Y*yx
zTit=6Si`j<N-1ZCjocf+ksMEDm%+1iI7k-Fga93Yg*SrPnhK4<Gn}k0&z`APaN|h<
z3|*hjXl4Kh0K0A(03jgVUiT#iK-fT9fFMu?kcmn#={X7^9+?ZPBU9q|%lV>&q~7!6
z-{!xg{C_|4>;0d{{OW2E?aDum;P;xiHt^5iu|!MH-XqVP&1%oQ53zdX^C!5S-o6EA
z?=Jo;_?&$DUx}}w-?z7JuAlGt%<`%W54#IG;*yWE$cA$|sULj5a=vX?KUVzp^Ln}N
zJ?ehN>K|X{_2(7I-d3>d&-|_r{BOftuItD*AH}gh6pPr$e*Vo^Rb%+)U-q&+Y5Tu1
zyS40&zr1v+2@WrYKK&K-C|~K0>Pe;m4}ptxm{tO7qXeK7i?cA-Mbbui#z|;|!eUH;
z#Su<Hm88c;KpYHOiwx>ezy>_KB({YTHWE|=VOtB)A|<{~2R>xQ-GVI==0#Bg5=j=p
zIWsr@9YP|9A}{INz9wiXE&)>E5owlR<x$QS9q5S=SP~_s(a@_mht7b;?Jyg=uaoS4
zNAQ|Gzu+1CV#1GWeMDzZ-G0IEJNx*r!Ed1KPx8Kx^cBtx0L%94_)66)zw?SBd*x^I
z)sT@~PhAlg8=G8=xuNm~Cd7)Bt8pbVm9UoNC2ht-U}%i4vdnmva%GC$H1XIlk%Mw%
zE6rYS+Af@0d-Uj`<r$ni^*z#oy=ggLS{reDJMA|J_veym1EbX^pd@!dm!+*a8)VtO
zDe!nMDDIdLvg`q0xH=HQw8FR%0iu{#;c^Q6ED4ozN?KMX#CRd;rC+x8;AcE!iK1Tn
zTHl_YYqjWj?0z?2_5SDJ#Sx6J*zxD~X$EW2<=-5|el0wD<o-i8KP^whYP_7OpOTO6
z`<VH$Zhorr{*IqNmt2pAA8p4qk?DJL_AC4jo=y)GkNoi>Ny<r)&2Q=Ax4D=J?3OFd
z!=L#70E&zeZzl6I^8hYcq4tqO{RAWgB}2ph70Z-Eb33781(_&5k1`P;(rc(pZEj)M
zTy}?E>Da{FzF?GO#YiTICTz;dhB~lAlTkkyn6YBaNw4@H&14#zdNet<m!Q~6)t)bT
zUA5H5-GBm#YSuM?W^Z9~qbe_q$b0m?Z(W;C=ooj84!ktylXehL@s!X5X%zT&gkITf
zxde?D@2RnSVzJE@q4*r&;O2Vjijs$`S*|#&9+0pAekN}Z6!@coNCZe1xZ#E<l*5R*
z0h=E^F<3^q0if8DMEWsP6Hj&)<1_QR;N}Bb`+@QfXd{I+#gth#f>VQmO1u3^Po(5+
z2vC7HR6-K@A5={#S38i2J4Avm>iV|(Fc${G?rg}+<CKQ)eu3Je0ldrRJcc~;Vc2k>
zXk2`NGC@YXCc>x!(>Wc<p?Xk3W22<O*2)x8PIE?Ai7dbpa4$vy_G%0*V;E*@WmcAQ
zAjoSp;TB(mlWf{PMgX&?))`r|Suk$*5G)~rCUEC7JY3+>UhRNd>5}X{Tn{qZkoP#k
zn<PjSXjFJ9P>9X<4joMA%NsFr$T$jw5u_mKIfHt=#%K>N%Ge8lD7(OFr}qyrxQjTy
zI|ld@Tno-lWSDZAqZrO&A^;$DwN1SNsO=_*bN>LN2)FMal_`<JN}h>J=w%wp7cLJ*
zXVP*-0D>S-=x&1zc=4SJ%v@MS+!3Hk*49)D1(-HrO}-;#!?19C0s$(XC<%E&FmInX
z%@y)*M6Xgw6l?TFhjcTWw1m;)$7F-vlMkaskBkuwm8{A>4JYL!6$+YZ8_mnDI<Gat
z(=vlWY6Z`aVF*j%_F6PjX&4s~k_+L&XbK-6dk<+~i<5BzMAjK@)@sNlTRKo2-PZAY
z#~qsG8!^b#th%t6$8fU*h2I@IrK`>BA(MODbYkTb6+KplnZzfZ(3Mq?q*J<(dqt`z
zNmQkN9c0*v&Z^j=H)ykY;e4x@m4jx{3MW?~1#KU9+5FE2pc-8S1^G3^rrju?xm?@+
z*tI4_s0WR+)kdvX9A&0JARUfCuna4L;%@+ShBF|<P47_`Rdlu)pL=!b99A0?+nOxy
z4>sxC_azD-9ysLNWC2;1Cd8T}wzU@ayXb&b8iHhjgZSubq|<~qVnJDiHREM0LOvM}
z`D%*)0NkPXAF3|W{DsvTlW3yB4E;+U%y&*h;x+ejxt%I?4_gKA;ix*e>&lx8NXhdf
zWPwD*gj<9mw<iwkkj%nO`7D%juM%48IFQuQ!)~C@&~#cYx_onL`2t~GnG=vhsVp9H
z5AOc}bVwjU+Ks#jb1v&T@ax{|1LKYA$IZwVR{AvDRmK|1mV^H8^ob*uVA7yJ<_Txf
zNwyUQh6#f<u1v9Vff3Bu0Vbd}2%R<#8ARFQgBaM1u^bX>R}=uG^5a@X$#IU==lC{8
zLJ@M(#0tx&Y_eo{z!7~K(H71vaPIefngK~%66m0(Gu=pk3{VuESC1{pkqhl{!K^V+
zm$|;*(Q{VFwK$EX2oQODMP`>B@o~TwFA9+pF<V)ZDL`>{=o_#?Gzr_+u)P(~_w5f4
zZc5dGYf}AIp<tib7642DQ|8GWBb%|NN<nfHYQc^W!Zxgx8&iB8uNt)}r9Cbt72`2+
zG=Y4Ed?(tOBAGsWFh|LciaQJY(tPqC2bzCj&`YcSsIyv?JaA>A%37|)5PW6;=90eH
z=ek$|$b%$7AW<lD4B4ojV5gv{)Yfx6i<fD==wM1pTeJTF0z&Ha34ml-W)XH_mz7cp
zegj=7q$8>@!vjec6)wvfqcL9PYhj*LUo-{nM<*-i4rmZ?k4vx#j2{FxCx!@COF<Y#
zN-f>dRcq}IQN@?+J5kR^D<;pJgCxntY8QvUZ*EhhBx6?$k@+spXjFp!U?MPf8`T=u
zzhsS~KM`t&FffcvMfN4DArzjb{D2S=+!=(B$wVQR3vj3aLlPks6l)}xd6$x<<|pGH
z{v@|>1br%$U(Jqu+VNbrl^yH_*)k40p(sHBk`N<#y}cAgx<rKbMPUOL3d3?HJs2Sn
zfffPY86mJZ*#wCg6Q)Uk<TeIYVn6}|aT08>V4@q67dr?k!iXYP0kt2MC}6Q0BP<Jq
zvLc<%%6It|Wl9~esDUlYK^7o4Z$_5h@*y$E8Ra92m6ftJ?#xAy+2s0&eo6x{SQD^O
z%#nE@0f5w?5^yR3OuHxq=akK+W+dK_0R|+*S!G&X9<q)^iAeioum<7$=fwHx00%=y
zMty!AdR}+;vt9#ySNW^TucyuP_sM?0m#-CJ{{4LW7NYf;ulW~>k@o)pto!%Pcvkv9
zY~s5=OXuQ0wPEi60G@s-0{;Mh{_#usQJ9~5%+?qBlwUmO-9Vr6{{XYk#TL3pzkBtn
z<a`>Rv%2Iu&ak~>aWN*|B3-!y&9`5Zhu3_5ZeQfj_CIy?9nT}4yi^PI;`{rq1K_;f
zeuNEIBlr(EInT{75uJs)3jQh`%n%2=xxG5|A`&B{NV04ZphW-zE6fY+l2Z_gYXDS&
zL?kSB4u=tHKrN(N#JyPEGmuIKfs_)30J-W-!A=o%*$cz6*Oc~opjCAi5ePCFvjiWJ
zbxdk-7?F85?20Qy^Sx!P4Tdkp059<(Vt~51E>UDMN;MMhKw!<C%S#&%2M77p_v6Z~
zoqJApXQTAdbxFK=-Twd;`Vt&(Z>st=AJ^V~K_i#(d{8DfBQyE3#8*oP{>sOgp|~7)
zA0zxr%_NH6N6Cra;<~A5o{RCjEQ%|u$~)~oV&)8rI;potQUOLS3KKYN=;0EDfD#%)
zEaLhuq<4oaIGW-!D65ns65=49X3c)%5uq5XlCz%Zur}oFt`h>c>;#CvB9-3TRQ}SV
zHH{;#OfaJ}jjIXf{wtoWRk@}s3wMLB)yoah(_9ri1AseVU|@8}2zY`$8~*dOmqS~Y
ze*SBL2is%lMk|2UzWiEhPP_6Sz2Xw0Jm7J2f5s^fy1wxDSU+Na&cBpn<`MUg?SD#>
z^^7VP({3^O)vM`$Pct9OR|9uC$WLEe5BDQ~ENBOGCDIx3jxdr69D6E>G^QnR!>r6m
zVu+?Ml6AJSu<nj$<?)~ay{EJgM0}Iv<qk=W_QW}Uxa6HAE4WkwK?e-tJHT9#)eACU
zY{Z=q<{hXVJ-Qdmo3eCOY+Ibi7S7$|o6fw>*0L{-qz#dM9YmG=<ALaQp<hZsoVvtp
zyruxRlM>xZTIZd%fDj^uB%CMYxWA(;kPW~IxB0u3bb~UlQTi^EX$U&ca;SL=Yl!S5
z*)0oDoy`@&0%ly*iKEt%6mGZk`~r+(mE-I+u>@KvRemoFA21M+a0LGV!o>h&MY@X5
zB^oPzAvYk{5nEk47f8-Lnj}x0kGHp}h=5N&E$b6<hcQlk9zGg5R|3M1Jj9>Rx-N#M
zh(9IG-GR<wLc+{~8c1hy)LwH1<k9Xhz!$?skRb9Z2(Y)en`dYN&CN?7gS~iK2z)l^
z`9d7c0dd;`U^`S!cN|I(l!9$@i9n5NDcK;#qE0GqsIV2W6GmK)W5p4C>Lb);qQB;j
z72quj3z9|*3-?1Z(>!C7x{E8gp-pRH20ev#OcWMwTTpWD5=L7_2Bu{R$W5R2v4J9h
z35%QpS+>VRkZF)Z9-R;b62KN70CZ3$z%mjpRsLz)q)b>Bg1>fdgj4H0Qxk$W6cbX5
z6ag_nqmz>I_HlYWuXF?Xh63Qw745W$DlGut%`nXd;eiRnd<;;VG7E2_7P?0mZ0|lS
zAT4qu1oV@j^AMXJV3hK;lE_T+*-e;tJcTiWb3D2+#|J{lK&Us$EpP&UY`7FzZJx=r
zyb(lN0uMXfO`pXqcu+mVjwonR=tQq%$$*F$j+-inBwrI_2b8q&L8uN>01+iUhMypc
zAfF!5pA1SOHcbWzKzNT+pq`A_0>+YY@qO3ghnnkP!fR*pMxf45ll2QivmiwjF3A3C
zfnh8-#SuHfd`ZVV5W}KllLhHEF@X@&Q2zjeP=S9LyP1hKI?S`)cSsu^9T3NwhomOr
z_m_GT)dyxiJb7mnf>v(z%>xV`3snwcCSMQa-i<c{fzDn;?YOhWN;8%cghjqTW^9rD
zmXYeILm~qFFZ>{nbO$ECVL3+D0SGikBIb;`go6Si2}+76J7EG8%Q~e-<B!g-tyQ8L
zDjYai1_%aiHD-o_%pVb$Q4~Q0QH+K={tU9}-RxuZM1Nt#WFMIGFUPxDxz|RCn_k|2
zOh;MRE(Dy;^G7(G@~k{@qD>qX&sOL*yE87`7rQTmP0{^Ps2C_dgmWVa{2;<SFRLy&
zb9;HYceH2pWFK<`SRY`Yv~_CP3>%{DMB9{UQx=yeAPku(mF{Zc{VRSw9x*gP=)F(i
zxtO`4L^n7eQc(5HfRn!@YjT307OQ0QZR_wC=7n2CUDv)Sh%3*Ctf&W2WQa7xoAP4>
zR8BvXR>53A3`gkaRg~-U0Py?xpg!I1!7aH1eJ1Pg1jr`{@|YFDb=yYm9wk96)rVXX
z+c}By0!Hv?1^1E4FvjGt5UC7?lO_O4j}geP;>%lp40Ftvu$jA7Z4AsrCq}cF6K(F0
z3f#~D#~=<ZPBaLJE(py+*AsM^JkpyzG=h=1E)GDDx=$@d-^VV&L<e2X(wQ9c7%he!
z?J%&Ck?4$3lEL6E;cMRXK#@~*gN=oeuqhM?fH?&I+)ewlzCH^@@>r3Z$$N+_+z4^!
zgOq$9cF5SWeYZyw7I-VF?-ZvusxRK3d{Rl<YjXLRk*gbDe`hevQ6QUkn9P?uoXo`I
zRbv|87?dX<T&Dx`1>;u9;7|~NVDVxqO@8U1KTSoCL%}3Q=v3>hNDmJWnjo_=o?3+j
zSXiC~61=dN-U2q8u~`CF9?m+shC-!(w-IM?G6)g{-5%lH?l~$(&7HckJAqG&rXilU
zAj|~_UDwRCM_53)bnv9$kSu-NQv?^+6kO8l19T`AXFePjP=vg2C{Zcl8coRvJFOHT
zL4&nOON0wJfdUp3#>!e}vQkUkvMFZyg+Ae`IEqFl+m*7X-RjYG2l5{J9+d!2@gn?h
z$$hFNF-btoWPF=4lQu;+@h}m%T`M6z@PTyNKzIiuB$OF8v2Dpanoe)>$67R;z?oJ6
zAcHq3AP*vsB8eDgNgsfL00_uL5pYn200L**L}v;D?qU=fNUWkkvcxJmR4fT&ps*xK
z$0(WhxhD!BpN1_o(lUxK^JxGR90E~-3`Mx6-+Yy1Gd@r$xE3bJ5W*mg$&{`gW`3?D
znH7IOC=trdB=>Ac0cV^f<>q4K;F$!{96_f<QX~=(NEH%SA~C`|!ticTE@=S?ARx9z
z$|wF&1QHFaC*l3hq@Cxsx~wG4^7D;%)qanANAeY6#NYkn-^~(#&wYBpukvv9zxh``
ze!M@r`cFsp^X9$+{{SzptakqZj%y~r{pjsM_@th@>#_LIsQj<%`1r5Q;IV1_D&UV2
z;rO53Ne|jT=kke*w|x(a_>b?!zm#}?SM&JcS98bB{wJ+gi<j5LTE7E6m(J~3PQG7#
z<?g0Mt&+fEO|Jq<4l?o}4vGhe*fC})Wk|3nmv(W!+}Cdt`h5L$^&|QD_A8>}54qKS
zOGl4&l@arY?rljTNN~|SfCfF^Q~(TFc**buC1h;xU)01C_bZdwGD`w7#`htXP6~S@
z1X!aXiNzU@1W9G&ln*G71Dq!kTKe`|q-s!^G`W<KOq@_Wd%a@BlZ6nJMG+*gaFG=5
z$>c}6z;Dm}d{%}}_xIGrewHu$^EA!t*Vg|4u}WcSd%=S3bY!rFSQZ+$Hj7-!kOE*u
zU~7B(b-$lZbPqQ7gFMi5EZFtK3h>jr6vIY;!txgT!RSkW&<TPt{1Xj3(I@f9O9zrm
zH#Y?CeQ%I7Vg-?o6uLqfbqFxT5V0`|g>g)toVEtN)Lz7tOqq$tI|?fz<$+zgR6w%T
zKe@J-*vMg<Eo<VUGTxBE-zJaR!0%50Et^MjXkG{l2@VOUE=j0EW1jX}5^i!6ZQXhU
zN5;HZ#aKN%ea+RYk=ws7HGvO{{d(Rjr{A{j-<A%QeLVO0zgnjH`|1AxEh4^^HZgA&
z#Bn_Ef5*IYR~*0TAFK6Ab*5rSvCNl(S4k-p25p^m#e+dQfvjsXt_JZJW@wf;`-~%$
z0NdaJLDg2gwaET36d59Al6ZaaDE4n=3!eFl$%jERlG1B_S@8wYncVV$>35IBinKY9
zD#6|^how_eqYS-`fsuSbqv3(S&dSViO<1Y7+>`~N`&{KuBta;D)?(5IKv)-04eIB0
zo~hLz%>|s#GrBIZ-`{Cpg{;VgN%AM3)SHV1;1;P%qfg_0JPP5i*vUP>ZP?h5DB5Hr
z#EM*IObghcsRA6sQ#7KpP=|B}JCuw`x6l^A2ncb)QjCr-!B!Lmf$=MqfaO0l2kJM-
ze*2R<2$mzEMWj&N-3g;a&hdoGKw+u0+*O2^D(^5xNM%%TNazL}-N&kfnLV}uPC&aw
zi=aMb$BA(3xXqC?V0<MXl6LYYtcy~7?Uj$53M`}|df@|tUCFyyK3!lACD}1(617Lg
z&i1q%O5?d8;D2;!z!C5~l0z&%KV=QwOw%CwXl<?;IkjTH?I6Z%n42DGh2DLz6quBo
ziv<fyy{rAvJjOz?V0=%cuo=3vj}V~>V~091a0Xtjiui6OIec(<Vxp+7SO{QUX%^6+
zk_0<5f&*<a5UeP1Z2<S6^_{Jk$2r9dh8Y2yI8q0uA1~1ZGl9|c^YQlim5r5+m?xse
z711O?fU%-v*ML+$r?lBdhny#X&Pg9AxT)a58yN-RJE}p~<>RABo2}7DuIvG#i&;&T
zU&bRb!3;yUtW6H^lyc$820sn}l-M)?5LwAfB7-?T+#8u+@i3?|Ia@>|iTSqqBn>&D
z4`TCwG|rhI=ZO4*eFiwg)r?^x$?kxoP$z311bFGMdoZg101F`@phahT9k#u_OT{ns
zKa$FP{{Rs|kj~PG;7z3@Fr8+f<y*2`^@{@1W=j-C@-~(Y^+VVT@#8S7LVVaz5c*1H
zb22u@%DkJk<_v8zbE=W06;3WfxRfC!Ge92cI9hx7%1ueI<<+(cb;((%bqtb0xhLde
zODdfq?EodEvCL&x)V0eW?`Q&U{6;vB!y}J$(n$%3CJEiKmp2nYV(A+*hu!7{-2=9v
zlffb&Wu#3Nu=4k0gNz`=s2fLKLgg?82s1&`e-Zt_XhObddOtD{WD5X!@p?~({_fys
zlKp%C08cn6lPO8vz#BQHb4;TEH)g1#H$OO8BEV#rCTa7AByV8(ciGYbv4d_ffsYNL
zKmsONVqyZ!<XgHRE!M4<=nniDiutc3^})ycKxX82TKP%2SK=)kcjTGTO5qB~&c@sU
zZot_rp-on$dy40qAuLsp75@OmH)hjo(2&2&Y>W;P#(9SGmR+aK!?g(VGA>;=Dl=+g
zamW1G=2O@be3Y8)_}+SiXvV=2u|az|ZuR~NOl6J)BugbvCkB|0Cya*ai*&RTaSb2&
zM(L?@Lje7ANLaVd@~}GPL~?xd83PgD@k~ZCO21i{Hu$KHvm_iKM)s5krtk%he-cBW
z633ZgHVNx%i4^xFvvh^VM%U+Y9z*Ze+2l<^<$x%adE2km8)1m3b3RD4f|OSQtorI1
zu=F!UoPbZUj+Ka}xW&?vL+!r+;B@E4D8(6^hNNr$c#a5+Uc<{mX^r;<gPenz%G^d$
zUN@XKw3h;*l?P3lhbK32EI7O7DKNf_17%|7^a<0OnO>4%0sN`XL9a<YULsPMp|sJI
z<lUn;fhECIa?(=lREK3Zqmb4BfL_ahZELy_3v=;m4IX?8Sq$ISJ5pt%+*FKRV#+W%
zmMqJt2oT^wCJba0U9gQu(T_<5z>5pA#;5@Tju_uaOb2K*NV!}n??5F_b41L&zF=<l
zU}`Qa1#VyzZbT0)noms-;pfkZBXKm#%*4F!%ZRru&<-@e1HhslXGdZ5rtUS03T_-V
z&COkA?lZc?x?#i+Si$xpY608J`Ro1~CjxRY;=zE;5CpsoP?7>B*9yjHB4|-0sK=Uz
zWC3+5XJol*C7~s=c18&Nga(i>2sjuv6mUhHv-{5&p)LzRWZ{4}{;8|PfKW&f8Zbkh
zjZg%FJc*Y9#BM8)sE)V=%u6T)WDJ%N!2t#gA+BI-3NrxiOcTj!2b4^QVG0=vB=~iN
zvyn0+^E5#S0IDyS3K23a5OgUPP>${C!4VXG{n?NkaG9{n4h?3`B{O&k*fI%1(hQ@7
z_u(OlZ8sMPCQT|vaaoe*Y1mE>prRNo4S%k10SqvEA*7)05(GG8U6pr7?&M#(Knlzx
zf{hNy-(f!XdUgVb023XUbAgS#(6gMD?sqvrwGLql3n$0HNeBeq%00OU$+CdLb&)9(
zMGy1SL?Cz|-VZ#Ac%RnG$Gr7jCqKaX@tadQVUuzApv?1cADD+Us7e_-$NLjmFYoj`
z#laC?)%{<u%|D%--`+W5u01YS{jX)WDf_P#*fTHR?-0#>Ei$2fn&Gv7rq_;Z=t!T}
z`$WF}FXb4;K#h2Boq8>C{{UwcKZ*7$@PbeHry6z9&zh%uucvK`H~qV!&EC;?xcs`h
zPFM{yOcwW;kIz9w;~w{y<QOM-H<}-y=0Wo#E!jz!2fKlDa{!s!X*^R!e+1tq5hHnV
zT1}`xn-UZecZ+D((2gFf+4yz%xHLnq!|31Yg^rTVkVMM5a6#u#Hg+Wz7ZY?0S(0d^
zC{Y1p0`oQ`iIE`KWQ8OEWXxQiGTZ{iDLBC}Z~y{)Jd!)E+<W8T+5Qy~#O|`fx0eut
zmqb%DW6o{%Y!eMJXDZjcc*}<(zJdP$PsI?qAJEl7e+wyF@sDJ#`QMkA#Y+s1xEZuw
z(&(W)sDCZYWNL&qIleBx7@lkhG@nlgPv@6H0bmF*5s*Z}1l~afs<+ht0AaBpFj(SU
z7$UDZ-vtaQF4cP9uR;dt9By7kGDFEp97rKE80)9)+)v1YEj-rlPI9>K{w(0;hM!G(
z*^P?7IHuq#JRH%>GE2f537@ocu?)BU!7v{qF~GebuCx3ATg!Q5L3FGKy41vsUeW=^
z*g6m|P_o=4f{OcE9{cHY!m+0^=TqOo{BEw|pNYr6@z>zL@qfqrUjfdDACI@Be0+Ty
zlxdq){{W-oo(*i6w(@uR{MYpJ?|<DgU(|n>&&8@q10M*LgODS|sdm9AqEe&|Z3}^9
z4o%W*1$ELg9~Yy|m!FymKy-Q&=iPV6K;wj{q3B9n0C@Qj1;>JmvMVNR5?YE!S2L68
z<lDLC9q3J;#~Ke!TWHXwN61r<xty#>bk~AEA82p^?HMWpeGL#Ha$ptRcD$gRum$2#
zA}m<)TK!y5Z-;c*A<SXWLRbKj^CXSl$s8<_e6Xm=A1v*M;6^C7Y+gZuUKF7Q%8kDB
zkIWM=*AYR9grDXUFU_Pup`&-{SImOrK9t}rO%phs@NxL02Yhz5FCe$YHU7p<;5gl4
z=7YSDKB+eIz-*UAh4I8wIY7naF&3|Edk`So!f<9P`P&nNio=}9gEWA(ZX<>;CxmMJ
zV+CrAE|Uz;1W<!`Y1kJMj}-Xu?)9K!KI2q~b@C}}eB(Hy>18TtY9@*o<kAv#+-zXp
zBL>7YT^2m1NMrH;0Fr7i?&rjOE^Gx)kpRNs#IP)CXr4j?T!-XDaE%XviX~`;i=N;?
zKj)U0pfe;W6@m&omw2!)%;8X_cVy(&H^?awRt3HbSucqK4Gz}$?!rV!n3D#16(XM&
znej3`RoO`sX2`|7P__n3F~my`UxFxs15M}t667}&QHKS7b2goWNYg10gc}DNzxM>t
zL*n9tVJ;Xh63L-{brI!gH+`Fy6&uT%haSJ~>cm)#%!q4|o|r7t<l~O7VL4e|h}K_W
z$caGlG=t=t5!hY0jl*+gU)cz40>S}@c(FBX;VQ38-qILi_iRx+Dqdl%E?|~sL!(Qa
zrrP6h7e_WM3J1r(&C(y1$a7178m6KrCKO)l8t<ne{<YP_)lTx|i%HlE-H~X`oe(C@
z9|e?YqZzc^kQS^}n{olBd4yv>-OZb$gOEnPmvH|8yk3nFLV1sao+7sc&+vGe`2w^w
zdtfV@CebBV_Yf%Go33OADJIenkeu+uAkvU3>Es`d7z6fA!;8ma*J%s$T6hJ+7h=#e
z)ijeGfQ^UG)1z$_tE*^{l`VYcki>P3Kke8i;BB$*G~zmbSOdNcJbMD~C%Q6Q!-ger
zhg9F#t7zWFTQ>gyYbY}e>fi+;-eJZvZht$&pF0-`Q7j&uELhEiP#(*x8fEl8d7QOH
z`6Fms9(AKqkq$cH4<U${w1t0-c6}b`#tdcx+tjoQh^m)-j5#JJQ0n1lQV};J5X&)o
zEYYOQ9sEB4%b-WniGp5)qE@N{^GTJV1gqmlQ->HC0G;D*V3<+Bc&0Z6K@r@iC}O_B
zq$GC)24B1!V!XqKufTgI`EH<8OOAb8#pB#~3j_#`De-;#mvh2^BZ)tpfRQ^)$08_G
zFML98qLIz!f(OaZC?zA0&SAheA|nJZ9G9cT53^0{114AlT+xiU6ER>SrFZ6^)Bxm~
zfyk7Qo4^!e%LmN$eb~Bk0wMY>JTK&epr*~MSCoL$iurT^jzDq0y)Ml6YOE@oGC4JU
ztvK;xvNOU;U|qFa;a~%Nn0!;lsKzId6>!Hl2G65iu1KIOiUbbO;jq&<cgbKwy4cWe
z;x!9k1jrk8wh`6#tKB(Mjvqd#fE~Yr&wKs>xTy7|)MMP2VHiH++*v4#6uZ4Djit5Y
z7JiTjq92&WVddFP<q))?Wp>4k0F%7ZceX0Pybqg_!=Y7jL3Rwsi6e?)!gJac=^Bb;
z<dYzY=Ut^?LHrmDz$sqvsLvRlpP_SbfPxi+Ce2rxXqFE;?udKnorA#JdCk}>D(p+a
z=i_R<8d5zVA{~U2cF{yw70f2`67L_H$eW5=u;C^8rUH0og#=k#h<7a=43SO!Ly#{9
zoBR8MD&r)skdPE!Rt+7lc%%&Ky!ryq<4%G~=Pt;QBkWY{XuyWKV8zi|pqT(#M1WmE
zBfZu^?Uwb`t@%8Bh(5{DvE{&_fsNL@1!ml?K@?Sf0Ps>z2%(B|+8c^_zxKk20A0=+
z>_mrBO$IL%Tqs5|7i!_8p))tZU~(@wgF<UG)4+E?+zxF?nT}MNbbRN|1q{K20At$y
z#j+~{OF&}_gouF`+mMLD5SEz>Q1kgFz~+%=GMSbdcrwwVzoA5Aa0E{6aEKp2np$bA
z*nmJT;L(U{tT5kmkYKW}A%Hr^fKl*+0GS!1581+4E#t;?RM_;S0Dz_tnIPIw*fbNt
z(VsUbGe}hgRM?erCQbvr9B7-f31=2_aP39t=VnT5GAtiinLwaG1)7!u0@%#VAYmZd
zD8UmmBbi|^0;42=(B&Ys@=iH(Tc*)I^Z_O5Zk#SBXwJQDqjIQSJZ%>jBo%qGVJA|g
zLgsMgn@piOVub?C!3lavup${Mn3w`mbjn^PBwPnKx*mRr$Lg4GXkPmees7vW?eFJ)
zxc6E!bMNe4gYj3t_P)FKci7^;s*iE&`H))GW6=Kqvo-W@^XQv40r~dh?~B(b=wRR9
z^FvpU_8s#Iu1Ahe>L$2dSJC(2O%k2>y|RB7q4+`%zQk^`1!eZ*iu!Il%j?BT`+1H(
z*H>EJ3-8TsPp6;bv7{Qt{{X$*FN!dd{foweTd6KTR|Dp{H+PP?9C}o&H`~wr&3?L{
zet5=lN7#FwqIuq{l(#!BOF}6FHNQ^&<kyEsfJM`mCerP&W_#cON_U(PasU)`dDF+A
zu~U1@;&R>L7<|+(0DcQU*`k{=kQ^M``w&=&Hmjuwy>kHoaxOr(CIF))m>@usfKNc!
zE^Z(BpM>MpNxp3OYJL7HG28aPoT|b5>De5EX?Blvz5V#8pUngJ^w-hfefK>&?9*?@
z-Tsen54`7%T99<|IGP~`nFC(@Sl!-$YY6hrJYec5sQ?HhLX&4Gm76dsDdqQz@%P%m
zo7VOW;Jub_vVM7{jrsmLu!jizB$$as#jAqJ1S_cq<Ks2T)w^D7@V|T=_xs3~z+v2#
zgytN&JcqjN&R=-d56or{mytIapH}8jrDV^*2V&+gqiL`!$BQC@Nes*+oe`Q7-4bz<
z0}@C97$%1;8wf`M9&IG^K=^I{0NJ)H17Go9c&QCAWPUHV+`1wak8wdU{+fY5YJLlJ
zgBToSs19-R=Z3_d_aR0LB@)}QgIKZ_HNec+Jxv&pjNk?fOad2VxS;9K-xWS~_j3co
zf*1N)+sLa^V~*;ZOhZ?JMTlTACgT9{H<YO^bcR2cH7@K>frME;_@D44LY$xCUyq1O
zW*w1u9KcvE%6Ay6r(gM0i5GEqP;S&aVp*v-FCfwZNc`asE^c!(R!*|84$QEZmx@>S
zW5*0>1tV%jmr2&;Xxt4dvSv9$VMN$P_`f8}du!MWLL=h15fZ4z2w8bkXJ2vC4y*~!
z73hg_F2qlUunRXImeXJ#J}Wdr_FI#&8VrTop%50=p1>ZjuBs^Mlw`XcOp;H<3kd)$
z_ynKSoLZ&sdW<z@A?N^eTXbrvfPi^76wC6dp%~x;{8$txGj5gJ?JD7mV_JPbn@|MI
zpN#n~QOINopkH$k;^?1}6(Kv!e<FE+;=kH@L^fe-BB?~lNGCg7#o9LWO$p)oc8#SQ
z8J@`4&c0|JI!2D`vULND!YfvU4a>`%*d=Jpw^wjEHYjH<z{jdXDjOusV=R8?OiVzT
zGC~f73LVtw#kxzy>3(e$qXCXHX2!BfXEapNd!U&>E>V_6fPrz*E>X%`RJE3BT4y4`
zz+*(^JC3yXif{tHZAGQyDH*?~mU%4VQ}^mAS40xAF7y$BNQbj12^|PFhe$2IdG#2v
z<>&{o4;bLue#WS3gP$NIrOkjN&Q#+5LX!FYQFBq;CXW;Ssi&p@3e5BJ^+PUuWroWw
zAMk?!3BWAW609~NY?z8TN{W&qMnbgsyv*|gBw6hhG|Q;h94$BKKzcMs0^^M_f(BD<
z$`>>V#s%Rpm4rCD4q7f;J{OPxiL?p~CdZOPzlGXXqIDcP;7~x(ytd-RCP26kvQV|d
zR0b_o){1AS!<ckwi2%Aj0TNppQb60QU|30EC@JA=8VDQVupd}PM2w-Z&co&`S+cH;
z7UO?i=qv#c>_D>t?4I^0nR4uJB$76>A0}1eQFLWyE^z`<M8u>CGlo+xL1mG_@aCCZ
zXVHMhn{y)6LNH&xOpBaC9EFfiEz+8U1`&)*L~(=+7t45%DEuYNk;Qto%>d=lH`CAQ
z;^3E;b0E%61PCVeaJDD?iMXE#IxD1%pg|LdskG7NL1Q{WkjH=o&w<6v(Zm9V7fX?<
zU2kaECb{<8&22NRE3moPa|TTmzhya0Z)^iORp0|F95OgCMFdp3E`cLRWV`Ytr30<M
z&g#Pe2MC%frGFC<nV(ZCgo+6A*f>FIVqzU^3m@5iJw-F^!1mHGyqn_K@oRLza`sc$
zW5B0Yl64(kk^5r|1UMa)5ao(E3Zyu?#k&O*PV`5D8<@Z7YWbbnn<4Wc$HBck1w25^
zI3|!8qN6L}{08uKVl!Y(lxI+voMA@kgAvUeDi}u7%{jrD8?-^<4w2qcu#WR$;T#uo
z>A|qd{*wFLMMQ6Pkb-i?m6{_AG2iW(6JX+#q6h=vsm^)$#x|@1s~P*7dK6LfMo@;$
zm?4Banre}sD9xC&S2h$~8u=hZeRl@JH3>w|di*j3Zbabk>{z+}E&*_g`eYkdUh*Nd
zDGATUE&xVlg^dcm-!XA=?=D)SB>w<3uraNdA>xxAkb=)NCeP-uW*L0Jtd;@!R-&?r
z25q-{F=1ge7!=5tQSEXWQm6|3Axc7h-%6Ke2>TQ!U9%_)7B)!)rSUR>kp}6G<}h>g
zu<bySKynEj39Jm01f0>XX%G*L$?~+RpbnpF@g_~h)Woo%*BO3(6*vPhIgix}0H8Ps
z5+r;qf626#z^|bQK(9Rsp$L&T-a`C4nqxr#nrHTZ?H@UUFDWbW4ryVs$`9B^d17K|
z@)9^VkK+aAWpnGba)rfg)#9Pe92mNru?$2;Q-j1AkYHR@nM(wd@AP}bfVF7<0GnI+
zP&BF;aql+|nkg8V3(&s&MHF!Ciiw*EmmD%Ct*9lwbvp^lw^fUAc|ugm1v<bqZ-vu3
zQMTdX2oNz0Qz7E*o0WGLH3?-BC_^ob*cpC+j~y^dxd$7Y?xxE<=1;}gh=yn<fEVzy
zo)q#Z(1d$3fj7uF2pKKlf$)6K0jpS*g3U7-z{i^m!I5z*_<%_c9Eoj<O+g5eo0G&L
za0TTY5kiExiXkQQByu7`kPrYad;vItqFJ(`xdJJW2E~a+T(;4ZOH{?9FmO3G(PkQF
zqyR;$9hP|x;DulqllX!F27V-$Ad^dZp+ZRITolte3APhKZwkR&IpQ-wD+1wn1Cb0M
zU4j!t_!7iyxg-(|*y{{cxj~7U-HUKC2bwMcF6@#V*m+kQH1g1dGqrNG-pjb_`8o;g
zA$~5w2+?0O^FPNLJEs0{3kN1Lqb;K>0Cd(OV2YH$8^Fy$1VdP2rqK{W;Svln5dQ$p
zABq0}1FMUlt0(B^uEh*L6$P~Zlb<}^Ye<cF^>5#r{u}i_uX*6<r^I{tRrFRNlDaem
zOo+8(%zYxJn0v;5FZov==R<urHThqQf11S?gZTTaMk|5mkgbolxT~%1KQHDWQC_$_
zzmdiBP*ivNE%|lP8T@{?8>o--bNq4e=o9aLGWh=hwE8>ob@9kGvhdsPXTq+=`qlkC
z)@<${EY{C&`2Meof6L=G0IRMm`VZ**Pr3wJ(lQo<@hGDgsdsBy4nYlY$Z70j={tjA
zIFJ$QTR<6f6~-*Wxw#!7Nd_<(WK6^tBk+7gvlxcyGrsML3l63jK`szv+&4KX&K6(4
z4&pP|t0>9|GX%jC8w@!@fCPwPl1-q4vI~{7P=0rBA4@8%U&g!nc&T<%l6mp=)%5;v
z%65(T{RKZ<8S`J!B>pevpY6?MsQY?lsr%~ld9|x)UtIh8t48S^@vn|(0LiT9a7+Q!
z;Npf%43H(tHy=NW)3#ZI_v37Cx&X1jBpJLN8zE3|131AQ19QEj@%T3u(>rZ>@1XbS
zgz*Oqf?~zqbF^H6xf)fGHBLeE?!mILQ^&Cy4`vUVkKRAd&zZ?8Frxg+BJK|S*wXJO
zI*|d$oT#uP>(+V6g_<7%gi+)mm>u4%K^A5pdd4p`EN~%XohN*X4QhZ8$$Dd$^AA^~
z2iyCFwh3<ueADCS{!t}q%zh-;9NEb=^gHta#}1!+7{QY~@MYQ16t>nkIu4)_&A<Sl
z7)VB;BL4v40xSR=CGbqRJZ`v*14po8?7dNZi9iD_6vgdCYQ3P2ZG;t%fnrDIeLls&
zOQM!Q69<}LPy81gp_#9@q}%|G1rrO8a^v|E%Apgz^j>GNKgug+F?!ok_xA>mX8@ze
z=mzTad+u`LJOmy{4rTCKYpaCpksvEc_OS6_UFM1V+jD)jY2a3eO$u`pHnv7UH(s!0
zGD!SM35SdKcUA{1kMun(VH=5_4e+HA7^2Apr}y{~c>%*~F{_ggUEO%t7UFr`onOY`
z>WQC0oycO-w>}9p1NVVK0QzvStH&7lYSTRC$H6NY;Qs(l#9UV4ZD3G^&4%zSXaas8
zINvuWZU}0SEZyWHOY+qvs?3d>Ujope(89tgneZCi70RoD9J`nD@p!9}zpu^wp2ZT+
zH<Xowzh!1<5+L8P@Q7DbUp1co<@uYS8AdOZ&LJKgHt5BPk9OZYqd_<cNiu6_nUnsA
z4v3)&)Mg`gE`zQ4yl|*-7C53IYPn0?Km=6vf^0yH<pQ101h^L|4N-Mm%=hk?`~gN+
zs>{`f+7>34tmdoJ48WHP_!3%9f);>auM*YhMb~5(&<MS@P1mx8T;C~|9J+f=U}(Yr
z0FjuY`pv>lt>O8mcoMb<#y-%*ypSMFG2#N-Y*fBtg*TldI7!X779(xzA}suA?LZJq
z2`-jI4ui5Vnx+xe%{Y_@jTjaNh=ve2!bWamq%WFIXU3b42z26%iQj#ZqMrZ&;))4-
zYBZ8qL5N^oSrl*&7q%9ZSnk!kAuWofTZ_>g_4tcmqDOqGE}&|0h2RnsM_TNFmmlE>
z;X(aW_%MD4d9W{@3?3l98ZuqQm_@wPlz3Kc&y46$lno1j#=J}pXqIVYEQXH9Qzrm0
z&_eb0E(ih&n?|XKg^UBcn!Y0@$e!I>wb<#^nC-31u)LWSc&k9BONJulJrHe08CVmI
zpb$6O;%G?AQAmx2kYXjwX%rltfLMMfb~N1>xM454^(NZApcMsm@vMdRZz9N=;2Rj;
z#WB0Mr;7`|@@|4PLWGKLZ8$mHWSJESGqYj{=POsl9!!eJOuKXG1p>?xFD^9vxL_PT
zQ8c#H=2IV>(OBlJMizzTdZHNBfPU6RZKnj#C6-P4lf<07jm$chF4G8tTC=B+@tBAK
z{dGp*2pc|VklaDot7v`$)8|X(+hy`e&VPq@&25h#_p8UcL{i`5FwJ#<!TG62oqy}S
z0;?9=f+E-8cNd{dC%KPPX+IZK!v(baU|LlK&5)<*wq3NU5tn$0ZTf;Xq)4a8S)8<t
z2mQUn7mn8AvthP$Y)BC&W{rZEIDPF}#ZeUl5f|lY=VS`?$N<ZjAtjY0Dh2vaqejiT
z00TJH%bJlhh9Zmo>0vUiCeG%FM;`gg&-O>KFxs=xF)|4(Mp0_Z0$6a}ps}I2Q!?5J
zF*DnoY6%&HMGIyU&?TO9k;JMlKOuR1QDzkV&61#GO5;XPn;6*LfdE-ggIff7h!b^j
zGM${d2#X7lUVMy5HNd^+lJkhP=8o}q7@{s9J=&X8jb_*zb{f9<qNGIl3<<`qhT%Fc
zhT`Jr)QnFglmxQaj6?%(GnW)Xf*brH60*#ZkYLd*j5aVh)+*{kZl_{$Nf7~WY-QrD
zFC51*wF)5N?ubI=rGhyEH>v0q4OoTik%U3EwHb~;4^=>sIKpP?kufVjs|bVQfiafP
zi?AnQv8srO?JwkIU<I0~EmRGxh9lxc=7)1k*^lub+Vrr9$p$iv`lF|qE*u;_$2X?=
z3)Kcro#-!qCvUu(B|sFM7ioqjOAJ$2oo*i+U@;(RR0`+*or3W4s2c9KiC6<Y+@=Kr
z$CRaFmv#)XgFsm>^GLo%(;SsZIimUV8k6HVuG!hTamCH1if%{o8cJ=OSV<g+&TL~d
zgvT1eTslEf8Z7Vu2q8xR0RgZQMhoy6=oBc7ZbAoxGJ;~;0*eq}nJ9$i<@J+R)ygL#
z21WspVvnn{!yyz?U}rf{xFyWl<Q7bKG(;k6LSh}wi6bAXlqhqX#I?_Kks>BogeFO$
z+j1^w)HN<xvBiP_Cy~euPSHt&BzedXUl2+hCZhzE{2w)YvXTH`hDke<piar41q8dS
zRmu3k-4m*qpvCWW@@z|hYjg;N8zjg}1jDi{8W*6fg^55=Frr8dTLO+2at+`T0WoO>
z=o5)=odyW7B(U@|V69CtDFRtHiwKU{7eJ{jz#^~oxOx>Pmouc1c(TjIo2il~+CogI
zB|wO9Su`B6a<aKRd?}z2aw<&B<9>jVG(0)L!Fyt4kC#KQVj0AwVGagBF+vt$0>HA%
z!D%Nkl0+K?Pz^*tK<EjyqIsdFAVG{a@*9FBAre0v7m%?qY;s)!vMZa7l#;;&1=Ll6
zUOk`dj}$#Scc0{l^I!C~di%3cGk<ql-w{azxu2Y8*A%|LZpO1)AwRMAs`+jlM_=u2
zZ*I7sQmfgr{q9=TBhLx%ulZaLAM*Xi)mR?K?e%qli9xxKeMRde-{apr*wMoO09+W1
zeA<W)^hbMV`ClRLtDf1Sn~yg%{{VNKP<M03p?<Tf`fvH5k5d#%`}+H_dL#1p#rns^
zdXsB^b>-27l#JOU$OoJUMYX0WxFwrin9|J!o*UwTN6CgxnFZV%-O2qRWDVfd4t)Nv
z_t<oky~w>6pY_y%Hwz^dHss80EYKz=ZKio9<(QBowoIG!`!o|hchS$!8Xw`m=ch!y
z_uA?I0Jo<7+5Z5D+J2ILd-MGBLH;wDkJQarb3NT${`Kj4@UDlC*XQ-0C4c)LPj#Vh
zHXqeLHHc?<X6Mw+`KIl$^zro3gmSW<vix1a#FJ_Tg=d9pnVCX}T?a#8VL<q4BT~)m
zv<$iahq?=GlG_$to5UwZ$82>u)-Z<;ARCw=Mfq$Lw~lMhl6IA0%0aZ;+B^mmm+rey
zB8v%G?3OW+Bna-}&&e}Hcy=-=-L&pwI}rD#6xroTK7z+Sjs|?Xhs{eOU#B$<`-uX8
z&6Ed0OD$KJc7oY9CKUiC>)3R2jf-(fH|`!S<|9!ci^h9e;LGLWyHy|MvAHV+lUB=o
zO(<e_iC|jPOw^Et$3ws~7n+lIF+OM|9+@SQ9BWQ$_^|TBk{UAw66JtBF{%ZhDxxKx
zdpA@I-Y+rY#`)FcW`wRrzzr$-NZ@6k+KV>|&xgB`K0{|AVOG5mO{gNga*+i98V9I}
ziYT#(gMNAJ@<@sj(#wxANU_oWgPTj`rCYNHx*`Y*!&RsH08<5Gxn0<>e1~CPXOEY#
zh)O%7gi08W{3DzjiJ=03@fPmz1U@PW(;Ey-u)KMq7}{q!w=%4V(V{`b6mjNbr|PFG
z{-KK1ji{+hC8(5-Af+0GMY4x}3L!>B8BJ404(j>fdIXroIo+3J)VwzGvAQV9D7*8-
zInOV)tT%$^EXu2Hu`~KQ<5zUy<UE-CivIv=PutpLI5a^76)YkBUbzT4jXG7CidhY&
zr1iKezVl3?EtEugTnlmCmx0Z;gv-dXAmhu&u>@z3O$g20tis$#4Hz?_g-g>WMsc;%
zWmT$jaE_wL^DeMgJOoZGlC(IdWWwm6<7J|jsU8ke0*v4x{lIkD(PhvM7R+IhQnf7o
z02yA(ibm)+I$$K?R5u1F!X)7^t)+5wz`q`=VJ^|eOHNLe0RcOKep8a7f=%7UOIE@M
zQ%W?9Y?mK_0YG&*7QLvR2+x`k4q%Q7#O7{(Y9T{9d{}bWi|}ZXHva%zS(pPo&1Nfj
zQRqmB(Y;&I?e}asC0oH$I(d=L1?wv^ofCn~wb?PGj;3iDW6}gW45uJEaB=dqkSFfM
zP)V5+=s;fd+^S^M;x6Zi^O_0LplSoiF^_a{-tj793*PH!;_AEAOF+HeEGWPoYtwQj
zXPb^`zq=W(9Ek)-xSAM)xc>l*^1o(@-KD#U0{rih(4$E%t;@C`#jNV}{=MV&1I!L-
zFquppe}Ve1VYJrz*Qy@fmf?0MMiNbv28o4QMore~#JPbKF{p}YY=ojX;>6Me{8A6Z
z7(D1y15c;{!-Z-a5(rs|mtGCvJ~s6pf-~TSjMG7U5QxqBBxO*>HS;RtV~Ykf^eRM~
z;a)qL&$7$<iK_@P=9)W$I7k@x$EswuaWC25s-H|d?ibAYwdx7Y&J@BDB{K0e%4)8o
zm4*i}T?CLTi?k6j?ao<r4kgdE!qb5^aA=SamIoqlI7j7?6oJlcZJEb_8>Ys}{iAQ~
z{)xh6P0yecnIaazp{HYJA$}<QpnEggtwf8u^)~FE06}Q*DFq&K*w0pl<xLqR0HBiQ
zUB{W?^jBEzpfex?%LDdD1o?dPePf<SVg&c$3@G<}xmO{fa&dB+pIx~qLi6Kzx4XM7
z%}RsCraiFVSfx+&8%bfD3cqSuE4A}0S(>_)v@mPE9dmrnP&V+&(o0SPAlR-b!jeBa
z4V^&p3cpB|@%U@UL1!FTrOkl9M`1C<{{YrBW7Q8^P`EtZwdl6oZ<nr%{?&lsQq1TO
z;kFH|Tbo5i#hT1o))XcL;^HzhbYY2Nw^3^ozS!)UN~O~R0EWv3oMTFj0?XCIZ^+u1
zIo~<iUhQm(Ayf<i{zg{->X7pG0Tw)N$bv;5g*X00mySbC!1>4n<(H`kF;c7T;Va-)
z79b2%fXmmbmSFy9ow2YRn$LYkhyu+EN|A^VK(HNAGzL|EEun6xF#iB`w&DzG*KtGv
z4AQyZCB`q61a5w3Zth`*oc$rS{`)ja7;rCP;v}2_O_sNtZw!et<8C=w=MSOcm<$<Q
zeC_}{5ooAEYr^FTSwk0!9Mj@7VIub)tx60`WlXJ)j%p16J}`yZ7QAAWgCsI>)nb!?
z5xNM?inEJ&=9bX4Ac)ab?1yjj)m+W%F)8HT)VtHA`~HUhn~EYrHk0ys{8s{7PRO(4
z%bIW-{{UMi$NpCm-wZJbu*_IH(80wG7+IY10~#|$UcoV7_{+vf5@1o?%)kH`%?n94
z5?}yoI?FE7Y*>*l#)f`Xd`3{V$+6;+kg@OrV6z|cj|h@x>Eq@Oa}LXp1_0R>xRz`&
zLI*?uGCTRA5K$yHq62~#>h5`=^TSgBBBY`QnLv<r9Janq@+^7runY`jAgqbOB?al3
ztexC$e}80xI+q0(fRiA=Pl9Nz9Apr&hFKXKOE6-$=8R0+HkfQ!qE$jr!NHWduyO`t
z$l}c;H7Xzy@4sN88-&X{Cx+#ZB@(?TOp*Zz4*vjCBArlRfhi4?5QKv)`Jg(UY!ikv
zVYUH?3=WHiNjS`_y^B&Xs1tOpi6o(i>C$@wU_fFECJ>N7Bo1sSh6Yj=xi2U~7lvZ2
zgZ}mW#~7$Ck>2J=3h^UQfq|3NP#fLAOrsHEf#5CgARuKFFu{^2*e5+E!X^xiGa_iH
zKraC!HxkGpAnHY{@HN332xTS+tq{BlktJ~^nHVrET4VJe$VQu&e>d~zR5>_DPn;DM
z1;3epBdYs&9=^DmaOM6w-`kpr$M^l(s9o64=k2JE-_#VpJ}b57I<~7R{{U-#&S|#p
zH}-!bDHcDjw6$3r{Qk99b-%~lV!y`Jr{eQiEL_R`^TVr&4o~7Q7Wk}}U=M$DX==Y@
z{D-f+)@bAGPrS28n(3Tvf7Yv{(a|gU_I`(){q0sz@9F;lF-J4~#2a}N;)U>dPxum<
zHp@G&R2mu2@AW{0mFFoxh_9hD+lD?XK>q+|`2PUq1iT!Z{hYbTWU5QV%#M%tK?WHp
zRpayT;}%*|P)v`=zK!{?jUT^MPj$ml-+pvWeedC{@mfAN_-p5yned-Ka~1S`<u?n;
zr278={$y8yEN}PyuZ8^mi;oqdDtRy8-J26XX?yVNOaB0o_>uBy4TMMe9DYC3M|B_!
z0CCE8)bmR}6l4%p&De|qDHIw-d2)<jm1hqjg4K{Env^&VqiX|8=-%rLF=yp-Qb$pK
zEbKSfggp@nWZtQ@#CRtZiT?l+=4Z}G1h<Mz*7m|0uOe+7-zD>ZxdFMGQo>tq%Gq6)
z>6485dZK^K;6in|%T}+~bQ|$!DW3rl)qsR_fbb~>-hs0WXa`@k(E}WU3MkAC96MfB
zKy3wo7u^QeUkHQ)M}9R>BR&I&%7A<uiU7owB5)HlA|EP<QY7e%-p|Nl=7YR1)>GMz
z*p)>I!3j;kIluVmUUI3~tatJiK26CHm@gX=E@m1fQ|;ay>zoQngBS+Je_Jb{4)8jp
zBJ9fWZWssjE822=&?T)SCJ6K&5tS8tHLJn!WoW8cWASj}>=|Ems&5nWD}`21A#cJ_
z;s8(&V-*U9tSAYD{{XRsY1{L~kggaFmhXk=nCB%{g!foI>VL+s7McbRW!VI8Il+7*
zy$k!uQHC!_o?TRvAuX3<byJ{a&fQLZ;8oCsWp}xRoRI{IJq=U(`oz+BM+98_K)xsg
zeP=<%!T$hLF&H)3hm$jd%`KTb6ku6+1>EDZ`tdM?XPk9eTpV)3MZpjU=qk}HozU!-
zf<hHK7QdWNdk?{s$U6P$%60XIleZFBACiOdG(~3zSlr3H&&7=qzddHqT7c=_EJRTZ
zzO!6Fa`hgW(K*P$iC!kM=q52B;}*!`S|lSV#Nsb$@{96iW>nV<xZG$XQUwL*B(6Ey
zz!kHYoK~w@d72UjCS4#g2z?O^Ie_Ug<G8XG1CMR-Qe9=1H#lwyU)uoj!j|mL*|n*7
z0{N4GOF8J>3a~HhW5-6@#Wml8w!_GS)^SLpI}he;aBOaz-B|5#v7B=Y%MiSl0v^o4
zU6!(IErh)&&wl6eP%=q_7d9>g(2K>`!2=<EBIlM<1`|00=F{G4LmUsxz651$#Rsli
z@u!cjhI6V3nlL^@yBz}OE!-lTa}GR&V~xPxFC$5DAcV8D*U8HqA#z0qR;}J09|Gq=
z(mUcJe7tfZ4zEDir2~852#gOk$&M1TlmoT_9aCtMWvRhV22t!4kc8!4I0)vs5cGQp
zR<(j88VH$>8$lf~?;^eko#bXcu&TrmsEbRuX8gixpLFHS0svmqk<f09^spt6hR>f$
zg`5xvT^cjF+I3KZlLQEim^{BC$aUSOh?WFw@CX?u(d=JYmcV?lC|M-{L<}wDp#sDm
znk)vfW+@O_f!gw>svoO2Fc?OfKLO8)21T>(jEjuMN7{+=N%OpSwn4|4uBZ@9=kSTd
zh@s7mk;w5yQ2ziFO}Yt4QxraHC?_Ex?{fI=hBEom&+&E^g&f~o_*XoLy$!|Je;!Vc
z5kz*CQ|v)p+y2v|M#LwdxngWhNi#AA{{SCgHnBoVOvx8uNP0~GRpg))jy_k5x@!5z
z>Bc?@YO;tv`jE+!xQkpXXp%Nxtbm{9hD(Iwd0bHYwJW=^wLS`LD2O!)LgdM@Io!az
zrVdd=dz^0fP7F56p_zOJCiU}?JNpAWywJKxB9W74=4Z(<<ERgv!Ad+!P~Avuz0P-J
zIG|i}?E=auWnH+)GU2ev;*jIa#ic;51V+$bTfk+grPs^=Env(7?4*dqcbdSHmJQvt
zB~T?v^nkd9*|>DU%FIBI88cv`vOhlst!EKGHh>!Jw<ZFFT>k)QH9)lRTN4!fR3-{u
z{yX`XTwrUYo;Ubaq7r{*2w62*3^{IwJY}0i(LdWcDO<O8XoqJd^0;&Pv!Zb{!o!kf
zWRpdvgp+Z4<9l_8X3>m`1pbv<LSN{U>&7PLzRrg8mZ3od6h>pP$->pxdEot9T^SPp
z0Pf<8ryV#tr~W}ADt(OZu16qT-z!XG_&~y;<V2@SlZ_b9z=`HT6v0Q2JuJ=UN3vJS
z>AjnOqR4&6?t5{hO5_ksR=HSz5^c^we%9mZ+r<)$a$h;+`#QZ0nTK@TEp7SCn%IA2
ze9Z~hh32aV@8X1T=MaCb?c$&U)c)LxlH-`6;8D1PtCz}&uiA?6z|(d(iWf-_w?{}|
zvTDUxrYY!}EJ`k;uWns#;e0^lpvpg4TN};jZ-geaY$-K!jRfSGchVu<NK7*2ie14L
zavJLJ8nRn7Osq(3;~a?iWzYZ^Pxu~&FY1>&L}lcsJ#CK02ok*nGH}!@5kilH=B@xc
zGccXtQFXp411HpC7*j(Nw+l)$As}m!#mzmW8=ECD0D*1hB~$HqPWS|OCy}Zj?>8u*
z#oG}qOH8i|J`T;~8_sOq?Oq=Qu>rVbkvR#<BFAB#X6MnsqUFyh7P3GEERZ(53S9~W
z6Lv}v;VaMvLO3WxH+Gz|NM;aukYBL7+BTO5%O$0)gAH7nx5StZS_>$4`H~R3YITM4
z9%n_1qfC|Y7tr$j?&7U>2}W7$Ed}uz^2Lx$8DR-z;7YBf@ri)IWUQUaHzxKBoGp~Q
z0JgyHiiZ*MH}2k1nY~4g5C;>mq3l5eE_ta7Wuvs`hHwwiZO%aJ>+ppGb(T<EYy~Wf
zi4jnsx~^JXH`s!3VF&CPFGNcq6KDWjGb@0Ii9mUh>5kR@J{1(VwOZc?kGB5+gFoT^
z*W1PKh;Q9?Ov4ij(}$}}Ef4E4>m=Hnhx~py>x$Cb=k%t(;64}Dty&BI?dOfE@(z`L
zKUlO>pnGHQ0;FFQeE5ti`xpAx(~qpJ%>7E6>OK<vX0X1#KHmNXE{o?luhW*fw?_w>
z{{W}N?mvnu!Q*#9RynbU-1pUa9!2!6t(w?>y&o3*-SW56yWg72mf)BJ?@B0!Q{7_b
zCx~|<n3I*HU>WF-R?A;o-{AY2*uKv8et)i<Kt&gW9b0*oQ4(n?0Sj0-)SQ?_yzci}
zKKiB)k+7BAM4bw_VMKw0XZG%}R7LLo6FK>%d9x2<7zmP!L@6XuCNc8qZ9GdbJrql1
z>t8FKg>yhFzwZA4m5Wmg8BRa*HsuPl`{new&D^APLx4eXgqWHIfI+a}?1D*79J2(G
zNp;%fa_<?zuHUcR{{TLQKK}rEfP+s_*HmXTC7J4OI+?{X6WiktS)yRJGf2q}NPLr)
z?~5Kp{{WL?P7Nx@I!G{$oDm{|B1#(wWI2^RiNzNJ8jOiIb>(E0NF^{R{{UN=7>dgw
zXKXA#XA&(#?QpCSI4c7b9H_#|MC^2tx)H9qP+xuDQaLgMI{5`1zdBW_y@@fyN90&h
zn%6G0ND_*jVGj`T1!7P=r4WEI;QTc7B5t7CvDI^!ph@!+%bXQ1EK7{*v{Ob*;F3_e
zh<q$X3Ct8SE&P`W^+dMXK#133$|6PWTkY_W#J*S(^+g!)`a6xsN0uEn_Hqw4HUU+Y
z<jIao7mSw`4MvV;fhjwOm|CDNm&tgX=q>RwF9vT~!2~Sk^GNeQzCafBH;T2dDMe^6
z3MU9bqPb=18Nmh2@rvKvy1>XYIf$e-aFLy$DV*NIlVs^0#Nql$+x9?wy9JG{1yBZl
z6&S~006Y4iC*{N8Q4Kf}Ov<0VMo8j%4kHL6V&XL1Jmx`9AiZg_kt@+=0g*&S0ywq*
z0KrQDnjw4B*oY?g79CP1D;exd@Z-&V=$X(WILMnCL|JEJK9QotHmH(NkG29Hx08ab
zgEM81v^%xziZG%=@_>#%9!M3+L7}5HXKZ2uqNIS^%YW3!*(#kKK{}4hfp@Fqg|j}8
zj*52317aB2P5>k60dlB=8)~zum;z+(&Vv5o;8Z4E&_-0;rc*c`n?~CplL!sLKOK`4
zA|yXFg`ubgnUe%eQ5o8ec${;18Y?%~xGco{MMnhI$gl1R!U~31RNG5FCuU*pN*F|W
zBJc5!R<XSS7bznC2s30^G9Y?P3P(2^;3g>SWt#>x+he$)P0!sQKRoPEg1Oy7P3{gL
ztnPyn)wSVhGRAQ=lJ65Z4ml*8NMzC=RLQ=)G7tMnd~lRxNaAO~Xw!FCMZ9OnJUTw0
zmtPY4GwSB@V}kiCEP@@PfPg`4VgLz+&BMOcH}Hpm-v0my_^?ey0!bf`KHNgG!kyR|
zMkm1sGDoH?*=s793WD{#^=EnDNjl69{;zWijQK`<8gjn?vqjGBw!sK9s=O51pb;W%
zb)a!~&GE|&_cSLSiU^Fw30k(fACpf*glHY<OAa`gwT6rsIX7P6C$H+wj<IvRxV_zY
z5C{XAA@YOqE-pz;>R>1_{{USHE{i9>YGv-;eF=~UPI$vAT*S=5pazLDg=YC5?hw9A
z{TMoz0K=Wtot`e5p1Md-DMIy4f!M)p(ZdJ^7@Vza44j8v<A-_uzzD+?_@9#U9(>PH
zQDxyID_dq~$fQN(;G1~-yHI4P0qa|(_hDmbp#tkaegOg=F96~fivH!`6z~l`acJR?
zoAi5i3|Zy<fMd3x-~t2o+5%@{ZPB1iN*QaYgpF?02tlN3dX>StVH=Q;=@v0(lD{!T
z2HtyxBp3@BxD-jEVfKJe0B4tqbbkVVWyRkW1gqp=hqKRDG(jV%uk#myt|^0+5wOj`
zY+#nix~CkAi2iI_jX-1oP(6r6-54!sc{)?5u;G*VG;uHT74bOC2)nST-{MyYegUC*
zR6+SXlPJ%hIhY3wD9{V*GwCLML^_1{k4TePsTlHwg~G&yY^Vc|p{s|=N%jk7LDu+f
z?&kE%#)T|laGZ;LhZY`zBeOGNDVy_rc9#p;Q6fZ}<cBCoE(+@;0)t!HH+uvMbiwCD
zTHdBDc-YiB(T}?@N-@!(Jp=a^oEp%hsa~IlaN&tNs|x51E7=*sn^4Fgi5%7^gljLh
z4RBjGVY&W5K>O!vH9`-C23U(|w@x#hQFDY0`WsR$I)rAfBuxaFM769YWRQg<DN>dq
ziT3kE${U@1g7ArSZi5e%H^i_C1X39c?(D2!L}?6~#uGs~0T#Y<nueofOa}1*!$O!=
z+D~(2{9bDGz=uC_uePcR?-Y54<_R1c1}3NUH>BqDHVa_s=eDj@49r)dTZ5l81jPk2
z=Yoe=#R4x71uUB#SxlB$9x4|!ByF7DBs&l}+{!s1TiQdw(3OqnCgMifQmLmPbdh#%
zf-ROr0wD<QfEyi;<K~FZ@F>GkmB_sb9$_)8XC7k)vj+l8wEmpEnFS9ae-b0WU<Q0d
zFZ<9U+c{TZ3<Q}-i4!sunuKcrXiQrqorIt!10?SR5*F~oK-~>fJTjh1SuoK?1k?a=
zNhD0Olnt#Ib3o<z0`uqTC{$09Hf;c=Nw!Z{BNh`lCjui82sOz7WuKKihyY2O3(XkP
z)h<^v0f(r^DrAYkvM`D$%7CWnw%qm<WDHtF0B{-%^mk*n3xeVeuyIz$-;?Rh>g3RH
zmI+sZ$eF@MkURw8V~>z=HzZSd2>1qIM=(<z%?QN*0Ja7H0B|ft3t<dN*_)h<2Ck^_
zH)N8`=n2Uh2K5>7hyZFhd6N-xJSsm9$3%ggVG5fxY=|KtfJwN!AsCe20~NTE{2Yr~
zjbj2sB2VUF!{pS+^OOhV5)qIByt@M>A;6FW^F6Y-%OtPvc(h=-F2iOEaXUHyK!Q+&
zNRPoZp*^TI9SJ;5p_ENW8w52sa8n30iU<f%n#^H0IWhnQ2m!mA1R@By!Mtcb@dOe`
zIPSBNp6_x>EmNOBz_=hGfGr>iAnJxNEQ_P)1`$diBeeqr0hHvsL_>00v@ReX#voCQ
zL5dB=Sh#p12tXDZkpMz7_3PJ`-E`ispZof(5e)s_N$!dI=3lw*HG$(V*K>a;R|CGj
z<%87HAG;r~#wFA@b-!Oa_{=ZwkNfT{tLXO=_a1(S*87)xQ>Wv<)&9`sSN^vV^Ia2b
z@#p#7f6KJ<ZsI1sh{xW2*Vduj+w*GVsb4?$n&^8)@%Z{{?0v_!yw?k}o?*M-@l4C-
z`gi{T5mWq$zCQV`OW%J4{;&BP)6Q~3ucl1-Kdbl<DC-p~ST5H9a%oUPDcEJkx|V2w
zzGLzz+O(t8Frkt%G8GK~Q%*&}AecP@eN!dr3MLmTHa*(ZfXCxqDX;<TnQDrytipeY
zmYuIcT~r6_$4~)e>?XmRt+9@Ty2)b)^jV%SWC9dK(lD>m3c5ClxuufblNbdaaBv5)
zD-EOED;Ekesv-!*M34d*7ct;MQ+gy9H5q{z03<eo6H!+S8-SQtfpZ&20MQGE%03VT
zV$MbtM2-W$Z4JS@M@Hg`2nJ*r2Ly|BZlWDDY(KDE{xkrPJSO<(AK1NE(pd3nk8D?b
zc##Ht8Ee=wD0E-+05y4@?%(kmszLyq5MmfaN(!qi;cyd+nW!dA1Q-`Td&sHCLC*Qy
z!dbI0D36=+ZAg@WHF~Acw^znVrS!sL*65aE2>jR?R=B3`Lgivb;)}pPlPfpqTSi`^
zgVv_rz-`i&GQf0U6A23jtpaK@Rq7xG5L%5u8VCw!TRX>*rd4R9I^6?!rx*yNMOzX1
ziXeMli*kNVHiq)GHg#}~pR*DWatip1gI4~BAVdOd5i2Qla0W~RCZ&#NkdHe>?j}_!
zvpL{z;7rjv>1Zc0K%e-k^uUn~tYjF11fP{e09}6OAZ9MQiY3I1c}22zb1J39wZAY~
z)W0HtJll5d<alO@bPkmE8O6FH(v?=^oS^Bh>nbpjJP0)WDwOttxy4a#$s49l+1mdA
zerLsPy*7=`1QZ#?@&Qv0EWsX~$&q4-4oRu>jhpD=pnQ;09Y=OvSiO0KTz+J7gqbPT
zz{W<n7^BxlDmiVmxWp`pmN=^x8CFZR_TWT`Kt^(J(&FR(b#A&MaD01i^o#WT#%^=J
zJ3t}w<d6pl#@MX-egkCMWC?0E>5lK}5~gtIB#^Jh&PfZA1i~{&41;U3C*Jj-6ChQv
z?r+pgQ1c8|n*tSylCL!r_;|4Z-Wo7fSxR{Dk~p9`bP>n4GS24tHto^f;p@d?=nU8r
zXkp4VMA!&=M3O5NCrE5^jYmBaF0dnCzV3L52v|Qpt(Sfz&}Pa<g3+v$-sm?1$l(%9
z_sz(Z8YYy)<OXk$pc)!<>)vCSyoGR$NV>P{qIG+Vt4Pce<R)6)k(vhUMHkRyMj)0u
z0E&sBLP23#cd)S&sM1@pPvMS5Zs*AeusAU!X20l-iWW7DP$u^>;1857`l86BoyyB=
zpE!6B+|;!?JB0(Q@RXPc8?KpdEs7hMGPxwQsmC~@DgAJqm2g@7iYBvJfHg1f^&s|<
z*XJf(?JBy&pTmf~i8fS{IXH1}LNWXl;X7E2JU{zE<_(EluOOCJZIS5NKExG>k$Zw~
zU!eSJVJ9UY74>&dzK!YR(sk(=OSwfj%A!t7R1WA%CKn6Ha+cOkI%8pIZlW-Xx;&0d
zr$QbYbuG>~gO=GPksKXoToy^@CslwvgP;MokpRXk2(riGZ7$tn#ND+YVqhJV3l6CS
zPp6qPK!GaAE5c_&0%f9$9tLh|eFxpZ)Cc_slN*@9=@;h<jwyp=E-N%y&P?c;{A68&
zBUU}t%AK}k!LzTDpg54@0!Hy^=ph8n5!bkv*<x{8tTIlcj(b@mj0?fG3>R^n<kU1_
zAd7|o+V^-j7rM__ojDm>bts0#mf<Oj?12+liXWAj#}mM{OL($9DJ*p}d>L~1$tsaf
z8!%M>(oXI-j0|RZK~c7~{{W9&%L?;fAj`OvCD?e7D4CowmJZ<^xF*K=>?%-jJYqsV
z)C&Iq5nh&a$G7-s{sIf`eN<G*W3Qb4c(n*j@PQ9+JRMP4a_z!%-~6BeeQDFse)%*a
z;|hd?W3RuO!7woY00$u5f(sJ^WnYVPujOQ9IG#zKf;R76Cvf<E0>&LiFt$sQpXY{B
ziWzurhSSoVrGkVh-)_;3RoR=-;7fle%RT`Iak#Es2^#<=)ooKH`*(S*SLVP{g`j}>
zrOqy;(KQRHo``4Ff*1_LquKd?+D_1UH5Ne$l1DRGg36Lxiv`cEB!q<~G4mMRUflgh
zmk;m;vcc>#_L1i5$PDge0%cC`eoP874^bTO@t49q)<te5Y85@gO_`!g>R;NGo<>Dz
z1^(5|{7(o`V?UENvWg{}D>hnN95*lz2R0@urutl9euHsK#J-fP-LXb#!pk!Z8qP%T
zC`?j>HoZGDL>$IiNE>N8w?;5jj@pbsVA@c2KsyaFbJ*<UGHL*``|0O1uBh5}LAj}N
zHetsEO^R_QxaOom411NGe6X_6!Tjt~uoP_I<F;|bqY`I3mje9F{uKN~R|}D8fvjO#
zyveP61TO$o5j@U+w>S2}GPZx_dyT?4EpO#<qdI$_Q9N803OFv}FNy_?DA;UpnIyza
zK_H9;9EX8s6||fH01U(;hVWg+M4Rh06^+kK*furCR5un#6-AXG66eNwuI_UMu#w4-
zEoOj$xoiyT3h>K%W{(RLf!;eNar;J}l;`lLB69Y~kO4U7Hi>A&Lb)bXGsQjIc>yaW
zC@AHS0KLFc0mwmqs05}tSk|HbpapAqdM_Px6uOjw1}a)$!wt&`Cf_j-Ztf6DArMH4
zmVj~uAX-`o&7NIdx!w=*QMPBAvWHn@8-hue1eC+wF@Z~xM8<4;AF9ZNTnvO1BPfua
z)y6^sFPpG33$_E2OC9eeTFFmR$%$2WFR~MG;RFIW08bSVz)Unz8Ab{z%m^(8DV;!Y
zhz)uL#ZyFtGbn6q*u>!X1UlC))?Nw5^QBGwSSS%Cp%4r7$1omP7nNqfC;>pKrb_^M
z01P{^AUYaU0Dq&CmgQ6oqyXf~?m+59BSeedf<#gnz!?A#GyVo-O#&ncr--!x7Jvpe
zxiE?YV<OT+vE5n1DP6KPc5RG?WT$MY*Bw+Y1p=~FIFbqxmw?pEhk*=2r-(q7Fb^6j
zucDjtZ`w|CUqt>1IOA5N9@(xXGM7Bo472l(1Ll$T{qh`xCahO+%bq-E=Dx14&)ihM
z-+OPJ99Bm^2L9fe+w4}KfAYKzvHrc^y3qZ7G4?CzjDJ9~UhC@P>m_efNe}h+U$lYv
z_WW$kaDVHRwdxgr!P_HWLd|5i`)~YBev89v4f-xAJSH!8e)V7Uds=@TxU2(z_xOL>
z(cSY;Fg}Q#qQ|Fi-II8~1F!hK^Gm+CIPb?)8qI5-0~d_(np}h%V+0<jM&|C25Nc7d
z<|TJOf(aD+_{IE~<%@{tCzLh|TtX~%XB24_))#Z$OPPs6MGFemfKmGw4=$~gy^$kA
z<&%t=RA1!tqa!3B+B?zJbHEVOz_ozFZ!FSF20(zE1K}nE%dyHKknR!4z$a08QXDci
z8Q;0Ny{Lt91=bMk4$XlIqqiw;21)oWkOHTS3W^|vu`pU(m>E=Nh?E*YYDg|8lE;v)
z3IIr8CfFC(UMt%Dywynm0KemR{{UzcIk2cNGGmTtiOY+?CyTSaAccfW0;81?!2{KR
zt?-yI3f+gi-l|r~wo5FgXzJZp7tKV??1eVYJraI9N+7IjY2zfzikY;E`QJ&kDzN_m
z5l@>fKY;89;wex)s`YRZL@*;6tGJVxlgPx3I8v#Ul7TVX%y*(-p;Km_Du&+#O{zkt
zwrTNj;>-;PXw%=ArE}>(ly;Q9-GED?Ss1O<?Ryf;ShY?CK(*E6NZE1)7cwW2wTI6%
z1XdZ%GBZGsds>^T!2=>#V$W=$QlH0D{_*oP2`$G#>2KZWD*Tiskzea~Ko96|@I)^M
zbzkWb{=K4*O3})TWF9}@I0j!|hMc2uF%vqi%rx1^oSe`Ma)K<Fos%P~$)=y|U+GH1
z+sdHEmniv<$e%8WE7@dL`f>>yyod%QmF~6+J^&e(kkG5tVSo)=xR6gfZRXa%cqV~2
zz(+=-kvbVt+mTDI{yym5R}+GA^C4&>RuaWTz2V3J6JeSVe)n&g&I{tyMN$b{p#82)
z^n^die}hs*pv+U8gWhn7j}dN_An(wh)a|My{{UNo0Q^yp#b`iL$**B^v=>*|E8g*G
z<Z<v!yD+fn3i6!s7F4vS%5gBfZ-Z#8s+>|hjaP7;7#M2^!#da=O)9xWbGzjSMz4_;
zn3i^Ai&*F#k`QTXaEK$TI9*MABO**lQL=udh_7gIkWRPkgd##g#X$<t^xT>-Qx&E#
zz<ER~9*M!RHw2Oy%m-z_&0$VsL|^UDgOYQ~9s?T;KyWWZfeo5?!K;24q0<k0<(Mq5
zpf!q=rG<vbe$gj)z{4Zv*UiYI4T#Z;phyry+nO^iVgOM9XW`0+UOW{$4t&QKVy7x%
zcDe#9nNd)Cfy*Yq5G{?3jRradfpI2_HUY|~QXzyZA<ME4vj$^Ms}M$NB78ak!NWuD
z*yQR(6OL-1hu;>{CuyU)L_}YzEv2~cm4m;IsbVcm7FVw5jSwkYNbM%KeC`C&N?`pO
ze{I$q{{RI(%R`x<0Z0*)@i&a-*rVifbpAeC^HvoL%!o{W#K$zjewZRW^zDpY^akQd
zGWmsk8=Y|sY_&(DWHw7<6~Qb$pt~JTFAka7iJI9N%lLFq6p!rd)4`1pW$I`Z+M!hZ
zjD*3wx+%qASg^w6j^$B+?S7VU){wJwfTj?~kJClm6kvqwp9ne#=Rxz1q=`+W3==?9
zoXv<5MEOhrE^`!gy<H2YN#C4<GzI%lh>o)ae9#JXpr(s9=gV;r9#DaxB!q>2tMfpZ
zU+24Fxva8j35qP<M%-@kYP3X%12diBn-i^QAft?Y_G<8JnfJ_it)KLh<tfJ85H1rj
zd{c_$W?{fi?{3KBjy|U6IlbvNZfP)A2<yQ$*=I0>oc{nUZfL@?>E%6?FUtn?8<Cb?
zYgkJFTq0@j^q*mHGn=-ehqa@d*!WQpE!Qu=p>YvXWy7+dB3F1X8B(<}uOXHR@K3@s
zKh{AIYfXbLFfDU4d(m=Ti(~tv?MW<s$lDh(p_`EuYB2%=gkKk343GsZ7JLvM>N7{(
z*dZu3EzF2`5G44XmKot-Qp`=1lb;EX%?1>o4Awlv$aVo`fQ+vN#My9(Q5-TjNBoOT
zPXbU>TiP*lj%e|p?9{fwT3Asfo|&TYxDDCh_+ujpSvf%T$ODA_HrTV2w`ig5A7=zd
zP-MceG!$MsIKM7`?W|s0;+=Z~NP`u?n8=&<W0NIJARt3=9qh2g462M`VH~7|n4DMx
zP8`o<7g_qY1k9}N2+Dru`k?-n4l%)XpQ@fh?V<paKy1G-LGy+^#T>vG$zls&ApFMT
z)G!DegiGNq(9Rb4q;o7z8?`t`OyJf<z!wVi*yzMrj}d&E$)?E~F_Xbg4jFMAEZ(aH
zSvd?%5T-52tqEQO(Nh+QgTJl6b?YB8i7Lw9%7ZSP(e9*o4>g>+N3d&B34oqSG+)uE
zxdQ%;mj|jD8~ZYsanjQ!D}ZxEwC`Y8eq<(hKwbpT39CBLN8sO&B3E=oHt-JXO=154
zCa)QNO@zmZ^+YQzmM`}YsGwpUwUQo5Cz$g^jt!x}RDwVX4;Z5}#N6`0GvuKG?7uJ3
zHh~E0tfoMP+C=vYI3=4q@!tFW^k{qlCU_k~{{XTTLJKWSMlMcrMU$uE0g)Ci3_b`J
zJ7MOeNbLcfL}L>rQUj$^kiLg;n;Gld<dN_63=7bl4q@c^!y+AJh4CT-V3IIS>)fX5
zc*b_vy&F8pj+Z$pdcjcvJ=qD|WVk0tPHZamKJf4c@Plat04C%#VZa_tOx}J$Se>Fv
z>9aZSQBfYQiGw9s%#o1gYgnWJc;esz!X&g^>kC7WT5<rl3P4AAA<9{J<OC!-w>sFg
zJ1Ecu%HpkT6Sx2Y0;dd-er*EEB4UN*4<Y4Et5;_YVHFI>AOVEwJ<Np`x1b1u)>&|v
zB4TjLa}tI7BZf=lLNj3QBoYji9S<ixvOtsovn-TZQ$pegtD&Awj&w6Jj5<Q|&~!B=
zY0^MI0Er3+(kQ+va&=<T5dvu-T@dD_vyBVrrsx)j0lrP(5rG9V9!|+-3)XoNED_0*
zQ*tAWP2^4SC~ROv&@GD1gDaE)2I<J|e003Nmyl%+MMjRBn<>&}WO%^}q)CTKVVQ5#
zd^&48-><>*N40LBsz2o1Gr;}}@howQlU4rcc)ei%05A73sm#+H`|H29gGe0y+sA*$
zTMX0mq@Trq0Ydw)n(}Su>+aooFTaWZ04uZWG%eT7cAt;){{TK~i;;QH;%TQmX!ZK)
z2yMsD&(JCdo&Cq#x`EX3zkgMHpFere!=#w~?kD~nRhIt%o&NxF=4{K~{ekt@BJq9s
z@}B5>Q_RV`A6IUQP=%O-o?Hib1!f%4oD7vVYdO7%;9>J0eAJP7ZScN&i4~4V&|u<K
z#=*5&#TH`ra-pn6#%Lk9;(i#Bf7P8h2-#BgB0))7s43JLIP)DC1nZ1l(EE!hu#B&Q
z6qvh^0zmn!O0w*;MOcnh4qF815t~qqQ*DG$Q=Aex9wbR~3l{*J0NwiFLIiPoC$d)E
zpi4HQm<Yy9z(`zo2$ORJAbxpEUcQRuaQ*Gri1S1u1Qr-s;}<}LGR-t6FF;E7iyNU|
zR^P)uZN+G^)A}E6Ux_B}f74PYk3N6M=el2mC;?kQcPx>_Q@SD~IJQW4Na+XyO&Es+
zND3l=iS@t~W*(6mAj?4|i~`xOJfa<xkC7#G>y3Hqko-3x;8Vb?nt!WM;s^sdA4V4h
zy0!L2PzeQr-%YYlin!ef4T|VOZ_x=$%$_4bHy5(a8j~-U=Q4}xZOsJOanL<k{V))y
zFMUDJ7&@VrODIGV6)-rjAS96Fo6qS_t9di}8BeGJi=c)4$2|GS*d$XTkPqBy`SK7l
z_S}%;Kiacno@p0CbHs^bLj$|;1&#-QiU_e>$+?O3t5cmzmgHc$Lb%Nncwir}@1HJ&
z@3|fEaqu-@VjyuL&cL|>d&Nr}{9T|n9rcCCfkbh*a3?rU+n~QomExZsT_DE-0-xlK
zU<T^)dy!BMKN2BRf9feVM&}aj#V05sqbS7M?@E&2o;&yIK->|HS;@yA(&C{YnB5O+
zOt3FV96l8>atGs7GQQSL1d}7JI~KTxMqlc3?N+vyO)Qy`SVfJNldB`$UGjs(PzGpW
z9AI9+9BEA_d?Qs#f#N1(F1b%!)9zh`k5z(+J>+3|7Z$v-F;0d3#KjH6NtBX<A_h&j
zz!Vmz95xCi-*=)alsLt!V*3MV-G%I1B}j`wvMnrDJpvrUelEq3pocO%bn2{6;;f7*
z+-e?TdnuAaJYT=}J>uq)4)=F@0{kI46hkbSWFjIghc?5ceuU2&acfDb9KIk3waMcX
z6jKh?>`mXv1v)YOL@l(FWcCdJpv+Z-PD!ocUx$jgtv}_H{{S;<2<$JF2V=8x20<}N
zEEk<cgO9|sKn1k@Bsty`M2Mguo!ClBA!q>;vtZF8_(Y$Msf<I&p&iyChyr*HA`etY
zV4xfG^ADUUzWQQwAq&G+%@#2^NQa}yJ_w)#TdDcVTR-Nwso;}lo#1#1fEH*d@a0HY
zK4};6Obin?EE3)zB2T~Zc5h%TP-2ErtXL>PseaJ3gz;7Oy~)wJdaPH6)Jm6;$uKoU
zX}=}0fe!ObiP$3L*Jf8Ze2RDYWsBtm?Ta52cX~rmLT#hk%?|FB{tz3tf*{lO=7q1r
za>uJ1l;@7F2DQKlqm=cdmLaiYv4jOpZ;Y8Z{rjMJhnNi`$vD7OVPWMQlj01L<xw1K
zb#7b(cGi?N7>FaL@dXT}CSSrj6#bOkm^4OXTuFXC$w-n#8OJ=pTv$2(0FglfNPOaS
z-N}d)Q8UIIFa2DInq+oge6uciBUD*AC~QbFVRM_&0nk6ob7q8OquzkU%MMEjl?X;H
z5Me}^g>H~q;8sDrlvROmRm9P!2*1b00y+}!()WIJZp=r*PoGR?5c}K6*}<jSb%rfA
zCqow_TVRpn56f=7uNG7YFg>5#p?*1}P`W3#TKStgm!_{#2Uv>^`X%KT4=V(;k!-6_
z461;Q!?eK2u%hBTW82Fk+cdV_Z=Qz8gJTj|ZSxT-V_;YV1j{?6?S4G$jNIEDGYF8`
zBYV54A{=q-xDg&RNsiy(0GjE&3Z0EcIb<dU>VMflu1w|V9E;PmTaQ@3j(Xh!fPp|t
zPQ0Q~?xMd<DA0ZR26-U|vNq>xTCk#(EV&WAehlbQ3|5fa0CBc6L1e+JzDKVE2)vP2
zeUZVDy9+4D?a+XnNJEoDokTK6$tB~6;krr(WS;Br2oFStH@2nKfDnnB(J&@RDY>9?
z$FCc+mv{NCVf^HncENCn3V?74iom=Um*RsXtmhbx(dC;_E3u;P_`S&HtTa`Re*WAM
zIyl9drs8gXr`03Mqo3#jr>W7Yyh1H(JFc7E3S<M;wIse}=88Ji4O|H}6Y9D2zJV?Y
zSDjiZ9u@TE_6SL)$g?U%1GONY7&m6T1SV);6L=yF;F?f@ANNxxK5Hx_2=&Wk&*o@m
z<|wjLkeg-Ls!S>59ty@}c_xUEvigkZY3{E70NGk5ZtFd??>CI^CMImUE~bq^8GKQ>
ze&|4bP%z(eNNzf|Yd*Jku<JCV2@o1u@9HVAA6q9jRz+u;M2HJU*6ly?^g;+S>7v&4
zl2)St23_Gv0ay;qWR}L?A?^p}1H_R}+MQ*Dn!U2igq&c;$q_Sm)u|OxpNmb4q8m`C
zW})Pg4jz-v9W%)bjGG8cNPzGdG%=&TUd`WVA(U2NgC+4b<OE9h!74L(YH(W9;hLg?
z#P!<9M4uW|M@WE>Ns)4kn7DGHx)LalfA`x4iU-Al6q~V9k_`jbf?WfVGd2Rqq23K%
z(X>m%lQ>ifc^s1#Ce7J^NRp$7X{1&eSPwuTRw{M*D9GRhjB=pJWYk(FS!-m$b|f)n
zl$kLwEbbTU)3$3E)_xSIwOKVx@)8)CM+G^WDY;>Q8$})Lw~U&7Kmzsv3&Cugi6N?d
zsPqH|>`Rk|Ztg#_C~`4@iI6!!5`01ll5$H&qhzLsglI@u04I=0$VDn=2-&tt3KgQj
z%(^Jw>oW>U5QrzV0}v9KBK#D*ri@cGO$BT~c@khOKmv;y$WA~okqs`PiqjJ;Cdo16
zI7L8e{)~V_2+#r>Fz_%cWjli$l5XsWWz7Qr01`hwTRAc(aseHgaZhq!FKQUzDacyP
zT2-dwGepRhJ9ZA*DTt76MK=?SSS2lG3Rxm(>R}}y2}%&rQHm%|SU|HEIM{J%ru-d0
z(qr8)H>`3+d&X-ZZCm;L@2f86{{V9C-{!a-_(zT{Uk1(}&&=29e-q6a+sgX)da)k`
z_54vb=WmzK3&nqcZ~5;!uh=!-L7%3i8|{qu`uwWof7f5UVwrXG*!_>)e22U4c>>iX
zPB{7Xi`G*9{{Y|ixGuYImFHWaey)CE-P23Q?XP?DS6%u)<@H^=#r}S}Ogd%@Tg|U?
zq74IQZP6c93tc^686}6#7D=d#oJcq53q1r0t;-uS(J{eUB;0I<0uY)70?WHAo~$SW
zvrmJxom>LVz?umVL~P7lk^xM4BZ_cHK)|?tiMGs!Q5dr%Q6b7C3@l)&fk9}%jA)6A
zL6S9K`PFf{02lXQ5G{&wqBKPN01MkZX0ZY<I$zKL2wsL}U1#D50hc5Z6BAakD|-Q(
z@T7uZIg|<lT-znV5&#*Vq#*KF-5-eed@I)@`LUTidoy2e8P+j4^-zDmc#rXUi<WNt
z+}2LFf3N+o#WVZm))gI>_dch}H8%eMpIq3VSg7hE%GuEh<CYZz%L%M?Q=I^^NpyAu
z@(31Dx8#)4Y>h!SqA`}af-zTv#g4PkT0Gd$UQ~0j+afOPD$Oz2g;3Ze1%$%sz^nfN
z%((6b4A*PJBDc#Tu)<+n$I;5O7n$7LKQk9tT9uA*>fD&|x_f*k?7}eiLb;`f{XX@K
z898%Agl(w+C(t|FiXaH43w3lLdUvmcA(z&s4@C}$-bdMIGyCBcP<}0DPVF(BBS7@t
z>GnDDiHZSDEp@hZ?V&UZ=HGdC;lJ?QC0P8)&wy8N6@yTmg*p;>97No`B8gyq&S;~D
zMVQEE;a&|A*!D#rgl#-*nqf_xwpVa|eH3yx9$Ir((6R=JuVaZuv>NY?RmKMybvaMn
zqGl)k3?glcm1cFXSY5W1x@cDL48{+hk_`;^g>VTGE#mvIqbN_XiaQWwBp!E44DKy!
zlRVptRmb*F8<xHh-RL1&ufWDbIO1(V3-)ftybF7yatEK74p_QJp8?|zTMtRv*tT7b
z*fQ)8T&nPu#QI)tGdZSm*zMMzm0%DkMvSsvaP{M+Lh8U*J*F(p>?>n^nV1F4$!1xT
zMv@u!C;5HNl@x$j)pL6OUnE!Pv0{_SO#D)E25sj6qRbsU(Z0+f!q0<`no*&d5M8`W
z=7PPc$t@h0yRk>YtExAUr4Gl6$(2;i&9Z~Cy@fzKA|l(a-b(D!N<>D;L^;Kr73`Tm
zHgQ-;0R(seHY+2!?mP(+fnSwVS-d#)U?I@_37`^eVbibxs|E0nc%tr;Y0JTw!lmBM
z<*=yWmONu7YzAKz#lSDO?*UIO<WUx8PApgmfvCP&Z{0+bep}HONK)BBn@6&OgWjy@
z#4Q>jft{0^8h$U=D^5}7r1V>UptB>Oi8E8l%S=Fl6fFU9d^$E+sfG@d!q#sOWMO@N
zSie*TF2WXu3h*G!(Zv9@gKcezF4K9sbU~WGf-TWFS2Xlv1LGnDEHcyE4-ji3hj8`s
zS7`R|sD@Yq@TdcwB#{e*Y8~}V3v)-3Gz?-DvqZdh$-CZK5_LrfjIF+J&gIY|5Tvp4
z@pi_|ADf0FkCV>m1jn|~VOSs#q5GikZuUCBjKlLmupmdRK)35^DlhnfFAzoNq0VX;
zt+#ER!8cS0dcG%ND+9{BWr_J>9B&aGfCn|GH8dGOe8|Bj^(@7hK3WVU2{-{YaS40u
zkQx98zAsHJf8ARB@+b(qM3cN{$)sdWWT-P996~K&UTX$Sl;?STtSY-V`CgrrY^&WB
zgOV_QCQZR2NIEcW!G;l@*rPxDm_ERiXPpWGtQXGqd0R@sc&;{9`A^PjR5^ga=h4ox
zz@qH+=ZBm_6Kz(9DqY<sOR$JjQoa*2-IgXfwRj{#t8FB?)&i(0UwaRK=Jynjruh-e
z)f16OP`mb*W95MDy%-;@{n-VpVCo1oP@R6FPvkxZsD^zWVp`c)OKTPUe!dL%V71X{
zXckP^can?HCyQIIKO7$|1A};)GjLlQ0$m>{(AGtx_0?#c$<xEbS}dLt_Y=9idusK3
zCc_YvM>#%cHG?_dh>&hx$b##ZO=aKI*gB9#B=^PUe2M`N{_|GZz=}&2EtRJ^4!{{{
z2I3a##-tzJ7Honc3Wy1x2SZ#G#BkXz_O$t?%GmYD+d#i6);+#Nr{ONn;L#y6SpDE|
za*3EdX#D~ffq_KeUd*}h4YPD}D>7yU0rmyEiX<$#+GLE*3Y;3lT(^A$YA0GaYj(?v
z$>1PPOb?<AMf!!R)XTZ;Y+~ASshch`aT_ey6RH}o22_YE6`u4chmr>5c8jb}VTvU&
zB=;}Gbwe|g<i<ZYekmAH^XExnWG3@nL3w&8tQmk)>3Y1)=O*^gHky$v*Dn741?MP3
zXhLW|)gwK&%#Xp};)7i#OcW8EQ`RlzIi&emeDh7t3IjnAo5#yk1~XXq_9jz`!mWGY
zK$6x*6eI(Oa<OnknIxDJtW7&$00)9tS;RhZNHYK+f|bG&dkCH=q#(fzskt|w5UCLp
zqdwpj4kt)Z!1>^8mx1v4d#)|J8yT=m7KU_^pCA#M*(9MMWW)?XrnM=C@eii$QfDK~
zNHvOv8CksqNH9}oWBN$h#>6DIbD(Aj2HMF2*r5_8OoS}07R22UkWJ25AVFg=V;zd4
z;cBU25QFK>1sJy+9P@eO%^bsuBN6QZMUfaSx<iV=CNhkbm|(n66o>#2uMr!|HeiF0
z*>SBY$To$b1!5!`O#Dc;=p=JW5DQd77ep7kUMaXBQi};h+1O)o4y_2Fupky<1<Hw0
zHMOLJBe}!%z@a)Zh~1Yd+bar~05~jy7eI1Tet<rv47Ls>izHfadMR_+x-k>TiNzC<
zh&Y3lB!Fx|5>q5uh%?k328dvw4WQUISUl~(1}*?76Lc(hk&&8!X%miPBlu9xhFLBH
zK|#P)6VVV9$za+^PQVmyX)ifAfU-s;$m<s(11w?9fD%07@QZ$JvB3`FdCww_?=6y&
zL=z)xG7VS+f{zD$fwRflf?&ka_?8S$4H*ij5xDjmH(6+#*n&_XtP>N+cjj_<bj^?W
z{OyLE22c$MiOLo-4I>EGg6F^OBOzHGBYOKa_1#E+$GMOCro4~W_swAMx6iKrCcj1f
z{r<Ck9e`o*Pu<OU-}f+c@wlcs-}%QwV!z<OPmXnmNc->4-R7rn+IwDNzbEE@$^QUj
zn#$jQAHe0SPalj|<lp(p6I%u1eSI6R*`Iu0yy4f<aeufNqQ)+~{r4uU(6=8{3q`u3
zXyDL4ADXzI*}kLcicEgMmHX@UK}Z`R74|1wNSKoZp??NPDR6FKatoz^<;BJqWf2!b
zHUJ4*NQ{{x8msKY_Q6L;*`1?HkUIzhOVDiLA#E)fPs(36SiLUWrvCr}4?z<HCW9qr
z?jOehN6Qsr#|k@aN)s~yvMM|5cGd4Qq&ZeGmH=d=HbP8V9NV#EY)rz)mJk<EFCY*J
zXMY$1Sj@EI_ZxVLjvR>ahHNZoAD;m{0%znHt2dlvXcz+-Eg3eo0e!cDZ?h4w_wnQG
zTE7LCd-lrXs)=#0_WM6KbEiLVKR0#gzmLD^b-?Z&f40VW1m`atk@vZw?XWoA&M(tH
z6c{6{?1TbY05gZyC;|%5q@Nj#xsWRb10(=GN==Ym8Zs6m2PfM&&6b30c-P%AU`!B4
zHnK$oBp|iqn3VDUZloj*<K<8?dz%N0?Tx7s94ov^1dsSd1_xf(ly0N{05r+A{j*c_
zJky$F5#A>X(q-)TLkqtx+kE9Nkt%^C1h1Y!ekgceQ`hsGP_q5epuv=j)+XR(sU!j{
zf=Gf$pb2<LY)j;A>`g%N#U3^t+w-a-%bpBu4(9Kw@DSrs%$KYIKc-?V$B_!<Gentt
z(!7M*Fzf<ih*xHz5{<NYGXPU=F`wkIS&dqW9yiO9P0+wg;S8x3%39CS=8IdaJBfMb
zGc!h!?mGx++$C_$NImAPqE};C09e;Vr_qu4uuEkH+Idmqbnym}UUT#uX&u%1_XXjz
zgCv;vqrrnb`!;fMl7_36>73{Sau1<RG2F7wZLGok%;$H&p#EjYsvQDyZ0`3#_7!d>
z9uX1;TN!z!kb%vE$svDXc*LH<B)l!bR^3ARo0A+Jz&ZH`FCzvo#YLwAq|i`YdeTZE
z5*@*-r@b9Vc!lAWME(K8Jsj=_R0Y<~?D1%nW}T@BV$f4?X<x_!X{%Pu4oq9{?8v5p
z7l@b^OUgLj!A_d0GfqJ#T-Hg5y2e0!;fR1h-9NtCn;$N|IjH2}vv09PUwvDSZGd$(
zc@=EUox06h9I1Ka%$Nw_v?>!i`IKw}3!6JF(Iz=RI+*K$Ga7M;OtJvPoAY{U5e-Di
zN<w_&F<`}4eB15-TJ8X$*La7N&I@wyNQ!#zn;1ksX%-30w`dFO7ZrG3yxWANuQkrl
z<&5^@G1v%eR{1<~zBVY-;hKwc0{zlIn&@SAEj&>OLI)UFn3jdDu|NYDQpA8C;df-+
z5sn``$!;e90J<=GDePRJi~;LMmh`jBd2<-P+KZzTPX&*j;*9Tr`QhKkZ8|W{)bf<@
zgfRn^Ne;95d2)<J7mMyT$w$upIt1D!$7z*dJ%kNdq^j*PvJzqe;?;1}ZIL8<{VMt2
zy<_0Rfr<zXjU3?Tnt}47n=H+8QDcsWCX#6K3n<!r+Mp@fdj4f_$|U462ai;DI(Bj*
zLZC@s&8#t!{&ulb0XmXplLQ!jlb3*9_X&$0M0qp`Koxt$x%dmw1A_}F{{Wo(4)qIB
z;KY2OjBPkA%6~VExRu4;Dj^;Hcn8|}6%5KJ(rn(iayh6Emg^R0=l=jrCH9$K9d8}d
zPRaGje><9Unr=RFe%Q4}nSm#=0Yes?U=a?D(!GWn#;-gUZi7n?*$Ger{{RdSu}G8V
z-&K2?8>%u@%VM?F?C)l1Mw$o!4JO%xHaNMsB&OfEQ+Zw()l6WoW6mz*OKRcimdV8Q
zh0S9DB`3jWR(x)P^y#^nck|9cmzdKtUOgv|?ysLY@cJOwg$QYyx%xhgxe`tVu3N|=
z$|aIFlo!-<+X)L~NlFMDXCs|9k!jSWz@kPd>OrGICP68r12)TqN9Vn7KqM5|?#pN9
z(gHLOMR}wzS7xnbYw46=)-#h$p+vSQ2)4aq1TIufUw`p5m~z=Ms`?f@0^`k@pbbaJ
zZO06bWN__SZ7>dJdH2F}OJxkLQwH|%a7&x@-{r<aidV=;HqZhkmp2LCt!E5J3$CMB
ziog)FW1P*jHARo$!g$&u>Oz(&5lzMVJf!<BX|zT(iL}C*{=Zk)qDzmq2nm3Mgqu88
z&pgr>#iyI*C*@HZZES9Fo)H+rt;!sDzCc$k_-6BM2bKk1kGW%uPvm%@IY+9p8eK2p
z(2|rQ!UH=o&B&Tj$QSsR<z5^IL=!+uauweo_!TAH$WG5@#KRSatSyv2w#b=xva27F
z5$;DoQ7`rKSV4qh2UYbHaVb4vx|6SnU|L29=JiX-Y5dXfQ6S9((7PmZqDZ{;4-`U7
z@LvqzeB@PwI%UaN7G`YBh|Pi77#uSb8FwO~Y=!J5&6Far0a`@?58%avNe*^%Lo>=w
zBj6ymUCwEZ?7sQqe~h5A20lC-tzwtBh`f1D<q$Q3#TowqF2sjJIXj~h71%e7V@C4a
zgG7MrIe{(iP2d3LfHm@aC0Dj7BFF*=0EER+vTk4!;Y!(pAWHSQQObl#40VF}j#53!
z68`}0D8=?c_FX5)2sO-*wHA!3!d3?KY&1hmqb%i2=~Dv9gfm*OoQr74rkDeWEuocs
zT1o`hfm4E`VIo%IAVqqc3K~GU{WFJbc%ktCf__GXiUhgo&4k&Wp%PY2Z(#4h?A_Us
z0?LOV2!*Cv3}Wt#OQc+zNCA>f**E#fq!sy?0l}7l5%>tRlQys$WdScnXhaairD-%g
z{F<_=4xTS6Bhet(@Jm@Clu*0^T7<hKV|FCRAOjDOUQ9rg3SSb;0A|e=V9>NooOjGH
z<O}92zuJQj8hE^l0%*jNNVx?A-v!8Kg-ljjvoR=!cOXC_Noaw_7>{EBRS@{Xh)keU
zPbFQ_K206`D}wneBpPP^<=KPLnSor%>my*v4hbuq(rKTuh9hunZbV9@A%a0Sk1!R9
zVd+i8atv%fSq}vay27kwH)tau80sPoUy{4J=m=f35TSigY|~*y5CLHD3MggG&I2l1
z`Vm5qgE&ph75INcb}1bD(tkJ<(snrV$QJ&*1db}jeVN9sN>AaB9DXgt1^S=%;{EQ$
z^AA58@MgXX_ldrD4xv7CogUMcBA7n?_nxm6{2sZ-`}+Fi8puL^s?p8-e)Cr^t{Yaq
z{%D}aNUGY=w=|2I{7<qhF<-VlIeaY4)W4>PpZ0usSaqe^B>Lyu^<GQ-w)wcyuhm$U
z(7*R|(funX7agNtSFB`aP3a)^{c-zMgXVA1H`?_&?g-*Pv%l!9jxKNcMaFL`BWNCz
znzP}>w8dc8I}-t+lnTG9Fa-9DoB&*|hA#k$@OA6P57S3RwEq79e--c`2j`ZL&g(00
zF1%wpHU9u(_pbi{;4_ZjfA2J$UsU~podD?;7uMm|26%pZ{CC28+k`#-4NfCp=$yI-
ztMn^>c#8TEwqkhY2Ub7FIGLP%FY;68VnCBHuEhh>a^wx5V`yn&j+2Wrjs1V@;kW^6
z?+3~GaDyo>f!W!MgEN+eMPVs8*g%qs31y19uHd9$0ticxQ3Bh)nll%tLlzDwv}lGU
zA$8HUhoe2u%WBX`iSdzYvNX~BEipcjuG(7`wFC-Ah+F|69L)}u(RVo}Oo`7Zels;I
zli?y$7_w(IBl5?O3vv4<4-A(tv&|cN;l7jSC}*coB!daQqZW%~QKo(Ujs&@oIz{G$
z&e^KT0Rh&m%VH~(MI_eB0Eh6a`c)*S=0sWntVxHPWd6r8C{{5!luv31wx)+-kgjgu
z_k&EUIz~hh_U0+>o%m|NisWg}+dlnI2n_N3L+*|u+iJ&whBcEx4PnYPer)NW-F8jw
z9KibMAGkoC<M9|I(5!LNn`a%0AUk&`UFV;KD(YfL$Dk1(xH<;Qd%d&7P{BzfUrgx%
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
MCF^5{j$^w2+0|c@GXMYp

diff --git a/app/src/main/res/drawable-xhdpi/ic_splash.png b/app/src/main/res/drawable-xhdpi/ic_splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..e28b16a1e83087f7179d1bc8060e54ba24df4be0
GIT binary patch
literal 18337
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

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable-xxhdpi/ic_splash.png b/app/src/main/res/drawable-xxhdpi/ic_splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..f84ad44e0e7b8486d8bbbf63f3aafb4f4c0c869f
GIT binary patch
literal 31338
zcmYJa1yCH{(>1(k7I!DW;uhRJiv)KK?j*PccM0z9?hb+A0fGk)?(VKZzxn;2dh4TV
zi`to;xifwH_U%6BbhxtOCp2VYWDp31CL=AO3If4U{PzJPf<PeLpc;SRAG|YEMjZ_N
zd4tWufbU2S(mKu{5cT1I9~foo{RiM6k&C3Zi<-TKi<_~NImpe;jpd7-wX><QgE@=6
zlV#?a5HScu0g{pUsP3M1lI`ZLJG(fT>pZUC;PN4sJ}8YD901?TRw)*_U@t>t>p*0l
zJPk$K{h&PZ6@oh==doz-56wTBO(N1vvkRC8S>R&B24MaQ#~H2vU?}63efgSiJe=}=
zxxUJJ-&d5}k6E|j%=GwR-!l7};^Oj<giC&cD)i99dw{U-$1iUw0&$<!caP5Ec%+79
z&1~K<#O<g%KR&#sg@#U7MfOKNVW$OvV_6kVF%A6(5MMfDJnlch`|pB@ISdC(=riuc
z`q+?j1{<nGa_5^*1E172PSq&56qtT0&EKxfM}t7|(vQdeAds`f(m3f0QY@=%A*rFi
z6kWeT3pD?WcFwDSl34?6A|C#7^Hg=q8bOY**Fcl9bSCwv6WYK}d@R)<%nBO9c~~)c
zsv^rA$}r3X&X!6qy>2*=7<dy_3>)N+Vhj?Ca_mw8*Q>D2jq|S`wAp!48vm%$zRcxD
z!DkM$>}O(9*9rIvKZH{XgOtcBU5E-iz`GX|MIN(}Fomwkh34oS@2mdHM7sGuvs||L
zDMjV*+vSA$U%>h0;QR`#x^AUl%=gf++Ez?M&hhTOq?&r><3{`L)rZ`F*WKi58X7w&
zYE)u5^mxH8T@=w!Z<s3<VZ+Qn^C-@13S9W&|4go5&ixEu$0P|(3Dsw_%{8*c+1A31
zI;f!Z90{Qq1kf<efqzZ||NKZtKj%1Qz3I7)ap!hi^rF}W(Bs`Fct*ssN|F60ps=6%
ze!xXxb?||2UazstY2C+djS~~~j0&rPq{rPbSa}z`EHqt2U;Jha?JzG^wfDR1Z}ZD`
zlI@f7cLAs36amw~k1<R@6}yF^{EvY}01b_vI1=LTB5kgN-*z>Uc?*ZJ@&c+Z*iuf9
z^I;!Yh69lqdvzl2XVtn8dCkZc8+aZT`*r*F<L%RVdPuLX#RHGkOOSUpS$klHFxXt0
zw{O_$Gq5AQBPOY_FB41(1|5az3by4XP2bZOPq-GV){+UnJ!6>EyLsfh?RZHU^bq95
zBiy#Fin~z83tw!}*{|qgAd=w92*5&`Ts`F9lYk*zuJk?w(zFD;&lfA^aJW>4VNzg2
ze_5s60yq$6WPhFQ@<FoStFvNJn`c)E{h(=7X=>kOeGH~awfNyoxcbqhY0T?ww>LYZ
zXcs6s#<w%uT_`5kZ#S996^HIsT`h^6D!3$N@XrUF@qhEp$0B#Oa-+i6==?jC4t#%j
z<5{ml%HSVhxt{X^CxoF@iAo|$!q<OHV^9%;L?OYX$e<#dlt&QAVPHX2wft`%hRDyI
zOI`a;fmWp2A%X(q-voJ^R7&pnuw2Zn7vEA?e0<tv5~)h9Bb;ENR(kwsw+u0u1!GQG
z-#?qww_^xy_)qxMmfbwSHhJ8D8}avo>9Uv81J|DK;httg`%tK51hBpBEt@C^O{2pl
zw&qsdL|=6@UZf-_vCdGYF1Ar7CmD_|f19uidEMpjO!&R7b~yZegoRG#>~c+8UT^4m
zC&|;|>$^;$#lCKnN4{5>k(h}hS|KRd1m>Y<ru2gO=T5@L@Td2;*AWpB2;h8%|E_c2
z%<?nM*eiI-^?j_-tySC)f5fCT3`PuK6@x2Hz4%*e5dC2kie{OWpZzwIn?s6<$odhi
zz*rhDQY;C^YP5Yy5fyzrC}^)~XW2!W+S^2#EMfR_ZC3HQUK@2H)2-pLef{NX!HCVB
zVZi-!E9woAM=<7Cx%yFxB!;ldK3vO+$+!Km=ZZz63xqQJN8FsnMhqIab)SAE@6Ai#
z(URq9YXwf~a)qa7e+1rQQi_T;A$h|vDjNKp^`{^fzYPu8y1abIeQUFim3AGwO^|rr
zX;4BR?|)YxbBA)b{8Yr-x2d^SbPVf>63+@11_p^UPzb)Q)Y^9U7V^Crwm#k)&u}ef
z9vuvLbGv4U$x9OXu{Fxdn)4RqJiilMRv&M9etzi@Ip{~_I`cuqV{@)G)sRf!HH>N;
zqwJ^^oG+&H;f4qg3{frlvgW?7rljw8JgY_b1RnLqf;IF9A$O9&Pg%MByq)WOQX=F%
z(~P=o-sPIKbm`@PYwPTMIXU;<-$`xn%nutPP1-}jdVp2mxHTI+nrHc}?tCHgq*qNp
zQoivP?ahNDdzfg?!<~J7jiVG5(r28*viw8|U$@)U>PeHn|J#HwJ!+$*WYAApU*Crl
zYE{|r`GB(o6WT<J9WJ*&E_~Hv#5R!niE`yWv{@d8@#uEtb|Xmlv}-%2MJD0qrQ!2F
zXGwmN$lLfJd9Le7tY60(@Iz)8#wrKNLcZhMj;FINacgVqb1|?2bFPPoE;2N%IVL8i
z@#uJ;_3$o~xRJ6+5@{->L9m@-Cqim)+lV<-Nw1FLVRCieP*+FC<NXm?*Z#JeDkc;!
zKrGL=CotEhFoxuQNsG1XKt7!V;YZWSI}no-22)`;)j-OH+#Pc3)+L|8<C3+YLS<z;
z0Towi)!aXuDTi^<x8~yAzd?ml_btEUY^qQ&M|>p;Rd6Hw9XPOia)q8w_<M{lWI@U!
zHo37FApdN6TGmy^LGl%1)B$&D?9FIhX=xr!OWFLh*wCzp=aUs@@!Svko?2{#&o~cT
z+uQH|0?xWxp~1TDH(s2o$-~Q=XvG!5LDhodoN5|X{~(8l)|#W;VAjsxXd%4yT~EXy
z6y<W5j!BD5^lgYr%N7Z;sEw0ncNs3_*lC;>P2$>MvuJuv89$^CY&L+Iw>d$<m;(dR
zBohmT`J2O^`;0uEh6l31(KIk4&nzfd5+s*d+NfINISK}?_iJ)YjEpP+^|$RYd|9RU
zYRC|=u(Mm%U{G+|TN5}x5F;1Tr&j(~qY+)?A;Uq7KrZ#Dkkn{14LiTS4%+7TJrohO
z-bL#gLs5XiVb^1Sm3H(B$-HUo8VvDgM@&*Rih|iE<=g*72nT_87)OD(WTOZMnPxpP
z%U~Nt1z^GkV*;lJOu5nch4^BwFU)z@+~>C4R?U4>v<5jod0%vVkNOHBK8021T6cc2
zZJ8Yxy!iDA3|VKYbR`Q?&3JOq=cVJ@rDl?9U?%XsI}BBQoUk<Tx&4VUA=2(swHqSU
z2*Sh4y?m&rtIe(-Jy}#TiLy+dZR4N{2FWt;#lXdEgNj{#<)H4bY-P2m3~Xgx{@fPG
zuG#*L08KG%mw}<6cTL9>LIO!^z_o3VGDN7S-`Nz&vhXF)V5d-*OU3UJM_uwo)$_z1
zQw58q>;}eu5YF0$dO!Bi<vt($B-ek?;9C)}kg#g%s*vp8|1p2IP+3!B#}2jf)~RN~
zNm8w|^~wvJG0)gbE&1Y;E?v@fcyOZE?kj%WV$a+8b{hHST@42Uwer2dgYks0dVe0^
zpp2u;Ct`v@Vnc`L=R7S2v1gt8n#=OlnZ)JM@+cutHExZZf{G(`sC0L2I`e2AJ#twE
zasu`3+jqi3FoehZ_OxY?^xI_mc?=#FaWw2-Id6{SnsZ6Y_(3dae#2+pKrrN&>uS~k
z+dzaUdLC!8ywA!M(OcP%&eNHeOp(W%fd1GjaY7V_I59$$;J9B4cp%V_RPT5gDl~n9
z5Cw$OW`F-vD&PU$$q*&}waO_bI0K)0+?+aCEYKMqN&#`^I`<bJc<*}<;7k`o(yeB$
zovWY!Mev43me5og7lBJ*d8>m85{wnuzjyv)zTW=t9I;JP<fN6?F7j{7@d!L>qVNqr
zU_UV49*p%fljE<Sbk(n8MqwUhJlb^_pLhG+p7Nu`-p2F3Pid`vx7MvjD(S*Izy7r8
z!idr_`1HoMQrCvrCcJ8L2c8bepZ(A+z<C@Kex}8l@;CqV&y@Bt?il!eX$L%{aV$&R
z$_lY8XX@aDE+vzPB=TIg+YO()HLvFfN3Wx{E|P(t^Fvfo?0|VIDgp~^h&qd*;Km<6
zZWlW5Mb38r3x*RpV^WpiXj&LXMv?R9)5}82_>3oz*oRWbVp<Xdos`+pnawQ06my@2
z=KAfi7SZRj%K_2#NB)9fQz+j+%`cWso?cjET_de6LSthSIZT-?uxWq-B_;%RJLwno
z2exo(ES>ru>UiDB#iyr0&d@gd?;K<p;`v68Pg(50JrJ;?Amc>X0ZoME>OFc6)ao&O
z$@PqUTO55^qhXw(AF&R0Ok>i&Ex^1Z<#Js42^ZM2!2$*Izbz4(g5hCxWz#GMO-|{~
z|84)9fHy7F3YLll;c*d;hxa>lG$eT6JYNsas%xymfSmk9g)-`GNmR>mf7a+;_&|b9
zKhG^2`ptCQ%srj^lpl7+wqp(iVvf8|bqKEel`tAk<w(iD@>?5IcTXo@h5>mHiIOcI
zo;LJX0yPLET}n+YgAW4P774!y>#%75(N^*NV0XsXIfw16&jkY_to#T9CAEcVOf_Mu
zMDWc3^K^+R4jI67)o0cQvCsCyjAIodTOjvmjc9{oaMO(ksG0dbtuOnXSE%{A{0T^G
z$#9P&L-xTi)w{ruPT9>OjNZf?Tm4yoP0&v2_+Yx)2`#KNcI4{dkQB}>8O#+ZFQN4o
zjOwA1<l8sOuwb?S1nyCod33vOOW8m7-pMbv@BC*+iqjh|*D6k(gGZ|C#Fs)Hqd*yE
z<E*3dGoAuAF*r^=8Ak?NwUinBg}|1`u_uC(S_7{RQ7i!#)(BWXWfd8^zcWf~oj&TO
zXw;S1ERTB&<Ir<s$;0I}M>hoa>k&koa))WQhN(o9*_w_+r7_rd1kf#NB0T&diVT|9
z@G{1@oI1T(>>YzSg2$G*S2KOb%^B_z6qpO|AxYLOBc750Vn$VWr1f`q53I-g<S$}u
zDT2CIf5YPD5z0~@elsx*f0xV2G}P7g!2m@uh-R`QmV62Pl7Z0ren8t=*Xv15iN)u3
z>WR$#XKU$!w7PNgj)Tc)))3ExCvSp@6SE9d0p6YD3xPz6q^4ETo&`)Ceww%Ol&d}n
z#03kIpzJ3&-=bW%KG-LS>{sS;o?(kx$rz1Dwp|XJo6WCcGnX7jPft^eD8u<B^jld{
zDlYA4?{^q~@J{5^<sd2h;rI32`$8F<L0;*EBtcCA2z*A#M+!{B$W0<!>tjCGd8&P3
ztg|DNLIzS2G}yoTr_-(tC-sB-(d35LY*G2ECrPT(#i~X+ny)RAjOJaPU&pjC3~vTS
zyYTIm+7f=JZQtR)*C}K+XY45580w)=ic}CQJK}|<IPE`ZV<B$T8jkq0#h)(OR+kno
zuK!DNPHXQUNs8NgDi(bon{o@i!pEj@iNDS9netmXf$CTeY_1yeG?8WMJ?c*2QVvbC
z2nL#>0@Y-@pU+o8mWu0pbOHWtbUWG4d0&Xt)zzc8Ax@t^e~w*uew|{)#ex|6hl;UY
zdR+H>LSOn?iRAYQj8>LEcFZ<FkuHx9j>YUfj3Qy}xSAtzTXh(HpKA=|Gta_GXWx=u
zQK3I(5NIfIoMm&*WJZyk_t11`$ce5wE?}qQ0;LB{I;WBb55sw!7|pA%Z4>MTGZ07S
zSGAbw;Ey0Dm=d~Y9aHMg*IVoGF-g_XV3o9KJ5u-JMx@JyQOc#YvG5-gl-fK6!C}09
z;j1DKVIP0lp5{UW0!G?l2R>BWdfx6~%1ue&_4ae2R`^;X<&Fl-NcOIpVJ=?oyZhCz
zmDM>?V1!ZImAzj6@9K;im|q<sQQEr8h4;c&LoZ657fYT{dbjdFVZCW`c%io6M;Xmi
zaE$sTOLffp%Aq~!R977tulUCN_*RC;tbTrm0Tjjk^zR$+aHtg6k(@Q;%`=A*B+|sg
zm|KI{k;q?O;OKI`ZH1Qt;pvTV`^*&=3{OFb8WT<$k4f2Tx7tQ^CwTe0#TqS$n|o}-
zBav5#4r+j#2fbV@OH4I<9X+vaUfi3lcgT`rOb%3MOkNJ^=T{owvGab|6FmD_d0BnG
zL^G1c#7V0X!jEi@J)6d`toMzSwwzH52WBmws6%OLv1!BI4(l#&A%hvSsOxvxQbXN)
zWaF>PX^61ejnq(@NctFwvK`Dtnqb-BlkSN%4HVyRM@lUjT$>V6$~0mEI{GRqFnD-)
zRJUF!s1S+4kz^(ek>{#LO?Um^4qCC+MAYNs<I90)fq&iIdIGN(a2Ve2O@#_q25ix5
zjsuMe#TXF$Z+t7=JB|;%$b8JE)^l~*3<{!DG?W2HndPI2>HF}>G-8j9KmSs3cEgEn
z=!Z7mM5xwkLF3PEv%*sR70d(OxQMWLyl|s4zOtq1`f?)bW4zX830(dU5(&}Nv~oYY
zd<QRz_p_X(ikk2K+E~%bU<X6<Ro4Fw@xMJL^R5dS^-R?05TLhQm6Vj&nEz3u+$r8@
zc_N&B^dyZMyd1X7&ddGwe5r&3{l?tlC?4XBK5T}K+Bf7W+{+d<f9|&x&gtj%k33iJ
z_K+Z3&x8fBzc?WeUT^+~x-8cY;`?Y?>hB+I{WWN?tB@gN;YP1#O<y{8leHc)xUJ!<
zw5OceJuDoP!|XnOu7_6XG$H~^OoEvh&zVMMsD#066nj`&c_D_X*G^11+F8~dB9mei
z45l<24`(u2A2|7*`}xXV>*vIuEFP+=iV<cAd;>EIeQ_TBNZBa_3f53q^*laT;l8|Y
zG4Nack}L8)uef-{;<lH`Z?)<@VS!4Mtutr&va6QIVGxE$1^q}z!{=tAh30HlA*0W8
z5$5OJezP=M22XZ#+ry!sIg0-n3nZ&2YNgRyPh5Yaj0c~OAL8DA8)!SYK{#?1WVHke
zk2+hWkD5g|^VEracwo%0@9Ij5!lL7n(8j1qWYj5l8c@a;&EI_PbO<M#_(6wt%(%z_
zCDCgc-?#bX&;eJ+$q;?`^-@q1W4;$_K4HZ0)OHyNx;=6_o8&r-<XwAM7o%{{)cHU{
zndK}^joo^Lk5k}$d&JF~^?JN6G!UY|pjG|{VGKET7d}mOv%zjN{1N~+B6nQ9rw%g<
zOp?&1fI_O7GCm8FpCR2ULPk%9GJ*<=fJ%lIU1c}VX%KCmOw{&hu6qC+0s~Ul2vMfz
z`dVpT@`YvTu6@0;ZmFSco*1u_QVc<tSw!#Z`S8aNjh3Y4y8OwRW0?|F)-|W&Y(MwA
z+tklGIT!R<GYTlN=clLv5R`Zu<Kcek1e#RRhPT&v!<Xl%$cjqFSXfXnJEH#lM~zSW
zDSa_9H3-i8FZ05Z%{Deuu<Db?jUQEt2Hue^*bYPy)kZZNkVD|96J>xM0tEU+X#M8C
zJ5o9RI94o2NRTuXr7~XrhpFsH+2T9j7{-s@&AFW3?a1*xHF_xoC>PoOcMC;X+K6Ck
zMjeS>?E;<zu++4ImZ7iM%Sx-3c`V`-7n+Mcxoax~68v&IZ%BT(ilgXm8Mv)ndjn3M
zDgCqSa|8#|p)x=GKGlHV@qX3KgUnP<O{yIc%@kEYP_U=j76b}&a}|F2erzZ5vgh^o
z2thnz%=@|0UsC}p-uTH;ohK8mhDAQ{b(aMnSOnknv$e0EuZ0swx-L*L4u7O5d_Hd>
z|C780<xz;2mdDl{!cR`2)Z=GhG}D>H#YY|pG}aYbUU<0WHLUeAx!2!UoKtsgKPiW=
zsEDcPf&h67P*+b@h0l<Ab$m&09ScR9Oi+|Xp)aITtwGtp5}C5X<>h@h^r!RdU(2)3
zdm@>HJJv)6aZ1shEj?<Hr>jWO=aVdy95X#-8N4J~J`FC#_a$nxF6meeX$>m-tw?EI
zgPaMtw_zsrgo?CO3+3E(Ig?@U<HDh+!}WF4A=7Jd5^OpytK@!l*XV+J0a(aDku`s-
zlA2eN)aAQVUP{*aRi|BF%d%mBV?SsFA|{zQp8K{<{)U5!IKdDkEKZv)59LUQ_jd_7
z4!1NEx}UgTyG7W|YSSx3#!)v7T!JW~&6okvuTNiJeuhhBhguM1=q?q}6+(~QW8oz@
z1qV|=TW7|ET^}&Y(M*kGdKmm~a4y?vg}p@`9##+z1RwMfjQB~**_R`|!?^wB{;iWB
zVR{!kFL3pA6hMTBs%hoji{$T6i6QVVuCC_dEcIR0r?sUY`0m@Hv-LIe=liTCs|(&|
z^e}C0>+r3N%!uz5bbQhnCCIso<Gpi-h&5r&@9%!^)n}9$$xeVu2k>%vY`Nc#XV!E&
z=(*mOgZyzN14c$hrf?I&Z|fIg@A;0(_D4D$U5lK>R+pJ!D;<Rl6wX@zMGOm`{@lhX
zG>_HdS>JABaTre|uh#SEVd#FoHB?L4E(5o(e5_%rljGW<)lZF(@YmR4xm%<TY3b0X
zGa9>w&6^@1o0tOES)ermAj+xpw#jh}x-@N2uevH!MPrjs0yAYCtzRKh^zOHs{p@+i
zwq?BIb{7+$*84#iNfoI`aK4dbKa8MK?(4#KEH6!SJ+GMDs4u9_<To0T49v*rQ`BI+
zHXf3E{uMcE=Z&vS!Z+fNf}yCzxWFO^U`MPu<`I3_8Wq)bADgvz_^pTdmnN(Ymy~y-
z>~9r_IBHPGm3xcaw&nfz{ak`{f&~I{`vjd_Cip5HxOyvf8&i9LLI5-2V)sxZYRMo$
ze>w!f4nUcGZf9o`in;_W=l+~Sf-7v6$+#(lF_9J1Im`#USv)rEhqaT_1bJEJs&o?d
z6RGgSqnbdFFeyhi{649nlr^u-kVf&I4I(P5zBosH0^mVEf?)tqwVLVmzC?}e@kz}(
z4kf95XjXlv4XT{Yo*^4j#v<@gB$N2CY(I~r%`Slc{R+naEQ07ilREFq2D-ZVe>o~p
zl|hQcoCIV2{S8YPXiolGT4>(4MB_C#e@=<TvDi?h!l{R4DzyDT{#tjvH)!V<>*gB1
zki`$Oo{K6&qbhdkeDq0KbDdWdJgMswl@jlcwOyW^olPEpAspZo72Xd-nQOMGGiRa4
z8Tyf)_c?3^x44Ot%+l1>a~EHBs=U42Ax&L6VW-H9l8QwRUIrb^uc}tO)_yR+^wqi|
z1`bqKRYi)2#{tB%Ma$gx4nto`eY9g<^Wx(Udwp|(bYvLo`@7hGms3iKl%|>;q2@Zk
z;0Pd!xt8WN-<@zemJ?Y4^iL^~A6@lhtU@BobYQq9*T(xc+3de&^!U_T$}4Z6DdgJ0
z#t!x%he#9`gLNrkAs_-(qvgQ2)AIi4?^1=z<;Px&&Cy^;j;JdZgj!?v@5v9l{-t;8
ze%&F(*B`0o$+@t}lv!?;np@M0dX2CCiM~4Oun~4Rz}Ix@q?I6r8vA1gRvUEg9jU!N
zY2B-iGr&1$fOvIxWu^QPP1Cz_ZY)F%y$8@ek~zetthlslFb2d%G=|wy!2a@}9WOf_
zmuH@tQiA|Y%C;JDij5aXS1FEvqRZ#qZyI=)e4{p>-^W)I7vK4}$(<ScDI{=n?-YBT
zEq=M$8Fq{L^@A5>wBZ*UDhPC6xXUylcpZ5CIsl^oG=ye!(gvNxHC2y7sRIBzat*CW
zZnCAFeKqXgKt@BsV~K8KN=Ru?9hfeQ6prb@HqJ1cKwzld^~BQd%?ZKgA95rOWJlDw
zyW63cOt}|eCf0XaA7yQ^U7dmf*1)fbX{~<Q^qL6|t^a^&Gmb#FiVVoaie0;I&-S|!
z%RUxJ@bzUxa<{<#*1E_jrW5}_Ok|uKmeU82mXbnAYonXbCDE}<cXM=f$Cm+A18YKg
z;4r>FiP%ta!j41K`_MSAyAT4Am$i3q{6WrkB%v@RUs7ft6ap|+Eo>Xd3bHFKhK9}H
z=W7kJYtd*TlVlG=cC<RfG@^$pCxn_Qv{f9PkZM~O&2YxEoSzC~wX%H1&sluaVU$zg
z=V$9kKtpmooT7^zyHnW&OZK8^c06#ggOFl+%mi~|7?3O&gwVqzXZU8Z-zr#>#%28M
z#~(u_ldyA`h1v7-?CBbP<>$e<8~3F<>C*oA2M>)Zb=V|fM3{N|1^?~j<ef{=H;+di
zwNjBV%&V$<AUyuwcHGEXe)GM5;bi@}b2a}nN-w9E1!1^)5>r6{y|S74aj{6|Z~zKC
z5shkGmR&AWID@`^uQD#!1T{t+z66X3>bM!PUO#Cb9j~NS3?tp+Ls!A=pP}(o(CBU)
z92aDLUCy*0u*@j2TC^7(vWa5}Cs3cpWCjW{fL!X+XIyk0&pPf{IhAJ^i@<ns?;kNV
z^j=Jk)}u(xcd>NNQ=O#VZ}NJRPl98<+u?5)p`knHHvE&%J_4ZcLMyZV30X5@#d!dH
zgfp}Y+q(a}w^dAD`~0jo&VPDx@+TYROcE3NxYmApSL%=|3#4u_115`w335;dc=}ZL
zn0^yJJoH3M!=G<Pk}6$>f!1g!QT0_17aE2>x9x`6UYn{caij1~`YRtqR=@L0^8bRa
zA72imJL6_z=QqAR1@4RJc0QUw;3vM#c;QK^#JKPMdny3p3cxF6@$WTLL%CMEjNA@>
zcyh;RX(c}DH2$4Y61s#$DVwF$ax;S=PRmRg^VRKVNx2_>#=<!9Z#3-}-r?p-ot^Jq
z9m0&9(L|1=!|A%Y_~+9r$BP*yy12@NV{*Li`X|r@*fJ{qim$us6L2Y9pY&L?)tujL
zej;CO5lA*UYz(@C^WVhim)(Xjhq5+yX0Q0nD3r<(PO$X2hK8J!Wz985yX88J5VbUd
zoDeYSL{Au<qG<eCMMPF{)rXvNlofL5e)pKe?BqPmaGo6<oOs5mX4pF1QezJ+uY1pG
zlxCcsQj^7+hNaNrk|<)(@4uLN`M$brhHT$0xz4}Cgyv-3rM$;ZlP)%R8&0=;ox`o^
zOV|(~or++)>L0YMD_VyW7KWe&n8Q$Lfz&D7uNG<SNnIZ{IccC4$PgjHAm+R;UW&_}
z$4|LlZ$6FcNQawu{+PeVv=0CX>Ho9<CPO(K2(2>jCvx3>(}44rjJpQvHu%t~v5_3~
z+;(ZS^j#H8jro|7YAQ{6wL|m`y}d)l9F@YHiK}{nL#Z@93X9ENXT_<n0}ZFU<?4)X
zNwxE0U=2S}&kadC)xpaLcT^f_X^hl&>XVl?3(Yt8g7#@$V@>6LWCPZyB#T9ja$lZ;
zA_;OIPMB(|EI}-2m|ELe8KAC*2OIQGp?p3N@^C{PF6cM^*Yg9TjW&B=fv|j1m1XMi
z9B3*SYCmb;Kk1Ks-X4zWKtD9T4h+5Jjj`y+{VF$jD|qV7?%uS`KVx;!b-nhkyW=|G
z-JJ4xd1zea<xR}D5BS^v4T1;^65*ajl+xey=W}7!j2F4z^D@S3<MVu$GjZ(TN3aqL
zyGQDxGYi<Q{5N1Kv=#y`Qdo8EZ}zq{ZmVvq-!e)_1yLu2Pk@5JL7$*Yf7$89BlXQO
zeUyL9j(O}G-@ZcJ4KP<_xM7n7uC7(U&dDHK-bbhbqldV`^7Ej9cfLmVtvhLY<=>V8
z73QSk&!^X8%i_<v!&$~GqZpa*aHIQ`0S;+4CB_Y4j3QxvIScRC9GC1j(P7uVcV0?&
zqxW}eUrMyI{p{UqeD>q=he%<HHx{;Ga9;;7mP|{EK$J?lGo$lIzZ<{@<*5@{OH~;h
zNK2~_?_tv0`_Q|qn_aS^BpSxT`+E0~l>_d#2@!oCHZ%9jDjo|r+3ff>v&6Nu2$W^#
z4cv~ayW@Z6B_SOt%O=|4p}FuglcGCYeZA^q$=xjS`oPWoUy%pLjV{-wk%YX-5ug{2
z;`wsg@}>!%N)XkUmxG55_;)YjGGjBycHzK7haUT`$&-8BQ?$`ytj%m8$Bj^iHt`ps
z^SXBPNmlB*dttPrG%qnw=~g!Z+wr!->ejY>^#zfllXXRTdH6e1_8QG4dG4S;7J(e-
zXVU<Er9l3?4@gYpsIhmOTL{fcPg}a_j}bm@+Wmtx@+(d2|7&30Aw=x@&%)&uk3pMk
zHhe%LCO;Fb&HQb@U&~-#g1_`@NS<uSXacv#?l-{MWk1>3?(#Bz&A<6vlr_`Hs`F3_
zta-nB=F!Ar4-Jjjw*4LwHwRR>iF#%(QiI98O6{Ec#+kdu39^)ZQmF>c4!u-g&vAtA
zc6QP88KwTw!BTbH8}Ke&F`n32dAGouz-V)-rQ#NIOSN#1bMx}+pDY3{)YiQG2uarS
z{d=vK`(QCKVLN9uV!MWXt?lKv$5Y<Z4?O090`jGh`Qk(4fYzeM-1|!gZUmV_Y3knO
zXaS`*7FWW;BqU;`=4IB7$0K_}(-?wElK_9uXBxkUS@-`;ul}27LN^@ntMohH*W<h(
z-?JY`1pk9P>$-m2-i_9@?ujNjSFnGa%^Pj|`gJ-{_NAzCVkkk^IyySKpn1+HAcMFB
zF-YF@Q2As@GE%eYN6Q;cvaHA10eY~q(Hi7?mVxczLbJ2aM{x^!*rZk?xD1>~<I=fb
z@5p~BDPtfiEt87N1{f3mB7C~iB4E{{c8+GuD&23=#YY)1Ib<L9T^qFAIaHKAZUYaP
ztkf|BrL+cLDa-r;>v;E$)O;}$=YE10vM}NEKNUJs>?X?WFRWnVD~vO8Tycz^0(P@y
zHRT`Xo9o$rua|_TO7B~YmwA5HFo`_wB(B#!l`P7CH;B?qqpb{!wZsxV-&XTQ7AR(t
zPvnnM2|-$FYwq{m@55km)lbz)(XbOl`9&D}benETMsRjS*({7;JFfVz2U%J1@CXe~
zCtlI!JM?Eo!<D6Yt9$v7JSzfKy0=A7zn^<##o;8=f##IW!R*1lkN1e&eTKCS?xsVU
zo9k>{p01=VExiW+%h>LG$9%H15TGa!PK~Rnsd^3pKtHDG@MAP8Lw`gX32~I30u=yo
zbxM?Z{v&*U!XPspBkrD)5HDN&%k|5A5QeCC@*hc-n+UC?!%6D_RN!^C5!%G-i8$SX
z6>}+@`6XRhelJkuW{7HDSvDHLQSEe5;;6se&G@|>pV@JQ13C)KX!Kze;snqv38JhN
z<xko9%cjE_C8A#EB-C+!ApIRXo@4QJ7*4qTm!FzKM7CfW5fZD^idE-cA0|Pm7uoO5
zgIg#+`7V`NryKB|Z!=uN^AKUz#~ZcE8yA_b?*v>%h*V<fC|v%@44t`Le!j&e6`wHf
z3W|SoDHugnckUb=pSv=cH%O%uqgqrL7_SkAKjf#zrVdp`NKWT#moU;=C$%OuG_rJ@
zC@wc^d5xh|Og52ce><r+9%P#~P!@;#MIm<;bnovpZ2A7}xhOG45*&i~LP`_pj9#ve
ztO-<YXoh~58nSy?0#UA7oo$xxF#qG!IjkKW1#m~z`x{6!m*;HjG^=%-3+Fp1f|W0l
zwqr88`Dy+IAS=i3G=^JOR0wgKu_em}eEH1e>-bt6D~N2KQdsX_%qcnlGC69=6^GJ~
ztG^E;XPHvS{we>&^37+8v*b(l#ZvHWMny&9X&nEK+06#D&I-4G+wp`p@gZI^@>>G+
zm;H~rdXx>VxyekT-6=E*6&E)mnKoOC7@giiif;7y;bBHqZqUcd+PRe^*<ztxgyDvc
z<)D^To@E7E$H$Au9-6{;c!9vg6}Y;Vjm%wsYqan<8bX`l>S?M{^7R-Fscnx^8%3&f
z*=l86e}cK_9~^8inzvwq==TE-ucPSC&tfjxzVS?;R`M@@z9a9{a{Spix!Uxz)^`qr
zNq?d+ka^++eWv#}aeQ>dpigLHE1RFdFe&Ce^VVIRl6%C-8Y4-_sXyKY36a{J9=<$0
zxWAtw3=eboncVU&NUz)>{WGLY0`KmhrQwQAMoH;oAR}x5c^d>}KVgdP;>8&5-v7VV
z%41R!N!ES5rjInRY!f=x7h$_>q%*hQ-LcbK93z+B=aO;jo8hAWuogQ(Pq~l4eb{zz
z7s!~lt$H^q$Lh&#o-x|__x%UC=|A18j`xaxT;pw*7sn4^*o|ODLJZqtENui&zl(GJ
z;3`sOcqs8$wdG<ct5T&cr=9Q=ojiR3e1Y?`bnUzlt2A1hye30pS?}DBrq@|(<Apz`
z7SDCE<lcnM3@}IUeRc5BHPzi|p9_)zqRZOPXYoA8QE%kRSyZ@#oIH0*GKZju7_lV_
z<cvGQ(s2|)r$2A&sNb@JzXt|v*FLw=R~O(RmVRNKbzDGq)@9Edc=^}3&O@6`0cQzd
z3b@GRmV})}Cl9<tfi3)|&6fEO!f;Xp+Suvc<J{a+$KNz*ww%lR?v=*tpC3bw;jr^;
z9?Xvga(JrG>c%)-A26Z*Uo!5*l|=p-shq#_J|DDfn&Bi!stH^5UH8GzPD#E}mGK>j
zV)(uogxbgRK@2TqQ%h2^zbDi7kj+>JpD_G4ijrt6*IexV_BLn6;VD9SQs?VP_tvob
z5dtesA)xs{XT%P@mGgs5idi>VovmGG=Bw3A+0_r7*ct2NQh2cH-@gae1%uq?SIVA9
zchN5JzbMVN7ArI7kKyo2I>>IgBO)(Xqu)EJ#TuB;Uo#Q*XYa~FZ!_O56}`hn0LjkG
z))r!j9*A8GRo%N>Ej~W?$`N!isf^%`8NbgM(6}Yp1T15U3KNZ$U$GvBuCNWT5#e7?
z=J(&u-j6nDdK@fhUIq0POfl*YCe7s^fP9T`VE_7~_KCS9MC*<ACg+cchxUzZ{%W?h
zvOaeoNoL?QPaj2!W@;Nxwaz$yd5EHMGMIEyz=^1F=FfLjYi?yyn_HTDbz_abC@-%O
z8T!F2Pq#S47Nrns?1Q9iafBdtw^46I;SUFM>%YnCVYSdaX5ev}+$~o#Vm4@8@%6%p
zc>v-w-WWTvK;`V)R6z_dKB2bZqL<H&ksn4)c6mO?iOry+BEs^yDeJ(2Zg4_x&tdwf
zKiNl_av!kru5t}B?Te_%LgHmVv|r~8&S5R?B~)D98O2#=&|XQMJV19iHHVURNJ2`!
z6bKXUBvd%*6ra?8%Kf5{u_qYiAs)mA#d-67xm}Jm<+h^u<Z{C#c6ikuei9d6YTtRg
z)@OY*2{7<;)w=gCk3-QQCV7#k-fd2cVL7RHPSN4jwzd<V3`Ct{f6Kj=AviMv&WXDZ
zT?q8T4ydGkzp_+ukq^Dl8neX*nr-iEV?`cG>&;mhXwT!l?=FcdcW4UHfNylof8M&x
zhOw8Mg=g^JBWs-XGf2i57u^=;p9?9o!;JJ>r<g<b+QI~2s=glO(A0m6a~KC+xAT5t
zz)ip`y20j3=U7qX$sle*n>saW?kZubL23~omRAXRQ73|pKZ~s<3c&o)BPf0f0OiFB
zDd&<YbFscT_stS0QV=RJB=-dMxauDqgmr(FLsv>i*3t-)8-tnJq09AY#smV2^cYNj
z1tM^wh3324H`mS`KE+lAKsyt7c|%gu<pAZuz&)kI_*)7hN`J<vcAClo>fh|?Gy!+g
z!2omeu5K<8Um*1Pp2tq4NU)$<Cz{8j^}XKK`gNWZkCop#@1IFl>PZ~`k>~H?^8qUh
zSQLJ1exut7zd!*2%&f0tU$k3Q3ipVa!gfLh^4R&y<s!$y`_M0kY$tDL?i<$2&E3qk
z9;@nF8mGIT@k^SsNp=lR9EB0+U-IPNFx*Ig6N$qpWa`SAzC$)ejWWBcwt1j&{e~?1
ze6@%@9AYfxMmU!&-Eo*M6jyNu{C34r*+3Li46xEAwTs1@){kP-Bg8st8NsBbjew0d
z78@ITzsLoSL25{Zdbc;^is-m#-rayOR0ax2F4ldYPLB<S;f5Q8GTUIX$QDg4p8^n5
zf@7ebZv@3GpIuJRX-%Ul<!sLV^O71YbNqIzZLT4jNj47%8<Bu{f<W4+86`+n^iWj|
zMYGIxpEpzcRx%lQ<0xyphwTs?23Hlor``zUIAcO^2}~Vh#J4nVYsKLzQtDx|tH$rC
zLTmA=xHYt}zSsE^De@oHOk`CaNXS{_GD?0ltc02`x}L4@S4B{!rA#GJ;$r2U!E=@3
z&IVUnrv4p)p$ztS*P0j9PT*6-oRV4!sqm%ZuoQWEu<?-KFedy$!1ocpnI?xzO~D{N
zO{MtzzJsiaU-$u_=gjc00V4`Q#G=?27N(|x6%ts4N1OznKcj;F_ZX6%ovetHTncgW
z{A8w-JT?m#Ia=6Lcs;*P6le+}HG3NNMV;}X5zO|Y9D8>d#keAdKlb1#mr3OklwE|K
z@r(UVDkf57Jx?u1FD07)W!iVYG=G{FqmY|M&k9jK%R1nC(dwDjkK_!fC;m?&0Qrsc
zZc;F2#`U(Ew|aQb@A;}dR>_Uu;3!FQMD?K>LuA23a6Hs$837Qfr+)@6Fy#gt(c&J5
zv19~~e-q2~c|809&R0HESmi1)uXdm}_kA54q>FtP!lZ>YW@cVC(6DO+f!GEfSrz$<
z1(vb&Z`eZ&S>)||>TG}0OWwAhorS*`f<XHE`neWQeqqe}D6zS3mw>D71^@ya1JO9Z
zr8PB2uNJ&w&*jb2C0yFDo9i}S$zYp=N>#H|xge_B;TLjX7=5WLP6>IH$+t##$5w^w
zO9sx67qPH3N-`zyvt-$YVCh?2#V<e+)nSERW`!V+ag=l6PiTsH&LJ{Lh%(K9R4$3v
zw*I!g4F{rd(I-%i%<#1z;&}U}KZ;zd-V4RcXL!-*jo9<oE`g=3yqcpjv+Q;l-;8#9
z>trmZ*Gn*i$cz=#uSorSa1WLO#T8jVWE!L~DN{PyZk%huam31{4*1YNuDt1RBd0K#
zAW#-3&=jybl(s0E)G+S#cGuEu1KYN82P8W2HsV{O_8n9Ggy-}v!XS_iS~}?PF6U26
z<UNce425nWh8C<eVJry|=hL8LRxRcLWv0KT2DdKEb^nm1+@~TY<BB2Lg7|O*)27yy
zP#BOj;rtOK^pUau9=Qh)@)Wa}L_wg^vqR}iyezJn^)m3Z5}=}X(R{(TlgPOLa~y#J
z7!Vr-)|Ap_USC&plmio5L1aqb$?(IC!Qki?X9n~OVFO<r0ClkH91|TNpRw2x5^w|9
z@i+KD8(P1-y{`aO5!*g2A6Ct=XD=KSJnJxkNlXVf)OpT&;ol&rNmOjLOvFhYRZo|J
zsXrfW9EAY#FRFN56crIcU}kZ*H_E~;SFb4U;3@7Q)Up%y;4n^C^`6kb^nh)`1WmVZ
zz<_++e?Na+_`A`IMLCsh)fWr~CQutL?@5=<+Z!2>;r${80Y~J+9GK^EWUN5Hu4BKJ
z!5++|JX`!OfbC<DT(;BS|6jZ`rqzW3P18L5hpmYSTLqt~cEEr_lUKAY5}p2J@Dw-K
z5!Gi3!7!dE|E=uZoX+5OSZZ$*z>!J7%F&qA*0lEa?vO`SP6#Xd;wk0NXkFoj+n7R-
zv>EyBqg+B!Oi}y`*7=dFN!C2vjy?4Dl7U(+!hTe}XRcO%*}yKbVJM;KZWe9TGUk(N
z9S7wc8tAKz#a;6eUA~XE=k#&s#XsKl-=oIT?9?GQhktG$Vj2`UTSPERlZ#(W5-t!1
z2Q6{TGO=`*mpa(V;6P?k=KfnBLP9cCAe|VfAb+Eia7=kH%m)&lG|-`_UF+%P<t3ry
zI*y@t+rZsOjJy0anR5M$QGcaT6s1f;L=#%H5E$}s(Yaghw7j{!?b@(92?AAiJ&$|@
zUpg%%BA8Y=%vB=K-P^eXZA2SL7+}yr1#9<6YvMmYvx{pn5s@!fJcwp3reKKGKhz_s
zgd&j{ejj8^Sc+nHO9wE7G-~GQS6#u*9e|EK+|b^W$!v$u9EM=}NT~t8x*iFj?7yr0
z_waxUuOz`9H7ycSC+6Q^2?GOCmKBbd`~>!(B-jP=$Az!c5`makzeVi_9qGktIe`tD
z93$+m@G}+alJQ(KkQ+Xr26o;pXfU;)>8$u>rNhFgYG|0fLuMZr-URMu(>?~Y%y@ev
z_WZ3r7Q*uV&(m!{{%FdR(x{*pcQJI+9IU+R<K`=QwW8PwtGp6{1ET-#Pve6eXReb&
zzX{wz)aNTV2;`PkAo$hCyV;%Nsj|U~p9#)0uLIE)XfODcFo_^)rt|H~A0i>{Z7S}p
zdb`Un2m3vMhvkJpbC7x-XA%lvgTtwpOzY8Wo1C<?LaZBFK8#*<Qjq7`Ih}uhz8`oP
z;#11nrwR6-OG#0bFUm1V5b0!pL-9X*(KM{lUmj?s6KI8K=g;0arm{+jh)9C95b10l
zfo;Ya9XL+{N8gp&7>ikjL*{qZiVg{;!<AM^T6zu51PojxgMnvGj|q-qZTSEKLBY*C
zyQ$ltY{~O;&Ub&iniHMJg&j-603a&DdzpZWJeNy&4aGRl+{45}o*`IuX|b!hQRx$+
zc<drnTSej<CyD7FoOimF6#^m7p#$upHp^0zra#kTC-9XlDlYj3lr1Xi>4Yf8J%s#N
zEho}_J;)}r3@+1cm)9=*!R0s~LqU|gJV5!lEg=R^q)Poow)F!HC@-m*3hHSk*D{A&
z8z_??77QLqqeE||4YsL<6Z32{c^{FoOp!YUOWZqHMvV+gnuEyd7s2^c%gl`0V1qyl
zcAi3*DV`cVpu8cyy5~)c=3RG_4yFM<?~%*F?>cyrY}NM;oaDKvKH<Ygzb(~~6aHU%
z;OjWTFiW`I#W+Y6VY+C|u6Rqx*v97O*JG!nKi@9}qDY{IFOHL@5n^A%18q#gVXU5=
zeImC#CbOIKZ@_{0G`o97pn;g-tq#cEuutji7r=4ZO@Y(@!u$UPVO;r*S01Cm6uo<s
z0o9$adD*L3csaSyL|OPZl_(zwt2f<$d*KG<!EUf&UB*1LK*3^V&u?H_$$_!Gq^_|~
zQ+_nL3DdeR#Kf3lpKVZ0kpgEA_d0+!9v$J$V71cYHUSkdR)RT@@jH;x#l&T4cX$0e
zHjUx8cn|W|tVPm~MF#l~NK5?MDlpk$hkOP3&mP(mf~=;4kvK<evBcVt>MLg+@Np<5
zNI(l9w(1M^PI&1ASZIP6Xw#%`;10n1C}eg;HH#>5)5eIz#lSljD8-G3V4)TYZ&_)K
zO&#!L9jT-#yIGY%H1jC*Ug+s6>T<j9-B3kacktyI(0`_ER{bsr5X_cUERl)4K9~kM
zcO^KzrliZiZtntGH_MX<ChX5Xoj~}$!7OCnHE>(ye9_bfbD{B>(&M6zvor!4&R>K<
z+Fpai&@hk;eiQ<{zs^NkAVDz}s5wMKOgiL1UOl2k)aLPM67K#!7=)ni%3}%n?XKm^
zutt#kA+keg4C)`cTjqO<ZBt!0>3aX6CR^BR$+4p172Z@&^ngxEnlAX{BY07~y5iAQ
zTwMI9tT5IfL7tjSU^|M_pxm%C<7moCGYr(Rjg@bMl!F!c6F?yXeywmUB?hS?*FGQT
z8j>JUR!Fylq(7RP&5OitV=f*>EOG{rd0Y)E4m!3;jqh~DQ-66!W@1HJc`07^A-0#=
zQ5>$K))2Z^rTy`&bw9p3Q{-XearN8sYa}3r>Qnw*iouAhBhuW~_L%;O+~+1}-q7!5
zXVopYbX=!CP>d@gKR@5AqVCf)?6x*q1!1j;PKq!@tVT{S*Px9Hee#$&?{)NIanoYx
zcduiXy{!FF39zZY+(s~2OfnKo33TIjBgEg++W!IsG!wuLpHDijq31l@`mHmHoLXfK
z-aOE<0(C^AD9gh(-}&5Em$mNzR{Py<nUn(HZ%xCb8Y$K1B6M)u<SuxDG-ifvpuZFp
z!&Y<b9VE}pCKJ|W@rY+9^<f$<Tees;I;khq<W5oWw1-~uZ?j4X?s@o|kO)oT_xVO*
zUZD5nzgOGfj1fEw@~?Qsm%7++1v-ef2cmTwo@Xq{9&<D8WBve=Z?03c<VKg+|Es{Y
z@gy59Ce~boYuD+@)xT=^=}&?>h4MPk`{g-JR@gK>ceP_=_16=Zc*fCM?=cXGN6khL
z!5jt?CyVds$$g$L&Eutah@vk4IuVsfPd^9UFIp~6YZ<=SInR+C;pYo2e+ondRQ-;F
zAG1`|@zBrNo#xL-#`&AvzWIiNu|gEWoFD(d!2E&&ZYy2E7)Fg0rDkI4^;Bw*K8d3|
zD~$ZDzw~zSK6rp^(SQ|oN=k?hzi;2r*W)3_tHz@OI>Q2k@ux~0Jgbnywi$B2=CxBw
z;@U|{nbf7Z=f~!(FOdzZnQS^wdT4_SR7K9dd~k|V3zSZXQ`ac+^2f&)s<A?s{)!GR
zSHn-kyd3vB_c>`>BaDN{Oy8AeujK&+`cQM}L#FB=ZL2aZadf_IX67&&0P}4Y{kt}#
z2qx9D+xDdR-nY4&B6{D8K;oLcgZ-E45UJk;xGc}H3i0JAORd68=S~7CM-|zg)yt2c
zRzf<vAua<hb15RegdH0TROui0EuI6<cexLvw&i_k^$jfs*l9Zc)0y>mdHG{`^>h1S
zLTi_9$3m5rl@<9{hnHK8cV{i@jnfwzEukdpD)}$Q|4>+;c?@)9_I{iE{0>e|^6V1>
zbj(d7lA;1Tap(T;I>bSsL08?k=L0wr)so(2V0~#PPo+RTk>fzpsiR8`$!t-QBV59X
zVKEYv?;K_0O$mvXNxZR$Np>PJ0ES=_XF`B!fz5tx8+#y!p6UKmNXZAi*DX0w1u05*
zMdmq9c74ie>veY2lh61y)irA^F7w2sDYkww4sHll+DK%1mgJaX=dx)s5{&83znMJp
zBE&W*j^KgmNjeU@yA~_VhMllfWDfn0!QVnav5N;^{>l7`lQ%LlIc6_>GwGHX53Vun
zB({Vvz_sQ~eXD0iF~1h=iHJC0GqjX;81G?=!dp1$hDB87de_9);*2MkK+!NZ-_q2z
zpDcvg<G$3{@-l%ciovxfHaY3vuysAvI6+=YKcX~Z`<Eh~Rx!){+>oWy<rxs+me(5U
zFL^5)yzbu}vt}~NB+y-n)*M51b(cAS644TS^3coEo{Tjkc<%pClHFgb{kjzxZlyku
zf%eYo`XJwie*dTNe0l-iY(;ANakkPCU<&=ZF9!~1XE!Cyo2{jdqFNr;?z`L~)vPxF
zp+Mo3)$p8Ur!fUUF`UMQ-!Iv=^vO9!=Wp=ExF62)uJ!z1hCbs(;GI$c`xgvK_{$7*
zRsc;SZmhm#V_ak0#he}vfNIx6@-YCIxXwH)=1@Qmz_YwOT+@E$sm~yoDHmNp|Ecr(
zr182+8h%hV5d#WBqhEd#w<Y-wg-n3szGPIMdu&Zb12;{eMv?i7AMGR5oCeyx3wE_a
zOf^e1mDw6LJA$i?I#kiP6`a?*8@$}s<9#10X-cJacSEGe(He#LUt=93DXoHBDp?Kv
z$o;78!XC$$=U{8%I}zqMdHkKA(4d=Z3C_*b<AQ5~EUoH_qny5*X8>^|O^~^UW0uiN
zPykfddKwz>{PtgrH0n&k527!}-QEv!Zf_0utS=v1>CV46Js-RSHp-+Z35OrW+n3t|
z`g(Rjp>R=CQF4BM<4B6t0Ut(3UK2@qSm||rTU_7sk~$t>fhaHrukBc3w#8P$x;f+E
zxx{i!J=$=l0F^!EviHBMi4+fM|Gb8VE35g2I#V-)jk7nlF2ZQ^Y5M_y8!%x%0od2G
z{&(o{G{c-;={%_w4i6o|Eo(9|Qk25Z$>REjtutZ(X9F}3SnK?(s2Jh&O3<4RDZvoY
zkuu91%@}x+6N9_qB#@tXjXw=b!3!~T?kh-Un9(yNZhRNZJnE(I*3Yeb3-0s2Br^XC
z5I!M99{c}K3qVVytz>0ZiG<^;W9Jo$1HfQ!?Wae5V|U-MV+Yw$m7v7teYF{8*y|3v
zxwMrPZ4(X)f~09Bt#>1D?Zz6iD(=m2ZRN4RD~rPZB@71xZNg3Q-;All*y?HiB;6tw
zH*uw4ka_>=YA3f}_9f&&9@gjrG7!LyZ|<v-IOaMcd4Im43C3q+Y**O4pJ{6|)-7zk
z7@fO(T`#xy2RK10q+(oDs!POP?G1P=+ai6S<zn$!NhN|VpVKh|=sp>0h{H|9(cSw{
zeN1Az%#!>PBvo4_#K0y)3yjA25i>I1j3fIg{H*;vHh+O=w~$m)1zqrbnzO>$+T{SR
zKJa1`2rZ$^q{tyLL>7tPqimP!x?IJn{s(N*HDu+!5h-K0W&Zis5>ayvRR2_wxxQn~
zw)QU6&^Ct4`u4MMO<jSzzPc$XxQdA^Q`7JAdPK+`wuOgv{+Oz-$8qB5L)BAb)>&gA
zh5(zN>$4FrOe3@8xDd4}Z?pW3-1DS-zy|LBYw4>4qH4asmy+%j0a?1cyJP8+Zjf$}
z?rxB!yFp4?x<Oh(I;16}JAe22zVH7mbMKv*GiS~xPEpZuW`p<UoZX|xdKQN_IXCtn
zdg(0%V&fQEjmpH%24*;r$#D%$&NeS~0z*5ddMnc|fF=oc1ZbyFjpADFs;lbjKCGMS
z71Q-RIIlFd8>5xyX2Y4IeXX2-n(le9)rP43$U-_-+6x5n;0x~W1ygaZW6sYk-(a$a
zn`V_wc5H{B(#%t(WV%|pSFqGh{|qkjUPWSgygBTM-ya@ODr6YzMu=}jZ!7vOwrE{z
zX01!`O`hgLi_nNqZLWz@!TjQn3khO-oCReX6-y?~N4ZzT0w);Ah+Sp?IX}^E29`KU
zcwoz8Y^f0rd03Lr*)K^IVC&FQVxt9c_-L9~;8uch7e8q^7(4nxkiiz&q@Pb2${AY_
za1Gx@nig14g*fPsM3Q;^sYC)>-q(;4w>S*=e)K=*aKTGJ#s+w~ys2+6OBT0&|B3wM
zm=6QU<y#)k2#q>~G8JoY)rrawL(3;cpU+VM7@S1({Xc)=_Qd2rPzq+O3|+?*2(pA+
zw{su;+=(JLlfci9DuK3QZXBZr{ut{@sK=@07_GVg$qs<@<@cLG$6pQl)wj8?!Z7u3
zheO#+o7@sU#yaJu=g>-LeOE7Sikr^#PV%^mA8r8`u{%}F<0>+~*=xsNYxQ8Ahm$C(
zG{$UyBe8jpL2arT0t@>4`<}gwE|>eY-(K%V%;IQLf6j}W>k_yR#~(P1ZqaLO<wo>9
zt-htI0Qk$7Y~s16{>$+TK=JtmO@~JUnHVTdhWwn!RQD{Jz6<FDmacV<ek>m<IIgf^
z?G{R`o5sjrx^Bnr<mfND+nH~F$<N_d##P&LdoruT&&4zz!n<jB>mKl6sHFuH-}YiG
zSrt;M%f$5`7;<&e5@+{zw~$(96L4BsCPhx<<a_qE&QnK|IS9~uPJG2TsQ<Hc$n4Ds
zy~YB{O(ty)4BR>e5Kz!5E{UtXZ9GNPu&R&<86ZWt?^`_+((Cv7bjU<X6370X>3Hsg
zWBV1SZn5G5SM6UPfwxAW++z|%3O#i7Yg9!K)dwI-6w80P7lcgXE6<xIM43YDuJu9z
ze(bD2N9-oxgOEVxXf9L2DT>VaEN<LW*LlY-pyS5XCwT-|i~b)+ZVG09uz+*i?1P}u
zM1=7-Q|HPy@07heCOEsTsW4LqZ_}mhGbZ1$2BxjlOj8i(E7hd;V{l}k&LHY#_)l}y
zIVmnqqfw7_i?)CC+{>Hnyy~`d7Lc>`jp^~&{0v(8ujNxCEldhbPv<YR4O`m!ruWVA
zJk(;D_cd&2Dcoa@orhCe^y81e6a;r+Ks0f6T@{~)(f9!j^WG?F(S^h|Z8bujA`C>C
zEaxhN*h=uBy(_=Qb4@Li!+YD3n!`nIsRf;W&hISZ!<o*y?EP=2S40!6?4<@%ofhJK
zI%soCi-=j)hMpkKa3k5v_&Pd2E8V`YxY0<1`oF!FLZ~VPoF`{bGMHGhXji@Z)OL`j
z9}vQRtJwp!$@(53c~T#8v`F618q{}E#H^0qaWN&B?@GdZTAD`=3X)U$y*HBgMXw@?
za5pvyG5W(Waa~S}E(&nkv}R|C3`pTfrSabEpNLQj?z}wzSu&Sw{{5RUbz?SIk{)5i
zW#`TJsm5Qc=iQ(fe1#`bnp~u*(wX1a6A00?H}m^=_PowNO>?h;#|YAqE8dT9|NfsL
z&3!)SX_AFJ869{~4CfO#P92W5)Voi0|4Cv~J?kT>*m5`rM7J~!X9YGKaB_KXnaIHz
zL?za5i_{4Hj!PHzM@%B(JM-bu(T4B-8Rp?wgSpifnD#M1<W(-s;c%?|@rZxgd&<og
zjfe|prs?|g#KD^M?}p<sv0kFHAIDpff*_9LN7_=d<)Oa^A)M3C2*Y02Vq`my+fO39
zms1mW8;=zxOA^EnHy;CFs;xdIU$RZOYW7{>afau-ZG;4R<strt#=Qf{&HsKm0(4(Q
zJLMdy@qIA16yGpJV1l?nU@2CE``2gNaq3$_2>nmOHH4~WI_B9cC5?oD*+Z^djrV?g
z9*YjiaU)f>`wDjGc?W$RsG<Q;nGys-Dwfs%8#X_PYa+KQWweCDjNMYE_$ymkfZ*ZL
zoe)4~UU3yi0{bQ!dUjD{Hb!MbZsJ00afl`QKYNzUpPa^IJH7UMth0XmCs{2DDCu|j
z>L|8t6m1r94Z37qAJ))(Eoj{c_^mhn>%@_U5YM6(6V9IgAoe{G8b5Y;BAbuJ$&_Np
zR$6dWnw+kA#P~@pXo*>xPbZEv=hkX}5-IZgJRZc+Y_>P{^i4?&1WL1f`7=s;ww%td
zJpE727L9Z-rLps+HM04@yUr<2E$P7fe6*+~oozS^%5$hcKwNo=0iJL<pC~^Q>}{x~
zM0_b&3_0-r?q~U!7sRp0sjv4C)i8JS4e#X|fBk0cvDGz4|M?oF^`vm^>w&S$5Epnb
z##TQM24p>6)6)LXKc^gfx5PqNKvPs`(rl<*VM%Y6@$FwM>*u!9VJ!@*Fwo{*x{=q-
zjg$7R-07ZnN16eY$4cn(Pbj5+0@+KsxbPp3-aCJQpVEGkRrRrW?W>{wS#{Tqj8pX{
zR&_>P1lxOuA+y=<;RbC@lyc>(XLZB4NR&-C^r8==)Y0nZ=L-ufs`h{BJ#@cUn`xTB
zAMvKYU4#eKYkknb)1<>AKi>UlPC?7)OEvxPRpuYDPcs3pm7=?QQWb04u3yZ>t)$DE
zU6CrCn813#^jB%)cM;4b__3p|m)>J|K^}@Ck@j+&cEX}$i}mh$_;w*Nqkr|^TsFJn
z*jtIMIE!ZfvX-gjcWbi>YAp~^?8Az=c&jMlD{9oZ_uypOfAJB?|9B*MObD4t^gE0X
z6jsbw?vlMcDySWFLs7{UXr?BM&E@@z*hN5O-b*yT>3+6;$DtvY&z|W*g0E2Si_x=?
ziH?H>EW!a9%g<a4=-}PP#sf>&1kPrN3VFlLQavx}s*hBYT{)xzpAG|k2$vh5<;-Sr
zo^c^n_<G5_m3{cxc7nE+waozIvi9!!Ca}Ai`6StVc!z;3@mRg*W^C8Z<?mkE`Di2w
z{)di9p1??kW$W)aiynQW2j$OKZQ6|ySYP$h7<kF_r+3|cKB82lTex?3iruuev2G3%
z;r=F)(TMZxyq-0F6-oZvBC8>%BoR6Ztu6HX(RnZ<YgIF`cclS@u`Pp)zusg>;Q83P
zuFLdoE)VV0^R?3+y_L^x&3xAo_asynzL(afF@`*tm?3B!`^9b!e=A{eepJ(?w`CpK
z3)&KwA9Xw9dk02apBNPIo9o;^1%v5qtx`2Csp6Tryd2@DUlJVh!{u{Cdin!$6~lju
zef2lo?j$kS$x9~oUE2ypy3r*d$Pa#Gz{k5uTzvgEu+7DtF2hvjqlp}O*|#%iV<1N}
z8b_PI#!4KY$L=n>$qW4Pn#5MLzGL7YH-@m1vhs%Lu#=fPtFGnmU?LDmaRybL-m+yx
zYcNqEfB9>s#8kk3_;D$;lem~1Bv#D3`MdzQ;yA{Vt?n&En1!k&wsWum6L@W-Qm1#j
zm%hk3TtH0Ay%4rQ%#n#kSJT+~vh#5fk22gjOQ43JL><M%uNB^1p>q1l0kDI5NYl4>
zq17Cv2~A}i7DMXG4=~->J?EEx{?RmdQ+mK<8Cvu)sP4%^gPt_DRIB_S-Q4G|DEb@D
za}Ex=Bi@~Q#pGeXJ|p@a2(}J`tbKiRn!aqZw9*vz6^^Ki)HIY93bm&4J*>r^-G%-^
zU-T$MQ4oBj%AO2?;t()9c5FwF>{plcr<F}wxMT^eQTnUjA6Jx?B3Lz2p8u8V=d<W}
zIUOW&5|N7RmbrWovT$v);Z^RoWXCVs=66_{_oe<I0uT3#%`(PFm3V}(m>k>&e1?(y
zXU+qmiiMOBwz#uy9=nC1>PpQ5os?g{k|Bpc<g1pFh)_#P_gEsm6LKy~Y7kBz7f+R$
zTX!ZwBr;E$+$$sT-1nZ#pr^vs;|nmz`sdQz+tPvA1M$w6aK-n2>_cQNgSKGoUEGDA
zJ@xWisZ8Vu>*_$lW)j~g0t<`&xcjt<w>#hmuVYS3X-5&cB)!X17bepr|5THoh_Q#=
zpu~3lQr%_-_wl(sh1xhGI{F@FJsXOvkO~KVc#@vb_3qC2rvF)&Tl0cY_T;CUu%?Bi
z@x9(Fq4O7$E$^PL%hrh5eoaV*8cU57xp{q4h}jLNn7qi2g2rjxbcTzn5J87YMZT<)
zbq&Cq_$e?&8QAmm%F0ljuOm>??RX7$egi-6i)XQ_t^*Mg@ZUEM!wM)=y>B1kQ~kp%
zlhEm~Kk0d*nx@M9kqhrH8%hip4`e)cRLm9(#j!GS9bHQleLCUQvr8SdC|D^wNL5do
z{M>ivk0s&fGSYQN^0pO%c_m@nSAv&tATO9(n^P8{DzYpUGSR-5;KY?k?12eN0{c_=
z|M4bso_dKS%QT7$IEndNuH$vz46L(Ph?ka(c$_>#Sm!~oY`0=->!v;(Uct&ELO6NY
zSHZK#_{adaqq?uP+5ODS%-qQ6ETyIIHO7W&lyg~?vgI}CP3fo;1Yg!FjhXac5kaa6
zJ3%{qTG(2s;DW|RTq5%VsNU<}xc4K%d~W+Fl|hK=sN+`_CG~1FDe_uI;EfeMMS%|b
z=aDN`yA{iHC!rXuZy&eIXBkVox(hf{+OGQO6Ish8<WjVxM0bX76mq5BGCa2=h(rT~
z_|n3Q_)*)~!(bGyFK87u9`esxURCW3t#m*22x$g}Vz1cW<$5mJsrmeF3U}(E5g1ND
z(CH>AxZkgkxBhNz7kaTX5}K|onTJ&n2C|MvW7{gE{oLJim)F56&&@+dUP=|m&V~lZ
zM)r(MS;LKof&eU5s5(HsJ=u^YdpNAQ6Im%s+FgUk9u0NI)ueIde{htPWLFb3gST}d
zflhvQ84pHWPS5up!;|>g`tAj}ni7aXA>=w9qrVs5%;X<Y6CcVdaMcQlnfL_=QXEu-
zZ<>pN>A=Q<1<kh{<gxjT;>_DHTF6I7LHW8mCCPq0=K2{jeF0E9N!R{rRHB`l9zoMY
z=CfSRgVFmK{C4w2L++;LaM4<M>puVr;o#t4eX>;F%Xxz}L~z*@o5Yh014^6>xJ_~T
zC-fScOsW0^BQ|&?l%x)b*n@uk>6FTG`}w(XFOz@q%II}&^YzPiG3RHdbaF3vb7ib;
z1dS+b9>(LNqiff3SUNl`K8zU4#ve(FU)wZJpQ>!KHa|i`H$Z#`fCj>E<@RB(b<Jl{
zUyd^vo%#|wD#b$kCj2=rBpmf=um15kmC@teX=qi3V(@W|lY|M)9`Vy)lz!vKw!4dV
z>+5Ww{{C|93>SLbzUa`i8IUg9sM}W2rrW>PhQjl`zj4?{gZNfiikUgq#aBq#%%%W?
zAR-tlp2Wi^b1fVBv3;nLmdsa@i}-~V1eh}chHC)ZR_teQiF$uliF0o8f?lnyQ_s#l
z=hP3D9X>@^XVf56(5Wj6MVrj>{O(WZzxXmD;TB*0p0{ID%(SxHF%JL!1+}Vroh20q
z-U=JHcQX+&)zV?M#GFg#X+Lxm%~H9m#2ovIyct;G26Gh~WI>Sk5T4iX2%g1}3aj|Q
z=pazN&dD<ZYv=iu2t%n|@~>WX$CnTLp$*Yu!}xm!=Cy2=G~}=6)yu|Y4~-g$FDJ3A
zuLUr!TS*mNU0pd?r->xVP#oacO-R7_X~ALn;3a;3dJ;JG)HjH${DbDWJ-9zZ8p-sS
zB0tf{?;_4NU8PVJ1P;r3n|exTWc?F?H5=!esRTd!*lBP#=k#&-<)Q2-CL~QJ3O99r
z79qvjaXX45-+MPXd)vc9mWzi6V~JKvv{0aN+4#g~$@GrejlYdNRlQlxT9rOucFSIk
z!wP%xr)mlovDkdUQaK*jXV4RK`FS^=)J@sn|MCf`@Nz!_3CxC8{49;6yTf1J{EnU)
zaHw*_$Z`AIc3g*Lc37Uz+O>D>7Wh(e{LmjqK9!22XooExB`d7554nsU+3{g<A01IC
zJ?{Xv#Ln>J<7y!aW3D7r{ny3@2LFinbJE9`zxI2kG|7Fic$OEi*s)npypJ${HxGM?
zCT`bo<8RVJ2$Sh-DGQ`1m=sCm-fDzBH(#u&OC46fh>F<vgi^HlFI@o6dCTz{<t%Fr
zjkvQrBa+OtT-JDRJq`{@WTIp(CnxZ{_;b+`;!j~gN>BnKI})syzViIGL=pCzaKGB~
zrIyvW(li^#c=i^U7;Lly62DEv>8k=&Iz0X8v~Hnk#?8FxgT5;vq!3^Ut`qe8bocz3
zqgHU_dyO+T<Z#$GKZEZlq{%Qq?$0cj9)wlHk`N1k+FSqCyxMUQeh11TL44>=TpO0T
z+>d)NTSolh3<MH@f1CE80nW`{orB#~CsE6b5rxJ<oE#bUbQ$vOxEzCxwQAF?{(u+I
z=^3wvG+q;wZ-y@3#2yQuTTLqKP9^Vo&c%HAnLSxfEL8#Uw5qms60P5hqAXjWC=@TZ
zTN12aqGrn`4MrW+qJq%J<DqS<Nue7Q<fv1?O3`mo0Ws9&0m14cpX15Wz){gm7ZNzT
z<_ylRMyq!zu%T^je7gJja))>G%h^a6(oi@Uy%eD}l`Sku5rVyQLy?VClB--bc6gii
z)vqBM-rH_}qF6&osZ|`mWwB!L&j070>-phVYC;mv1zk+LM7C(uIP89((dbWmSk>FF
zG}~;+)-H}eAn!GiaFGWd4|XtxiDG5$Z0zl;S9I%9?!RgMqiy!<p(z9x5F+D8a*pOm
z3$21_z|bcsQYcm^2gQ5vyFDpLOf&TUgj0DnVA^o_EKP1czLD9kTHFS%kShc`#;zuO
zzP%vqCp$R(;Of-sUuJ@|23g>9{DHBba451`80rwZhB}y<GaSgB6s=8V+T0-?BK7Kp
zrcRgMcZcPPHi|S(!3@k?XvyjlR#vopwNGQgvZPnI;czr`mh$6fEJ4<;B>aJ|d<bmR
zXy{d+#J2n?GWf9LjejJ$ukbX(prM!qvDM541oXFvid;sO1EmeBOht^|fjdEtl<^na
zbV<yvVg-pB6ccqN2{@HKc#y4wgY=<0aYrTI=Y-Im7A4q4>J}TEQw<8{1SOehE`(40
zy<=EQNjP>66d+KI=EZ9hixEW$3<ztO7+k`>pXE}-R*14CrU9nfDdS=Sqjpy+W{*aF
zOdqN!H=<6dicwQxC<W)rr1IzAeV!Jn2PbEsY2{oYk6Lj2c?#Gnq)#OEInKRfeK!UR
z)9Vk~`154erz|-7TH$jVAAElRO}7Sk<M@-GEnNz2rCciql{`1Q0exj^AbLo_5#;zO
zXr2})MKs{`fw5yDesTzuV%umAyqA34{#0%i!AVn!y(`J`pC<}7v<)ewIo(hjN+hXZ
zjsm8jUL>x);B6UD&O0%w0&Mdkg?_HG;9;&`QEcQCAPU$54v-9-QcNIfFgE!B5*0^A
z5tJG{;s-h{6QcrxS;caS<%8H=*j2w(zOdbopCea7CUJe2_*Jj2b1$B)E|p=^6b%Wy
z(ZFe^@$&tTyAqnFwGP1Zb5r43xGE4v*$d;+K<PT4{cuL+eP8%wS1R+#E!d1Y!qo5S
zI{&%k_4Ob>u-j#sLpZ>XcxB~Q3bYqeofY*iZTk(#TXaNBVM}04K8(zCpV>{v9+Qu`
zcSSLnGE%43;Uz*WT`a-$;xbf7OwD3A6nfTF)F#x}2ry)6a%#a%V5|#-t7MQkHIIKV
zv%);PEMFS6nqx_I=$BMgNNQEKIeU;hadWjnbmKD9hRvq`WO|w6gBur48&X8y19@qf
zJr8Q$S&!RwrPa%dIl^cCs5!cQe##`J2(a;opg}ikIDQ`K@6KSRO;bcJvmumSbrd-}
zsZ@!HJ*?=}y3>Z81l(|}G>6sDPm_-xY-r|nJBb3egcVi3`^&VV`{pAo;d{6=fS0WG
zjc9aya5yTEiu7F~<C+M8u(quS?mV#U%bwfCP;0b`FY%(Kps=bCM3g8fu?sQ>3;u{Y
zDnoJuyool&H+YVw-ZJ{4Zu(+AO1Ch%D5(;ACvD&vHR!8fNn;Q9CMSvWVqoG}$slSX
zl;@Z#0vtY9soEP3x(n=*k3G7W4a-c<Q&$>!K1V+mjUTm%;SOMf2*a>$YV{3d)D2u=
z*u*L$g8c@dk#s;ZThb-0Y*ue($r$a5%V@d5``{$H{ADdeRHj(1qN?gcujHX|nEKgN
z;8|Dnh+^mcm4$0+mZ)P6z>(-oBP7=GxxUJSXLEtERVq)`fWRV(2T8ec;)n+U_S5Ej
zJ;^zgAdvb>Hd%JrJ5WJd>EUctOZ7Cjn9Es%mypq#jMbRe`fo*hijW1i15Vh@hu#wA
zTN@kiD4a`UxVQPINIwzGa0wU@8@rBkE33Q*XPqltZD<EeR2hxzRKBQjKPZ0=?j?Gi
z8Jw#`C5L7n!^bO3uT;%+^<eY%gPS0hRL|HLv&^RU2BQk0<|f8+JniLgPonUxv66D-
zWiyW?&(d{6eJ@o|G%8lfTm?QT$86Q`+`nhqO?Zug)+lR~;cS(=v~^vfV|R`$G3DT_
z%QKOEauU-tF8gWg0S!eQON=Kwyz^MZ`;Xd4PN8!zMHrg{(S#NR*kb%i(Fc%s=0AVc
z@Khuz;(X}sg=Fe1@4rT#b}W~;O?hXj3w#4e9V=BO9fi%eq$9#kt#5+cwZL6Ty%L(W
z+AJ)uBo(SK?bfCs_Z`$X*!+Bh7i83;a9SVyM{0g0i)DJS>uC^|mKrDe7^Xl#U-(*r
zZ;vJH{<7h?PSk#*v95{ngfpD|3g%vH;rV*l1Q`hgYHe!zv#rXcM7m~zHK~LHw-W*6
zx0}NHdZ(Odp<G;CXt92()N%EZZ?C;@Rw~^`-wZf1HA}Oiv%(@0U@Dv#S-wtwZoDTX
zG{h6!Su(HVRJsZa2*`nvwnNX&&F$qUbn1S&tv^uAx^8d}R<QW)12x}L|N3xszzF(#
zmzBRkRPE{GO}EhC#cpJi#TCKs!8ul-W@=`cId|56c%qi=6p-hznj}Z{?(q8~X6Zbw
z129|HNpKimteJ|R_QOH%wo*!l^_G*|y6$=L!;@4*@7C_w^&P!G4te>#k!|$u@L>Qo
z)bX^s&izQ*m+jBMnS%lyI%4-s#i4wUD}0#=7chnKxnjm4+0-(aLcIm~U434_{YKA-
z*-Yrs(GfXuJjQn64W^#mv`fw=iO=8B);(8LOBcDc*=B3&rC*fg^W3`-sxK7NBEEO;
zfo%2;q<V84<%3h}?MC7`6)gHZYC}MwXrAxE$ai9NC`xy5XhQhMIzvz!9~DnlF5L~d
zo8qu7!dPi<cn!40)ek-Rb=zhq)ggzeQYFi+@i}dTs%+f!!kMSB7((>)2((Y7jqUFA
zy4=&J2e*^#4rfbu^CHP?^LWqtM$GG%@=b`wBH7=S-py|_)^^<bX;8AjxY3k4^ApaT
zM49!O-pND7O}}$?51mFkIIw-O$MGs7GaH0aS(RgqPOH9`;G)Vl+H~n~NZ8HEF0;Xi
zr5MUHi5qcbcip`h`55STTNr8NL)+H0)X?HEEo{dv`CDFE>q!c&hVuNLT0xFyRcyoW
zsx5k_WyMwiY;gb<?njqGQd?tEtL&e!GP+-;<Rp8O;P@k9ZbWNXc$GaG5utpuVppdX
zWA%%Q>mFP6(C+nz3j={dl|2QR5}BE)FdY6*VE4_`8`JY{N^GjSK=vfYs&GHH#Dx?E
zyZ1&XqLm1j#}S4?x{TcT_E0H}Rf_G5s)y<Yv7*GUl^A_Jf*pr+nV$oR!Yz|U($m7f
zfBkY6m8fXf_r4YXVHdfe$9(TK6AskK&QPgAiMA8KkU;4xZfJJM&+^WaHFQ{Y!aH5z
zXdr-97bH~#UjdDxiy_N?St|k@vOyz2qW9jM&48iQ7tUPBarbj}uJci)Y$ku$h5@^0
zEs>~*;d}Jo3s7{Cb>5;JKJ4ZMohb7|E|JTU6pFje+Yz@`BL2&OIG`@;on(wy!)?*1
zizU&U&iLthFJo@1ZF-&@$(hA|&~VtI>zII0+mk!vqkF_r32V=NO-+s0;VhC%(YQ6d
zd1%oOak2NoY5SZSZx;s^LIEW<S*pgysU7LngpkT1U=JRg){kHU#>u7ag_@ANilTQF
z)ZY+eeqRdJ9I6{8X7^tms0em;cfTeQ?Kni7AU#EY_YUAm&;D{gXg<x$y^W$#<{aFX
z6YFK#WbJsny9Q>-BOOy&KfMtb&Pt+8`h1m<e7l}PyZJF*>K5SOU?q-3o;yEb((hf3
z_dFiKz@A$JeFO&n>k;tvg*N9L;95XDQlA#3xWuj*$jY0b+lL2^%Qp6ISIuEbaFM|H
z$<FOvf4uARoNt#!^;cSE7sZGcGe+?D92rh7IK6H}{MqMC16v;pZoP7J#@n_sqawOW
z?l!IRBjgDU*nYFc{R4cQ2F>chBD(>Ss9>_UA2t6P-ULrhq`9%tk?ioMn{;{OmI0$t
zRP+HpjBlNWN9{PZ7iMwH-9DGQ#rqSvt7NrTF>K6h!-bW1hp~kOSYoV7Kg~%q+M9Gr
z<UnyL0na<^w9oe=0N<@LUQq%B632q~47^^p0=(U$0EjweG>-zdV$|AS$KPLv_rl@=
z`ku3exaVI>4@-3UH~rFDOu!uP7_gJq^FDyXd_F&wCDWyV`9Y^jfSb_~U+Q5bsd_d?
z_?x0&+fq8&45|)k=JBgRuZBKk8|QUgy^%eyBO*!M3^c2{Fgs5@4E$&6{PITTcP_gw
zt!Wf(h^w|)?Go<ClRea!=lwa-WpdK$eS`}WTJeqkF@Sz-Io9MR3g1kq)OC1Y!iKXq
zVsFEOjj$xH)$Nf~aj`(xNveBAS|}#)pm)JhE<nlE-)^(3$6s`~!jUpAOah8!CgaQV
zw218c@hQgAzjl1o7E~cEz5bVb1qOtaGA{ld-)GPGZK;kvQz#qDl?W}ACHz=HS42<n
z&F^7vho$RrxRuIlZxY9siQ_lhpm#pxo3t1RU*5*rrf>Cg<5IMY%><kE4};KP9>?bw
z%gv3dy=+g@I7+}Z1+bP*BD)qVf(F#7Iy+^*o-|?_`z~85-@S5m#Z<JO@$&c>-x#q^
zT>1ls$4{FhfzH3gaf@e`=!uHIt%trG<FM4LLcHq$F7@CQjp0oea#Z9vQw*mOf?E6~
zOa%)Jj3!=0GjJH%e}O;c7oHaT5ZGZm`^wyL=EErQb7hGd9#qgg^%y7oD{pkI^(_o{
zqrQ6jMqsR>ZZ!h8E4R1{LW|TQ!P@PrqM#u;fJ{>=OBu$KU^6Fz<R+qbZ1TE#miuLY
zDCN~g!X-2O7sefQ`=Z}ES+Q2V^nD#zMc}Sv1s)zKblN1I-}1>*3CLma660B-!>UpK
zn(e%bu)|#UE+?gd3#!M)9Qh<k{{lAe3yn=@_Pu|@5WWWNd>+4I_nzaaZ}uM+Uu{kB
zyS0!t4iU&^mU(auTetQJEfrEgF+t~;1g{4tDFGf^_Ndr2g}vd*mtjYL4F7SrH%C@}
zTkIi5fd8c-QA!L3$`~=*?>_Yp%6;H9^4$yW_}4IJ%szbUY<IkZ2_UJA;#d;~?Y6(;
z{_7Rs!2KTP`s8SFag-O2b}wtH>vSExFk`L~I%TdRx-Rr(zM|NE^%VweQP;e-DI+~(
zpZ<3GggPy7(65lELF^LlPt&x|Zp7Md>;Fw#1oZo*sOA%;CKO9G#zI#@+t}qWtn1FU
z4d0yPLv2^sBV6hH6O6fvKpyXLLo7|t%NV1Elx5Wn3s~!x=Uvc^DE;E?)3L9z*7NJ2
z>p{ONA86>yw-Hj$T91BYS-*0YWWFViI5_rUL8o4Gbl-jo$x`>%8{Q3}7XVD#vef$K
z`k8`q`&(tzukR3B{{^Y$o}ezs&%S;(`l7<H0N%qQ;oFzn)-y4X{CER-vK-oKv-wN#
z!U~`-WZ(-Nz3B8_H1asmR}uBcM69rG!T@dMeFCZC;EG}Lr=GdOVV0&77P`Nc{(Luk
zXch)H^g3yJwtqGKCV3r2dH42dqT#kM;=&>1A^@pS$vkHrb!&xXm<T{ju8e&Dm5kT@
z_#BY#*Yx+(o)FqD9GeilW@ojveg1^*Aa@YXkYY$va54`-s%h&W>)Z_MKnBN0n2K>^
zlBCrLy^9KgUJ4h^uTI=;9{oJnY`2{)Ni_1_!-x6x8%kPG#4af2DSl%CVQszn?b$X@
zPF7GQFC@m^fE)rcbRDHmetX!s`x2M6UmIchPmz5i7VA<8L?qIIhei${&K4ZxVIX?T
zrxU_`(!hTnya5GV+v=1o^`mAaQaso{jfltK=HaiKb(AC=8NwMU!LVb!1@Rinuge&+
zfp6!6^re$wSQT}3A3rIbBEC1Kzp0${N!GN*#tcz`qZd6?v`PoKhfl^v0T28LfFf7W
zh0*f&aqjJsKLwpbtlKDcV9ZI+n~{0SC?N5%bU-I^a!?g`N7=+V>_wva@Omg2js*)`
zeB|f>CCft-?Lm(FIJ2i;5v0*DHCcrz_tSv92xvf34AiBm5Q&50Cb5P0a)-GRxXU{I
z{O}KZd<7p2A1wvTWLM1KLyFh5;9YZ*4yoiKha!Ts>4#u?e}hOsmj%tgK*V4Rfbtd;
zF`K_=8ux)+LJ6sm24uYgja2ynNGV<0Na#v?uU<SIf9$1cSWRTMezW_QdrpL?mZp-b
z#b1Xy00co{io(<A!|f9tx<V&=L7v;is=9kOAu>^TkcmcCSzW!0D*GgcvdCLMLQ3u9
zp5RBnznTjV?%Dr{%d*WeXklQkc}Uzee(2DKp{HQ!8MMI24025(I`+JTs8!Baf<P?}
zl0sygB`I^<-#*rG@4E5>1vn6hBXeRv^z~tyb({|)1+)hHM-h^&8gt+p&q44ZV4xNf
zvGb#&s@Tk~YJ)}xIa5)XY9izo83q>wKdeVzS}uGsXjk*3_>*g%wudr|{6A2jI4!4E
zEj8?cY>FQQdb@6<?h$;1rZ`>mS)qU(ZJ6Ofi3;@n6a${En*lm9BH#fvAo}Cz0e63U
z-0CpD0O(W-nyN&QsX<Q9h|YAz>+X|&{QBi@Afs=qTWFuU^9L4N=?Cejbm9-lTVF;Y
z^s0~=pBrPR*XL@WY6|6GPuD|Dz#7p*O?L}MEtZy)EGMr0?=`A|Kt6KT)vb8$0nl4}
zZCPX(nJ5`=bRyiB35B}ai7)OGD=*m{r=L{?1dw2Xy1z|UGgvns4BTP>3av;!A_z2n
zx7q!0=1Cg(vU&EL1lp(gB_V~B2trb!S4;m$oieKRA>0oX(F%-{oHX{i&?HOMiYSY{
z2pdmO+5h~|D!e?;J7CyT|4mShF#eP#Ozgk^Ur0sbntCZLkTNRdI#$ObaJ<L6dCJC(
zREbR}<~=XdZ>cELsGF%c7B2&=Qe!cYA<pc0x=K)jVdVxx`dosIL_e>GShUO%LUih_
zzqX41c69pfhIt}u7BTVNj9zy48KA&JGcUG@(>5mp3b11uCy>MECqPM%ZLTc(vOi^j
z$k`0WyZj-=ZbVz}tO%wgCAC#^Yy4lmbPPJy^(~^t55$836HXo!PP~#3d411izr2j>
z$WUgkObi>>*G~jLObq%{30%SxXYUV5TUS5xLJs%i*nzT<^Ey)f@VPhy8NlR)rU41G
zD3VA9$Id8jz+JhWQ3^-`Jc#TJ6u8+>k$CZOFQ$}l^3{s*CLFZBpYNM~ywPl^rxyEE
zhi{vR%Q_>z4e+X)cqU+r-t|Gj4phfxK&<IH-K~*L6p^)aAP)nsX$!UywrEIs2jakN
z)o@$a?8Ve|w_oixPQ6`e=VtcKN4Zso;s2&s<KUlNqRS?cok|?Jab{#Q(B>&aqO)jz
z&yhQQ9AYD}*1%;hWxj2bz=Xw7N0!fhTvKm8+_@oSI}eZykf->ar-Ie>Vk2y?QPm+p
z?ECX10s>jr^gJ*2YzpkmyG?s9-57oj87+kc2e}dt0nQ&4;|G>-5<`9}ckyt%#1A0*
z99Y;2=&wuU@5i;8Rb!o4w|z8_NXZ8N>8{T0V(EP4&5lybFbDn3B=w?m3wE?(9*s}t
zp}+Jz$8P}k+r)mE;d7*&a>u`JL_+Wi_byJaS8g222wua6$6ke6@x0xT-?R+l$Dnv8
zq=l5)t{#2;nfqCcjA$vu(GTyqkqgCb<c8~2kQ08{vGiEyzdbIr1~?H7FZ_oGMFHJR
zvYNw}xfe)>iGZ#Y>JShpNu9<2_~njO^kAFO2s(xv(ICB-RF&X{{fP(geBy3h>S;S#
zwed6L`2qx>uY_Zt{|9{iaKL4atdPgv`yoa@tVu4_svO_q)ag2FGpQdZU}y*U$pRiQ
z7hat$?cKw~*b-vElnnz+1M8Y0?c7{UgZoucgC3JnTJLYoSP*1MX#`w7DI7h%ZsRO7
z6-P~tljHufOGmw(q__{YEyy$d11p+Rp8JOU4*S=EPTdcGy#cyS^M_I{>e8^4@6|HK
zVF=-E2DKzNUfn$=Qwppv&l6YE`R(7<FBEZI4q;oF2NBrFc9KseYZtS)nbzEQ;lA5Q
ziGeFtEteJsluQ?P{}>e)f@U72)-wDiKfZ2$F>igv2bW-j0Gc46oS{gTQ<BQ&)3ZDG
z7d@E)JQX3wCk>Y4j-vmb6;9<^J=ttM5`8A<(h<O6%VgU1I;}j!pzI`ITQS3gSMyL^
z`F{-0B@kW(r?!E`-xm_it$RLvdj9G*{W$bf^9Y{K;Xnb2KDJ`GOqMQ>ZF@#9)}Dv=
zCNah7b&k=g^D8z4nL$xE^Emq6<v$=xx%_t--|o?986A0$<IFE9_!^seeJ+b^GE<`T
zVlae{|7H-k^{EdWX#iZ)Fp<vU)KThnsu%9<aRJbr4iAMqjBaz^`*nQoVB+;<vUUBo
zGARPBm`r0RY&s0hO?bUH4_doa4{L&(g4tWfSdb)A3_fk=`%J{Oojph!g+fVgiLEB#
z*m-ohVEAS2A}7ir5%a$>lI7s-S8LHHc_e&r6F<U#?7Zqj<jwItJUc)JQ#UuUr7{zx
z&nDPxvC~j?vo=OcF&`a<uXL37IwFbNG5!xRPUsEaWx$zUrHUdN<UysPBex}nI-h9B
z1Fd0_KGe1Qy%~-qiZ1d@I)!;gu}8>J!OmDW(G-~`ED!^sXZmVP5|BF%-<N-6b?mr-
z8t2`GncDW1(gQ#YXLwT+fk-T5d}p@u%92a4=tqb!*<y1=xnQ%WEa7?)SS~%nvJ&rB
zKtRr4C}F_#eL0j!q>O~pR#h2(WOukKu=S1CbK_8GoU0Y{j13R4iD^E3GL_*w)?Ev&
zvinDCzTKEe82IJtJ)r@Y<e`|eDRju3f!dECIXR5r{fJufu*`d)myJ*RmztXB@{p{c
z_Rw}i)<yLA-T;Qsw&QItDhZuFavG1y0%%6uS5>JNU8^<c-zAhSq=L6ns|{bOJI#Sa
z6bOEw*0uR_+|GqCL&!lj9VA;1uaWsojvdFH3bd2gx_NG<aulU_X*illqf(0haW(vm
z@FVqazR7Nq1!ehtDyAveICRt5FX!OPVK(oUx1Xa8QI~*Iqy|&PMb*CktGlyV_E_8j
z>S21=5_{5?TNAp>Dw@JTPIKoER7Uj!5JAvmpE~CI`(ocf@0mTf%0de|GDjqvii-2h
zB!Et{c=AbJsCjEaK+PBNdeU|VD6FnuN}>mlct%Izh`%^eeEqte5_nte@OD-pnc!qC
z7x2;CAdf~8DcDliWc7<f<_K0F5!~jTcI+2W&;iLo+cImn*D-ov*S`UyA#+rlh9WNk
z2U+Px$`asC`b6XiGrv2>$PH7I`&(*0OS#y6sL9_G8=sOQMU8@v@*P+TNg{!-fZJn2
zCE;~zpOQzA!N7_Da4ubK>1+9?S9b&x;f5iO6?FEr?kZTC&#c?cA^Z|tnW&t}Z{?V!
zPT$5wy>EaYsn>!wWWMXLH}9cTwK&*lIuGA;>Rwl36dDB|Ym(BgnMK3%Y{p*v^<5b}
zE;V)cHt)e{_Xw}&o0>mG0MYPLtsfSIUMCHq%x2+I`bCN^_dB5%wVvHR0SYVg^ZlIc
zRFC_tP-Qc@0iC0qd^mk3Jr%yh;{*$4Gw`OF7e8W3=f+wb3@5JQ7EArl>;`IX3TO&$
z$|a;yKr}2m#ZmTiltKkky098?l{oJ(BCTpRmy0j1ah2}_G&JV6)K)j%`*e~KnX@T1
zGL`5}S+A=?fF4Qx%IU(TaG-C0o=|5GudA~GKiT?pBcI|Ftim5`RAmNgrjX%q01)#h
zNS?peR1$)d{1><3{D`N9Wgq^m`Hr`pg++=&3Ld6KDaAP-$Hv889RhDY2z^ITTJbmI
z<6FT4&?DeEU(<XCJY((7{XX2k3VonLTDFTkEQlN_h@IfHs+l<FswF{jKNFZ?zJCj=
zXHRIjMPoAwHe*5T(rwh}`T%QCo>@WnA?iqYL<3hPP!;#rVzF<4H8(cGPnA;V;^S@d
zD08C&^ZjfpTh0kMh+-&?4GPnH$}&?Ediqc5+ZxKxhYN^GOLtL|S;XCT`U?rEjn;dJ
z$6zYRAq_6rrbZk|Ee-vk(+Y?GSs0(K<-F>4>cDE+*JeN0bMp-l!C_P2?Py|aK>91p
z4CKr*##+Nm^2(W5X_&{=Nb55ILa8nD_Mvyzu+Mj!ocd77I(~`~7geAfBf(Yd>_sr|
z%@-E~-}=2kq&_Sf!BPqtE<2)E9a2p-6iIr&nN8|(e@A2A{qWQO>qR><bawJl0B8|K
z6rt8l6^7<Z4?G<pD2Qrs_fbsslw?S~5jvaHI=nvS+@Hw2`gu*OtqGweF++gTGuX?=
zi{T5YWX@Ee6_aw3X}ce)10BM&gvb{0M=gW0ydG1x{J(sn^^f^^=dZ~xgj!6|M+D58
zoTI6Y%bJpmx`~Zkb#t^ee2T*K>u*QFK=a6#Bisw1z2%o-qPqG}k<zA4Tzju*_F6z1
zT1qP3F-p_foz~;#FX|<lGC3LeR{YlKwP)<)m)Ic@KENmwGYgJm_>3YCD~V01YU()h
zbM>25llf|kQK*;g?4hhJEHU3N+eKd)>B-3`evFMcH@v}}j3*HSrjTOnh_*9a8{H)w
znlyD2OClZlU?oYjQnZqi!O=2-9jJN2a=^jAFH4q<lUd!V6|w$6Ul;acS7$)890p~@
zmRNU0?Rjg*)}$k-xv^a=h3?gDM5y|&8T<BKZ5*DQ_&p6s=f6B<Wz+N+|3rW_t&Ua0
zP|Hva=hqHX#aAu+l#<}Um^J!WdG(ZXr4qgIU2Im+yF3wTco5cp%mNi<AAj1~;24fH
zI1`r9)T9Rg8y=2ze1gc)c{1+phE@5bMkVRa#nKn-)r|#?$$C?}Wpp1{>i1d!n<<ds
zutnd6<!ag-m)FdLr&yAa7cXgnmznXpp7!%(o5oMD62!PgZ2w`=Sp5QVuCQZxWt!NZ
zzipq7X&TP5yYFF*H&i!E3kugQ{<Q+WpTPnVK7OQiDu=Cv_#ZP})+8hf9Vu86OEd*X
zQ~YGPXcn-IC72qaMKQdD31hiQ9jQsCk~!-yvgqT?msKvOW<!7fm%m<2JS%K*GijFg
z;z;kcbPI(u=t^N(2GescSosN!1!_C08#x=VMHSNgE)y#gnIM77EFdtc3@;Lxl&zZm
zKgc|?U!3TeZHzvntSGOP&85k7b<EZ5h_Tp^uoQRZm~HR~*cl*o++V+bUA=8sb;}`P
zMytW7#}&R4O^_CrHFYmJqGCXmmoH%ocCe(RM_5Rc(9@M;3|FN8-om90DQw692&wT+
z>VMxzUti`ERuezy=G)uLEevIu)ys9+=%KgREZ{<pV0t;wDFJK|h62eP4iscYf(XKb
z02fj{`UH>=kP5V+f`ailb`YymF35M<jcBqxS2>pxrtS#+I$a-gbZx@w-$ihNK>a$D
zgIvQp#ULA*3JD^+Ft~WwYUIMPk?vs_Eh1b}6vTt*va)iv(v>mUdF>L(5A_*EX{C#j
z0$u*b=0TOn)_--2<3ONx<jQ46%-<#UQiVy-ILbaa1Hu$J=Y-}sa$sH<!zspO)RC&~
z!<$fgm`a)@ctF+~;2LiAF@W%{cf4&$_bqAmpIx9##p;Lmskg?GrK{}w07(IRU<DBr
z2Km|tJe^(KcN!=I<`c1Lb-gweokr@wu&7ck&RJp$Yqqe5BhILp1Qf)*>*4d%Jxs2S
ztLib+5obaX5)CqShX<+BQ(?nLb+BwGLa2_8lks5b!AW0TN=n2o1fol-u~NRu$;ME`
zzy_)F%tFAWvHde?->_8cH$7C|+pNF%hB?>G!ko9m<KeNg_e<BC7!yKzVuh;NX^62^
zGzL_|u>S2v4~HG8@`S0A(j?Z~9E~9%f(m@0aH@LI7^*4Czk$cOnT?F2fl)M2?KINM
z#l%9X%n<$mP;mtbJ#vDDKOIdpv>Ffs7v?~rLp^FJF!R9}J&8XziVK@b{p1CfD5W2;
zieN5-23C=03N2zb54dSc=(5m$Lx~0A?7!Opeg{R)?O#VgAb>)IUa6@@XQ+lDrX(-`
z<XaJlU0uqCtx7pM1nP`<k@g@%b=W10eghmaHN~$0MF1qh-}f1$9<@EKkPbXR2Ixp!
zzFzqNl|~cJ0<tLo5T8i@8@M~EqZ`A7ebq$<m8f%#Gb`Ch!TG_aHvEsU1#(BWf|P3d
z;3_H!Xeld+4Ww|RR?0%>_1c@&6#?*o{=WgG8Y4j<sfU)LivHuTS2qIMQKs(E<x~Vg
zW_Un{;B*26K%$rGScQiU>NNoUrEG_(K(;Cd&inXK?yiLOA$U|QMJ9iJFl`WvxE9XX
zH(rV0aM;6mRfg2C5SYL8??FKxIFs$q)x&K6{U+VR+rjrO*I90H)BPidRs&D+yi{W{
zuqVq#Bf3wIA3Z-X#AR9Yu-n3ZtLN!H<yTLE#EU$<b$qS;Cb`Ft3{;Ik^3uvuwGt*F
F{|6H?OH%*<

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable-xxxhdpi/ic_splash.png b/app/src/main/res/drawable-xxxhdpi/ic_splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..053f97c092414272ba3a1ba67da52806ae6d3427
GIT binary patch
literal 44876
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
Dp{qWP

literal 0
HcmV?d00001

diff --git a/app/src/main/res/drawable/badge.xml b/app/src/main/res/drawable/badge.xml
deleted file mode 100644
index ce6e0a023..000000000
--- a/app/src/main/res/drawable/badge.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid/>
-    <padding
-        android:bottom="4dp"
-        android:left="8dp"
-        android:right="8dp"
-        android:top="4dp"/>
-    <corners android:radius="16dp"/>
-</shape>
diff --git a/app/src/main/res/drawable/bg_splash.xml b/app/src/main/res/drawable/bg_splash.xml
new file mode 100644
index 000000000..418a8dfab
--- /dev/null
+++ b/app/src/main/res/drawable/bg_splash.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:drawable="@color/colorPrimary" />
+  <item>
+    <bitmap
+      android:gravity="center"
+      android:src="@drawable/ic_splash" />
+  </item>
+</layer-list>
diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml
index a316fd109..0d2aa51b0 100644
--- a/app/src/main/res/drawable/ic_add.xml
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_arrow_right.xml b/app/src/main/res/drawable/ic_arrow_right.xml
index f366a6c78..50e06d4b9 100644
--- a/app/src/main/res/drawable/ic_arrow_right.xml
+++ b/app/src/main/res/drawable/ic_arrow_right.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
index 36a77023f..adb35a931 100644
--- a/app/src/main/res/drawable/ic_check.xml
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_debug.xml b/app/src/main/res/drawable/ic_debug.xml
index 17351b664..5da4c72cf 100644
--- a/app/src/main/res/drawable/ic_debug.xml
+++ b/app/src/main/res/drawable/ic_debug.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_delete.xml b/app/src/main/res/drawable/ic_delete.xml
index 61336eeb1..d17b5c1b7 100644
--- a/app/src/main/res/drawable/ic_delete.xml
+++ b/app/src/main/res/drawable/ic_delete.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_filter.xml b/app/src/main/res/drawable/ic_filter.xml
index f2509e7d4..19feffee2 100644
--- a/app/src/main/res/drawable/ic_filter.xml
+++ b/app/src/main/res/drawable/ic_filter.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_format_bold.xml b/app/src/main/res/drawable/ic_format_bold.xml
index 203a23815..1e70c5e66 100644
--- a/app/src/main/res/drawable/ic_format_bold.xml
+++ b/app/src/main/res/drawable/ic_format_bold.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_format_fill.xml b/app/src/main/res/drawable/ic_format_fill.xml
index bc7cb3ed5..950ec4dee 100644
--- a/app/src/main/res/drawable/ic_format_fill.xml
+++ b/app/src/main/res/drawable/ic_format_fill.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_format_italic.xml b/app/src/main/res/drawable/ic_format_italic.xml
index b18f1fae6..5007fd7c8 100644
--- a/app/src/main/res/drawable/ic_format_italic.xml
+++ b/app/src/main/res/drawable/ic_format_italic.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_format_paint.xml b/app/src/main/res/drawable/ic_format_paint.xml
index 8faf4745e..698113842 100644
--- a/app/src/main/res/drawable/ic_format_paint.xml
+++ b/app/src/main/res/drawable/ic_format_paint.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_format_underline.xml b/app/src/main/res/drawable/ic_format_underline.xml
index fc1ca77ac..7e79bdc6d 100644
--- a/app/src/main/res/drawable/ic_format_underline.xml
+++ b/app/src/main/res/drawable/ic_format_underline.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml
index eb6c5d28a..ae0a04424 100644
--- a/app/src/main/res/drawable/ic_help.xml
+++ b/app/src/main/res/drawable/ic_help.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml
index 2274de148..bad03f613 100644
--- a/app/src/main/res/drawable/ic_history.xml
+++ b/app/src/main/res/drawable/ic_history.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml
index 6cdc36b13..dba5a1ad5 100644
--- a/app/src/main/res/drawable/ic_lock.xml
+++ b/app/src/main/res/drawable/ic_lock.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_lock_open.xml b/app/src/main/res/drawable/ic_lock_open.xml
index 68f8dee0b..da3b6fdf0 100644
--- a/app/src/main/res/drawable/ic_lock_open.xml
+++ b/app/src/main/res/drawable/ic_lock_open.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_modify.xml b/app/src/main/res/drawable/ic_modify.xml
index 9cc1a500e..b919ec831 100644
--- a/app/src/main/res/drawable/ic_modify.xml
+++ b/app/src/main/res/drawable/ic_modify.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_reorder.xml b/app/src/main/res/drawable/ic_reorder.xml
index 1dcc92507..77a4c4e27 100644
--- a/app/src/main/res/drawable/ic_reorder.xml
+++ b/app/src/main/res/drawable/ic_reorder.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_scroll_down.xml b/app/src/main/res/drawable/ic_scroll_down.xml
index 1241c136c..0fbf78884 100644
--- a/app/src/main/res/drawable/ic_scroll_down.xml
+++ b/app/src/main/res/drawable/ic_scroll_down.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_send.xml b/app/src/main/res/drawable/ic_send.xml
index 32fe2d36e..8ca7d5986 100644
--- a/app/src/main/res/drawable/ic_send.xml
+++ b/app/src/main/res/drawable/ic_send.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M2,21L23,12L2,3V10L17,12L2,14V21Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M2,21L23,12L2,3V10L17,12L2,14V21Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_server.xml b/app/src/main/res/drawable/ic_server.xml
index 304fe929c..624297401 100644
--- a/app/src/main/res/drawable/ic_server.xml
+++ b/app/src/main/res/drawable/ic_server.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24"
         android:viewportWidth="24">
-    <path
-        android:fillColor="#000"
-        android:pathData="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z"/>
-</vector>
\ No newline at end of file
+  <path
+    android:fillColor="#000"
+    android:pathData="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_shortcut_channel.xml b/app/src/main/res/drawable/ic_shortcut_channel.xml
new file mode 100644
index 000000000..5b574046b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shortcut_channel.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+  <background android:drawable="@color/colorPrimaryDark" />
+  <foreground android:drawable="@drawable/ic_shortcut_channel_foreground" />
+</adaptive-icon>
diff --git a/app/src/main/res/drawable/ic_shortcut_channel_foreground.xml b/app/src/main/res/drawable/ic_shortcut_channel_foreground.xml
new file mode 100644
index 000000000..45610df38
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shortcut_channel_foreground.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:width="108dp"
+  android:height="108dp"
+  android:viewportHeight="108"
+  android:viewportWidth="108">
+  <path
+    android:fillColor="#fff"
+    android:pathData="m42.467 69.75 1.2425-7h-7l0.6125-3.5h7l1.855-10.5h-7l0.6125-3.5h7l1.2425-7h
+    3.5l-1.2425 7h10.5l1.2425-7h3.5l-1.2425 7h7l-0.6125 3.5h-7l-1.855 10.5h7l-0.6125 3.5h-7l-1.2425
+    7h-3.5l1.2425-7h-10.5l-1.2425 7h-3.5m7.21-21-1.855 10.5h10.5l1.855-10.5h-10.5z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_shortcut_query.xml b/app/src/main/res/drawable/ic_shortcut_query.xml
new file mode 100644
index 000000000..9803f68b1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shortcut_query.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+  <background android:drawable="@color/colorPrimaryDark" />
+  <foreground android:drawable="@drawable/ic_shortcut_query_foreground" />
+</adaptive-icon>
diff --git a/app/src/main/res/drawable/ic_shortcut_query_foreground.xml b/app/src/main/res/drawable/ic_shortcut_query_foreground.xml
new file mode 100644
index 000000000..058bc71b7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shortcut_query_foreground.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:width="108dp"
+  android:height="108dp"
+  android:viewportHeight="108"
+  android:viewportWidth="108">
+  <path
+    android:fillColor="#fff"
+    android:pathData="m 54,40 a 7,7 0 0 1 7,7 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 m 0,17 c
+    7.735,0 14,3.1325 14,7 l 0,3.5 -28,0 0,-3.5 c 0,-3.8675 6.265,-7 14,-7 z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_status.xml b/app/src/main/res/drawable/ic_status.xml
index 54c07abe0..9d9344517 100644
--- a/app/src/main/res/drawable/ic_status.xml
+++ b/app/src/main/res/drawable/ic_status.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24.0"
         android:viewportWidth="24.000002">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"/>
+  <path
+    android:fillColor="#FF000000"
+    android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_status_channel.xml b/app/src/main/res/drawable/ic_status_channel.xml
index 379bc7ed3..ec005a7a2 100644
--- a/app/src/main/res/drawable/ic_status_channel.xml
+++ b/app/src/main/res/drawable/ic_status_channel.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24.0"
         android:viewportWidth="24.000002">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="m12,2c-5.523,0 -10,4.477 -10,10s4.477,10 10,10 10,-4.477 10,-10 -4.477,-10 -10,-10zM10.663,7.049a0.625,0.625 0,0 1,0.063 0.004,0.625 0.625,0 0,1 0.062,0.011 0.625,0.625 0,0 1,0.06 0.017,0.625 0.625,0 0,1 0.058,0.023 0.625,0.625 0,0 1,0.056 0.028,0.625 0.625,0 0,1 0.053,0.034 0.625,0.625 0,0 1,0.049 0.039,0.625 0.625,0 0,1 0.045,0.044 0.625,0.625 0,0 1,0.04 0.048,0.625 0.625,0 0,1 0.035,0.051 0.625,0.625 0,0 1,0.03 0.055,0.625 0.625,0 0,1 0.024,0.058 0.625,0.625 0,0 1,0.018 0.06,0.625 0.625,0 0,1 0.013,0.061 0.625,0.625 0,0 1,0.006 0.063,0.625 0.625,0 0,1 0,0.063 0.625,0.625 0,0 1,-0.006 0.062l-0.271,1.953 2.78,-0.015 0.292,-2.109a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.061 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.033 -0.054,0.625 0.625,0 0,1 0.037,-0.05 0.625,0.625 0,0 1,0.043 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.032 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.059,-0.02 0.625,0.625 0,0 1,0.061 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.001,0.625 0.625,0 0,1 0.062,0.004 0.625,0.625 0,0 1,0.062 0.011,0.625 0.625,0 0,1 0.06,0.017 0.625,0.625 0,0 1,0.058 0.023,0.625 0.625,0 0,1 0.056,0.028 0.625,0.625 0,0 1,0.053 0.034,0.625 0.625,0 0,1 0.049,0.039 0.625,0.625 0,0 1,0.045 0.044,0.625 0.625,0 0,1 0.04,0.048 0.625,0.625 0,0 1,0.035 0.051,0.625 0.625,0 0,1 0.03,0.055 0.625,0.625 0,0 1,0.024 0.058,0.625 0.625,0 0,1 0.018,0.06 0.625,0.625 0,0 1,0.013 0.061,0.625 0.625,0 0,1 0.006,0.063 0.625,0.625 0,0 1,0 0.063,0.625 0.625,0 0,1 -0.006,0.062l-0.268,1.932 1.609,-0.008a0.625,0.625 0,0 1,0.041 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.04 0.625,0.625 0,0 1,0.043 0.045,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.011 0.062,0.625 0.625,0 0,1 0.004,0.063 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.02,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.032,0.054 0.625,0.625 0,0 1,-0.037 0.051,0.625 0.625,0 0,1 -0.041,0.046 0.625,0.625 0,0 1,-0.046 0.043,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.026 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.003l-1.789,0.009 -0.331,2.388 1.712,-0.009a0.625,0.625 0,0 1,0.043 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.041 0.625,0.625 0,0 1,0.043 0.044,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.01 0.062,0.625 0.625,0 0,1 0.005,0.062 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.021,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.031,0.054 0.625,0.625 0,0 1,-0.037 0.05,0.625 0.625,0 0,1 -0.041,0.047 0.625,0.625 0,0 1,-0.046 0.042,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.027 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.002l-1.892,0.01 -0.305,2.197a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.06 0.625,0.625 0,0 1,-0.02 0.06,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.042 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.053,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.06 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.06,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.058,0.625 0.625,0 0,1 -0.019,-0.059 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.063 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.062l0.28,-2.019 -2.78,0.015 -0.302,2.176a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.061 0.625,0.625 0,0 1,-0.02 0.059,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.041 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.054,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.061 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.061,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.057,0.625 0.625,0 0,1 -0.019,-0.06 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.062 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.063l0.277,-1.998 -1.418,0.007a0.625,0.625 0,0 1,-0.043 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.036,0.625 0.625,0 0,1 -0.048,-0.04 0.625,0.625 0,0 1,-0.043 -0.045,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.053,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.011 -0.062,0.625 0.625,0 0,1 -0.004,-0.063 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.06,0.625 0.625,0 0,1 0.02,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.051,0.625 0.625,0 0,1 0.042,-0.046 0.625,0.625 0,0 1,0.046 -0.043,0.625 0.625,0 0,1 0.05,-0.037 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.598,-0.008 0.331,-2.388 -1.52,0.008a0.625,0.625 0,0 1,-0.042 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.035,0.625 0.625,0 0,1 -0.048,-0.041 0.625,0.625 0,0 1,-0.043 -0.044,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.052,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.01 -0.062,0.625 0.625,0 0,1 -0.005,-0.062 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.061,0.625 0.625,0 0,1 0.021,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.05,0.625 0.625,0 0,1 0.041,-0.047 0.625,0.625 0,0 1,0.046 -0.042,0.625 0.625,0 0,1 0.05,-0.038 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.7,-0.009 0.295,-2.13a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.06 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.032 -0.054,0.625 0.625,0 0,1 0.038,-0.05 0.625,0.625 0,0 1,0.042 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.031 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.06,-0.02 0.625,0.625 0,0 1,0.06 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.002zM13.603,10.957 L10.823,10.972 10.492,13.36 13.271,13.345 13.603,10.958z"/>
+  <path
+    android:fillColor="#FF000000"
+    android:pathData="m12,2c-5.523,0 -10,4.477 -10,10s4.477,10 10,10 10,-4.477 10,-10 -4.477,-10 -10,-10zM10.663,7.049a0.625,0.625 0,0 1,0.063 0.004,0.625 0.625,0 0,1 0.062,0.011 0.625,0.625 0,0 1,0.06 0.017,0.625 0.625,0 0,1 0.058,0.023 0.625,0.625 0,0 1,0.056 0.028,0.625 0.625,0 0,1 0.053,0.034 0.625,0.625 0,0 1,0.049 0.039,0.625 0.625,0 0,1 0.045,0.044 0.625,0.625 0,0 1,0.04 0.048,0.625 0.625,0 0,1 0.035,0.051 0.625,0.625 0,0 1,0.03 0.055,0.625 0.625,0 0,1 0.024,0.058 0.625,0.625 0,0 1,0.018 0.06,0.625 0.625,0 0,1 0.013,0.061 0.625,0.625 0,0 1,0.006 0.063,0.625 0.625,0 0,1 0,0.063 0.625,0.625 0,0 1,-0.006 0.062l-0.271,1.953 2.78,-0.015 0.292,-2.109a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.061 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.033 -0.054,0.625 0.625,0 0,1 0.037,-0.05 0.625,0.625 0,0 1,0.043 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.032 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.059,-0.02 0.625,0.625 0,0 1,0.061 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.001,0.625 0.625,0 0,1 0.062,0.004 0.625,0.625 0,0 1,0.062 0.011,0.625 0.625,0 0,1 0.06,0.017 0.625,0.625 0,0 1,0.058 0.023,0.625 0.625,0 0,1 0.056,0.028 0.625,0.625 0,0 1,0.053 0.034,0.625 0.625,0 0,1 0.049,0.039 0.625,0.625 0,0 1,0.045 0.044,0.625 0.625,0 0,1 0.04,0.048 0.625,0.625 0,0 1,0.035 0.051,0.625 0.625,0 0,1 0.03,0.055 0.625,0.625 0,0 1,0.024 0.058,0.625 0.625,0 0,1 0.018,0.06 0.625,0.625 0,0 1,0.013 0.061,0.625 0.625,0 0,1 0.006,0.063 0.625,0.625 0,0 1,0 0.063,0.625 0.625,0 0,1 -0.006,0.062l-0.268,1.932 1.609,-0.008a0.625,0.625 0,0 1,0.041 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.04 0.625,0.625 0,0 1,0.043 0.045,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.011 0.062,0.625 0.625,0 0,1 0.004,0.063 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.02,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.032,0.054 0.625,0.625 0,0 1,-0.037 0.051,0.625 0.625,0 0,1 -0.041,0.046 0.625,0.625 0,0 1,-0.046 0.043,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.026 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.003l-1.789,0.009 -0.331,2.388 1.712,-0.009a0.625,0.625 0,0 1,0.043 0.001,0.625 0.625,0 0,1 0.062,0.006 0.625,0.625 0,0 1,0.061 0.012,0.625 0.625,0 0,1 0.06,0.019 0.625,0.625 0,0 1,0.058 0.024,0.625 0.625,0 0,1 0.055,0.03 0.625,0.625 0,0 1,0.052 0.035,0.625 0.625,0 0,1 0.048,0.041 0.625,0.625 0,0 1,0.043 0.044,0.625 0.625,0 0,1 0.039,0.049 0.625,0.625 0,0 1,0.034 0.053,0.625 0.625,0 0,1 0.028,0.056 0.625,0.625 0,0 1,0.023 0.058,0.625 0.625,0 0,1 0.017,0.06 0.625,0.625 0,0 1,0.01 0.062,0.625 0.625,0 0,1 0.005,0.062 0.625,0.625 0,0 1,-0.002 0.063,0.625 0.625,0 0,1 -0.008,0.062 0.625,0.625 0,0 1,-0.014 0.061,0.625 0.625,0 0,1 -0.021,0.059 0.625,0.625 0,0 1,-0.026 0.057,0.625 0.625,0 0,1 -0.031,0.054 0.625,0.625 0,0 1,-0.037 0.05,0.625 0.625,0 0,1 -0.041,0.047 0.625,0.625 0,0 1,-0.046 0.042,0.625 0.625,0 0,1 -0.05,0.038 0.625,0.625 0,0 1,-0.053 0.032,0.625 0.625,0 0,1 -0.057,0.027 0.625,0.625 0,0 1,-0.059 0.021,0.625 0.625,0 0,1 -0.06,0.015 0.625,0.625 0,0 1,-0.062 0.009,0.625 0.625,0 0,1 -0.063,0.002l-1.892,0.01 -0.305,2.197a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.06 0.625,0.625 0,0 1,-0.02 0.06,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.042 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.053,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.06 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.06,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.058,0.625 0.625,0 0,1 -0.019,-0.059 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.063 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.062l0.28,-2.019 -2.78,0.015 -0.302,2.176a0.625,0.625 0,0 1,-0.004 0.026,0.625 0.625,0 0,1 -0.015,0.061 0.625,0.625 0,0 1,-0.02 0.059,0.625 0.625,0 0,1 -0.026,0.057 0.625,0.625 0,0 1,-0.032 0.054,0.625 0.625,0 0,1 -0.037,0.051 0.625,0.625 0,0 1,-0.041 0.046,0.625 0.625,0 0,1 -0.046,0.042 0.625,0.625 0,0 1,-0.05 0.038,0.625 0.625,0 0,1 -0.054,0.032 0.625,0.625 0,0 1,-0.057 0.027,0.625 0.625,0 0,1 -0.059,0.021 0.625,0.625 0,0 1,-0.061 0.015,0.625 0.625,0 0,1 -0.062,0.009 0.625,0.625 0,0 1,-0.063 0.002,0.625 0.625,0 0,1 -0.063,-0.003 0.625,0.625 0,0 1,-0.062 -0.01,0.625 0.625,0 0,1 -0.061,-0.016 0.625,0.625 0,0 1,-0.059 -0.022,0.625 0.625,0 0,1 -0.056,-0.028 0.625,0.625 0,0 1,-0.053 -0.033,0.625 0.625,0 0,1 -0.049,-0.038 0.625,0.625 0,0 1,-0.045 -0.043,0.625 0.625,0 0,1 -0.041,-0.047 0.625,0.625 0,0 1,-0.036 -0.051,0.625 0.625,0 0,1 -0.031,-0.054 0.625,0.625 0,0 1,-0.025 -0.057,0.625 0.625,0 0,1 -0.019,-0.06 0.625,0.625 0,0 1,-0.013 -0.061,0.625 0.625,0 0,1 -0.007,-0.062 0.625,0.625 0,0 1,-0.001 -0.063,0.625 0.625,0 0,1 0.005,-0.063l0.277,-1.998 -1.418,0.007a0.625,0.625 0,0 1,-0.043 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.036,0.625 0.625,0 0,1 -0.048,-0.04 0.625,0.625 0,0 1,-0.043 -0.045,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.053,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.011 -0.062,0.625 0.625,0 0,1 -0.004,-0.063 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.06,0.625 0.625,0 0,1 0.02,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.051,0.625 0.625,0 0,1 0.042,-0.046 0.625,0.625 0,0 1,0.046 -0.043,0.625 0.625,0 0,1 0.05,-0.037 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.598,-0.008 0.331,-2.388 -1.52,0.008a0.625,0.625 0,0 1,-0.042 -0.001,0.625 0.625,0 0,1 -0.062,-0.006 0.625,0.625 0,0 1,-0.062 -0.012,0.625 0.625,0 0,1 -0.06,-0.019 0.625,0.625 0,0 1,-0.058 -0.024,0.625 0.625,0 0,1 -0.055,-0.03 0.625,0.625 0,0 1,-0.052 -0.035,0.625 0.625,0 0,1 -0.048,-0.041 0.625,0.625 0,0 1,-0.043 -0.044,0.625 0.625,0 0,1 -0.039,-0.049 0.625,0.625 0,0 1,-0.034 -0.052,0.625 0.625,0 0,1 -0.028,-0.056 0.625,0.625 0,0 1,-0.023 -0.058,0.625 0.625,0 0,1 -0.017,-0.06 0.625,0.625 0,0 1,-0.01 -0.062,0.625 0.625,0 0,1 -0.005,-0.062 0.625,0.625 0,0 1,0.002 -0.063,0.625 0.625,0 0,1 0.008,-0.062 0.625,0.625 0,0 1,0.014 -0.061,0.625 0.625,0 0,1 0.021,-0.059 0.625,0.625 0,0 1,0.026 -0.057,0.625 0.625,0 0,1 0.031,-0.054 0.625,0.625 0,0 1,0.037 -0.05,0.625 0.625,0 0,1 0.041,-0.047 0.625,0.625 0,0 1,0.046 -0.042,0.625 0.625,0 0,1 0.05,-0.038 0.625,0.625 0,0 1,0.054 -0.032,0.625 0.625,0 0,1 0.057,-0.027 0.625,0.625 0,0 1,0.059 -0.021,0.625 0.625,0 0,1 0.06,-0.015 0.625,0.625 0,0 1,0.062 -0.009,0.625 0.625,0 0,1 0.063,-0.002l1.7,-0.009 0.295,-2.13a0.625,0.625 0,0 1,0.007 -0.043,0.625 0.625,0 0,1 0.015,-0.06 0.625,0.625 0,0 1,0.021 -0.059,0.625 0.625,0 0,1 0.027,-0.056 0.625,0.625 0,0 1,0.032 -0.054,0.625 0.625,0 0,1 0.038,-0.05 0.625,0.625 0,0 1,0.042 -0.046,0.625 0.625,0 0,1 0.047,-0.041 0.625,0.625 0,0 1,0.05 -0.037,0.625 0.625,0 0,1 0.054,-0.031 0.625,0.625 0,0 1,0.057 -0.026,0.625 0.625,0 0,1 0.06,-0.02 0.625,0.625 0,0 1,0.06 -0.014,0.625 0.625,0 0,1 0.062,-0.008 0.625,0.625 0,0 1,0.063 -0.002zM13.603,10.957 L10.823,10.972 10.492,13.36 13.271,13.345 13.603,10.958z" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_status_channel_offline.xml b/app/src/main/res/drawable/ic_status_channel_offline.xml
index d24bc35b3..139b24530 100644
--- a/app/src/main/res/drawable/ic_status_channel_offline.xml
+++ b/app/src/main/res/drawable/ic_status_channel_offline.xml
@@ -23,8 +23,8 @@
         android:width="24dp"
         android:height="24dp"
         android:viewportHeight="24.0"
-        android:viewportWidth="24.000002">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="m10.66,7.04a0.625,0.625 0,0 0,-0.634 0.548l-0.295,2.13 -1.7,0.009a0.625,0.625 0,1 0,0.006 1.25l1.52,-0.008 -0.331,2.388 -1.598,0.008a0.625,0.625 0,1 0,0.006 1.25l1.418,-0.007 -0.277,1.998a0.625,0.625 0,1 0,1.238 0.172l0.302,-2.176 2.78,-0.015 -0.28,2.019a0.625,0.625 0,1 0,1.238 0.172l0.305,-2.197 1.892,-0.01a0.625,0.625 0,1 0,-0.007 -1.25l-1.712,0.009 0.331,-2.388 1.789,-0.009a0.625,0.625 0,1 0,-0.006 -1.25l-1.609,0.008 0.268,-1.932a0.625,0.625 0,0 0,-0.604 -0.719,0.625 0.625,0 0,0 -0.635,0.548l-0.292,2.109 -2.78,0.015 0.271,-1.953a0.625,0.625 0,0 0,-0.604 -0.719zM13.6,10.948 L13.269,13.336 10.489,13.35 10.82,10.963 13.6,10.948zM12,1.998c-5.514,0 -10,4.486 -10,10s4.486,10 10,10 10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.498c4.703,0 8.5,3.796 8.5,8.5s-3.797,8.5 -8.5,8.5 -8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z"/>
+        android:viewportWidth="24.0">
+  <path
+    android:fillColor="#FF000000"
+    android:pathData="m10.66,7.04a0.625,0.625 0,0 0,-0.634 0.548l-0.295,2.13 -1.7,0.009a0.625,0.625 0,1 0,0.006 1.25l1.52,-0.008 -0.331,2.388 -1.598,0.008a0.625,0.625 0,1 0,0.006 1.25l1.418,-0.007 -0.277,1.998a0.625,0.625 0,1 0,1.238 0.172l0.302,-2.176 2.78,-0.015 -0.28,2.019a0.625,0.625 0,1 0,1.238 0.172l0.305,-2.197 1.892,-0.01a0.625,0.625 0,1 0,-0.007 -1.25l-1.712,0.009 0.331,-2.388 1.789,-0.009a0.625,0.625 0,1 0,-0.006 -1.25l-1.609,0.008 0.268,-1.932a0.625,0.625 0,0 0,-0.604 -0.719,0.625 0.625,0 0,0 -0.635,0.548l-0.292,2.109 -2.78,0.015 0.271,-1.953a0.625,0.625 0,0 0,-0.604 -0.719zM13.6,10.948 L13.269,13.336 10.489,13.35 10.82,10.963 13.6,10.948zM12,1.998c-5.514,0 -10,4.486 -10,10s4.486,10 10,10 10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.498c4.703,0 8.5,3.796 8.5,8.5s-3.797,8.5 -8.5,8.5 -8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_status_offline.xml b/app/src/main/res/drawable/ic_status_offline.xml
index 09c8869d1..3b528c780 100644
--- a/app/src/main/res/drawable/ic_status_offline.xml
+++ b/app/src/main/res/drawable/ic_status_offline.xml
@@ -24,7 +24,7 @@
         android:height="24dp"
         android:viewportHeight="24.0"
         android:viewportWidth="24.000002">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="m12,2c-5.514,0 -10,4.486 -10,10 0,5.514 4.486,10 10,10s10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.5c4.703,0 8.5,3.796 8.5,8.5 -0,4.703 -3.797,8.5 -8.5,8.5s-8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z"/>
+  <path
+    android:fillColor="#FF000000"
+    android:pathData="m12,2c-5.514,0 -10,4.486 -10,10 0,5.514 4.486,10 10,10s10,-4.486 10,-10 -4.486,-10 -10,-10zM12,3.5c4.703,0 8.5,3.796 8.5,8.5 -0,4.703 -3.797,8.5 -8.5,8.5s-8.5,-3.797 -8.5,-8.5 3.797,-8.5 8.5,-8.5z" />
 </vector>
diff --git a/app/src/main/res/layout-sw600dp-land/activity_setup.xml b/app/src/main/res/layout-sw600dp-land/activity_setup.xml
deleted file mode 100644
index 646a6c6af..000000000
--- a/app/src/main/res/layout-sw600dp-land/activity_setup.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<merge
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <android.support.v4.view.ViewPager
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
-
-    <android.support.design.widget.FloatingActionButton
-        android:id="@+id/btn"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="end|bottom"
-        android:layout_marginBottom="16dp"
-        android:layout_marginEnd="80dp"
-        android:layout_marginRight="80dp"
-        android:tint="@color/colorFillDark"
-        app:backgroundTint="#8A000000"
-        app:elevation="0dip"
-        app:fabSize="normal"
-        app:pressedTranslationZ="0dip"
-        app:srcCompat="@drawable/ic_arrow_right"/>
-
-</merge>
diff --git a/app/src/main/res/layout-sw600dp-land/slide.xml b/app/src/main/res/layout-sw600dp-land/slide.xml
deleted file mode 100644
index 7cb27ef90..000000000
--- a/app/src/main/res/layout-sw600dp-land/slide.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingLeft="64dp"
-                android:paddingRight="64dp">
-
-    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-              android:id="@+id/title"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:layout_above="@+id/view"
-              android:layout_toLeftOf="@+id/scrollView2"
-              android:layout_toStartOf="@+id/scrollView2"
-              android:gravity="end"
-              android:paddingEnd="64dp"
-              android:paddingRight="64dp"
-              android:text="@string/slideAccountCoreTitle"
-              android:textColor="@android:color/white"
-              android:textSize="28sp"
-              android:textStyle="bold"/>
-
-    <android.support.v4.widget.Space
-        android:id="@+id/view"
-        android:layout_width="match_parent"
-        android:layout_height="32dp"
-        android:layout_centerVertical="true"
-        android:layout_toLeftOf="@+id/scrollView2"
-        android:layout_toStartOf="@+id/scrollView2"/>
-
-    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-              android:id="@+id/description"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:layout_below="@+id/view"
-              android:layout_toLeftOf="@+id/scrollView2"
-              android:layout_toStartOf="@+id/scrollView2"
-              android:gravity="end"
-              android:paddingEnd="64dp"
-              android:paddingRight="64dp"
-              android:text="@string/slideAccountCoreDescription"
-              android:textColor="@android:color/white"
-              android:textSize="16sp"/>
-
-    <ScrollView
-        android:id="@+id/scrollView2"
-        android:layout_width="400dp"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true">
-
-        <android.support.v7.widget.CardView
-            android:id="@+id/content_host"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@color/md_light_cards"
-            android:minHeight="400dp"/>
-
-    </ScrollView>
-
-</RelativeLayout>
diff --git a/app/src/main/res/layout-sw600dp/activity_setup.xml b/app/src/main/res/layout-sw600dp/activity_setup.xml
deleted file mode 100644
index cccdf4bfe..000000000
--- a/app/src/main/res/layout-sw600dp/activity_setup.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<merge
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <android.support.v4.view.ViewPager
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
-
-    <FrameLayout
-        android:layout_width="400dp"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|center">
-
-        <android.support.design.widget.FloatingActionButton
-            android:id="@+id/btn"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="end|bottom"
-            android:layout_marginBottom="16dp"
-            android:layout_marginEnd="16dp"
-            android:layout_marginRight="16dp"
-            android:tint="@color/colorFillDark"
-            app:backgroundTint="#8A000000"
-            app:elevation="0dip"
-            app:fabSize="normal"
-            app:pressedTranslationZ="0dip"
-            app:srcCompat="@drawable/ic_arrow_right"/>
-
-    </FrameLayout>
-
-</merge>
diff --git a/app/src/main/res/layout-sw600dp/slide.xml b/app/src/main/res/layout-sw600dp/slide.xml
deleted file mode 100644
index 4a83a278c..000000000
--- a/app/src/main/res/layout-sw600dp/slide.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="bottom">
-
-    <LinearLayout
-        android:layout_width="400dp"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="64dp"
-            android:orientation="vertical"
-            android:padding="32dp">
-
-            <TextView
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/title"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="32dp"
-                android:text="@string/slideAccountCoreTitle"
-                android:textColor="@android:color/white"
-                android:textSize="28sp"
-                android:textStyle="bold"/>
-
-            <TextView
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                android:id="@+id/description"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/slideAccountCoreDescription"
-                android:textColor="@android:color/white"
-                android:textSize="16sp"/>
-
-        </LinearLayout>
-
-        <android.support.v7.widget.CardView
-            android:id="@+id/content_host"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@color/md_light_cards"
-            android:minHeight="400dp"/>
-
-    </LinearLayout>
-
-</ScrollView>
diff --git a/app/src/main/res/layout/activity_alias_edit.xml b/app/src/main/res/layout/activity_alias_edit.xml
deleted file mode 100644
index dc6fa4aae..000000000
--- a/app/src/main/res/layout/activity_alias_edit.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/name"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelAliasName"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/expansion"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelAliasExpansion"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_channel_detail.xml b/app/src/main/res/layout/activity_channel_detail.xml
deleted file mode 100644
index 9037982d9..000000000
--- a/app/src/main/res/layout/activity_channel_detail.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              xmlns:app="http://schemas.android.com/apk/res-auto"
-              android:layout_width="match_parent"
-              android:layout_height="match_parent"
-              android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                style="@style/TextAppearance.AppCompat.Button"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:layout_marginLeft="16dp"
-                android:layout_marginRight="16dp"
-                android:gravity="fill_vertical"
-                android:text="@string/titleTopic"
-                android:textColor="?attr/colorAccent"/>
-
-            <TextView
-                android:id="@+id/topic"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="16dp"
-                android:layout_marginRight="16dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?attr/colorForeground"/>
-
-            <android.support.v7.widget.AppCompatButton
-                android:id="@+id/edit_topic"
-                style="@style/Widget.AppCompat.Button.Colored"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="end"
-                android:layout_marginLeft="16dp"
-                android:layout_marginRight="16dp"
-                android:text="@string/actionEditTopic"/>
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1dp"
-                android:layout_marginTop="16dp"
-                android:background="?attr/colorDivider"/>
-
-            <TextView
-                style="@style/TextAppearance.AppCompat.Button"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:layout_marginLeft="16dp"
-                android:layout_marginRight="16dp"
-                android:gravity="fill_vertical"
-                android:text="@string/titleChannelModes"
-                android:textColor="?attr/colorAccent"/>
-
-            <LinearLayout
-                android:id="@+id/modes"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingBottom="8dp"
-                android:paddingLeft="8dp"
-                android:paddingRight="8dp"/>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
diff --git a/app/src/main/res/layout/activity_chatlist_edit.xml b/app/src/main/res/layout/activity_chatlist_edit.xml
deleted file mode 100644
index f58e9ea1e..000000000
--- a/app/src/main/res/layout/activity_chatlist_edit.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/name"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelChatlistName"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:paddingBottom="8dp"
-                    android:paddingLeft="3dp"
-                    android:paddingRight="3dp"
-                    android:text="@string/labelChatlistNetwork"
-                    android:textSize="12sp"/>
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/network"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/showChannels"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistShowChannels"/>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/showQueries"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistShowQueries"/>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/hideInactiveChats"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistHideInactiveChats"/>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/hideInactiveNetworks"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistHideInactiveNetworks"/>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/addAutomatically"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistAddNewChatsAutomatically"/>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/sortAlphabetically"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelChatlistSortAlphabetically"/>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:paddingBottom="8dp"
-                    android:paddingLeft="3dp"
-                    android:paddingRight="3dp"
-                    android:text="@string/labelChatlistMinimumActivity"
-                    android:textSize="12sp"/>
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/minimumActivity"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_chatlist_list.xml b/app/src/main/res/layout/activity_chatlist_list.xml
deleted file mode 100644
index 312273e20..000000000
--- a/app/src/main/res/layout/activity_chatlist_list.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/list"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            />
-
-        <android.support.design.widget.FloatingActionButton
-            android:id="@+id/add"
-            android:layout_width="56dp"
-            android:layout_height="56dp"
-            android:layout_gravity="end|bottom"
-            android:layout_marginBottom="16dp"
-            android:layout_marginEnd="16dp"
-            android:layout_marginRight="16dp"
-            android:tint="@color/colorFillDark"
-            app:srcCompat="@drawable/ic_add"/>
-    </FrameLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_identity_edit.xml b/app/src/main/res/layout/activity_identity_edit.xml
deleted file mode 100644
index ecd3265e1..000000000
--- a/app/src/main/res/layout/activity_identity_edit.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/identityName"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityName"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/realName"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityRealName"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/ident"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityIdent"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.v7.widget.ButtonBarLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.v7.widget.AppCompatButton
-                    android:id="@+id/nicks"
-                    style="@style/Widget.AppCompat.Button.Colored"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="end"
-                    android:layout_marginLeft="16dp"
-                    android:layout_marginRight="16dp"
-                    android:text="@string/actionEditNicks"/>
-
-            </android.support.v7.widget.ButtonBarLayout>
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelIdentityMessages"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/kickReason"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityKickReason"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/partReason"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityPartReason"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/quitReason"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityQuitReason"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelIdentityAway"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/awayReason"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIdentityAwayReason"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useAwayOnDetach"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelIdentityDetachAway"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <LinearLayout
-                android:id="@+id/groupAwayOnDetach"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/awayOnDetachReason"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelIdentityDetachAwayReason"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-            </LinearLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_ignorerule_edit.xml b/app/src/main/res/layout/activity_ignorerule_edit.xml
deleted file mode 100644
index 2e3394f94..000000000
--- a/app/src/main/res/layout/activity_ignorerule_edit.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:paddingBottom="8dp"
-                    android:paddingLeft="3dp"
-                    android:paddingRight="3dp"
-                    android:text="@string/labelIgnoreRuleStrictness"
-                    android:textSize="12sp"/>
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/strictness"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:paddingBottom="8dp"
-                    android:paddingLeft="3dp"
-                    android:paddingRight="3dp"
-                    android:text="@string/labelIgnoreRuleType"
-                    android:textSize="12sp"/>
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/type"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/ignoreRule"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelIgnoreRule"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/isRegEx"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelIgnoreRuleIsRegEx"/>
-
-            <TextView
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelIgnoreRuleScope"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/scopeType"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/scope"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 423eaa690..b8e62b48d 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,125 +1,103 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent">
 
-<android.support.v4.widget.DrawerLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/drawer_layout"
+  <LinearLayout
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:fitsSystemWindows="true"
-    tools:context=".ui.chat.MainActivity">
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingLeft="16dp"
+    android:paddingRight="16dp">
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
+    <android.support.design.widget.TextInputLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content">
 
-        <include layout="@layout/widget_actionbar"/>
-
-        <FrameLayout
-            android:id="@+id/content_host"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
+      <android.support.design.widget.TextInputEditText
+        android:id="@+id/host"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="Host"
+        android:singleLine="true"
+        android:maxLines="1" />
+    </android.support.design.widget.TextInputLayout>
+
+    <android.support.design.widget.TextInputLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content">
+
+      <android.support.design.widget.TextInputEditText
+        android:id="@+id/port"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="Port"
+        android:inputType="number"
+        android:text="4242"
+        android:singleLine="true"
+        android:maxLines="1" />
+    </android.support.design.widget.TextInputLayout>
+
+    <android.support.design.widget.TextInputLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content">
+
+      <android.support.design.widget.TextInputEditText
+        android:id="@+id/user"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="Username"
+        android:singleLine="true"
+        android:maxLines="1" />
+    </android.support.design.widget.TextInputLayout>
+
+    <android.support.design.widget.TextInputLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content">
+
+      <android.support.design.widget.TextInputEditText
+        android:id="@+id/pass"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="Password"
+        android:inputType="textPassword"
+        android:singleLine="true"
+        android:maxLines="1" />
+    </android.support.design.widget.TextInputLayout>
 
-    </LinearLayout>
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content">
 
-    <android.support.design.widget.NavigationView
+      <Button
+        android:id="@+id/connect"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="end"
-        android:fitsSystemWindows="true">
-
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/nickList"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:clipToPadding="false"
-            android:maxWidth="320dp"/>
+        android:layout_height="wrap_content"
+        android:minWidth="88dp"
+        android:text="Connect"
+        android:theme="@style/RaisedThemedButton" />
 
-    </android.support.design.widget.NavigationView>
-
-    <android.support.design.widget.NavigationView
+      <Button
+        android:id="@+id/disconnect"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="start"
-        android:fitsSystemWindows="true">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:maxWidth="320dp"
-            android:orientation="vertical">
-
-            <android.support.design.widget.AppBarLayout
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:theme="?attr/actionBarTheme">
+        android:layout_height="wrap_content"
+        android:minWidth="88dp"
+        android:text="Disconnect"
+        android:theme="@style/RaisedButton" />
 
-                <View
-                    android:id="@+id/statusBarBackground"
-                    android:layout_width="match_parent"
-                    android:layout_height="0dip"/>
-
-                <FrameLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.v7.widget.Toolbar
-                        android:id="@+id/chatListToolbar"
-                        android:layout_width="match_parent"
-                        android:layout_height="?attr/actionBarSize"
-                        android:background="?attr/colorPrimary"
-                        android:theme="?attr/actionBarTheme"
-                        app:popupTheme="@style/AppTheme.PopupOverlay">
-
-                        <android.support.v7.widget.AppCompatSpinner
-                            android:id="@+id/chatListSpinner"
-                            android:layout_width="fill_parent"
-                            android:layout_height="match_parent"
-                            android:theme="?attr/actionBarTheme"
-                            app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-                    </android.support.v7.widget.Toolbar>
-
-                    <ViewStub
-                        android:id="@+id/cab_stub"
-                        android:layout_width="match_parent"
-                        android:layout_height="?actionBarSize"/>
-
-                </FrameLayout>
-
-            </android.support.design.widget.AppBarLayout>
-
-            <android.support.v7.widget.RecyclerView
-                android:id="@+id/chatList"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"/>
-
-        </LinearLayout>
-
-    </android.support.design.widget.NavigationView>
+      <Button
+        android:id="@+id/clear"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minWidth="88dp"
+        android:text="Clear"
+        android:theme="@style/RaisedButton" />
+    </LinearLayout>
 
-</android.support.v4.widget.DrawerLayout>
+    <TextView
+      android:id="@+id/errorList"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:textIsSelectable="true"/>
+  </LinearLayout>
+</ScrollView>
diff --git a/app/src/main/res/layout/activity_network_edit.xml b/app/src/main/res/layout/activity_network_edit.xml
deleted file mode 100644
index 85827f380..000000000
--- a/app/src/main/res/layout/activity_network_edit.xml
+++ /dev/null
@@ -1,312 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/networkName"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelNetworkName"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:paddingTop="16dp">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    android:paddingLeft="3dp"
-                    android:paddingRight="3dp"
-                    android:text="@string/labelNetworkIdentity"
-                    android:textSize="12sp"/>
-
-                <android.support.v7.widget.AppCompatSpinner
-                    android:id="@+id/identity"
-                    style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                    android:layout_width="match_parent"
-                    android:layout_height="48dp"
-                    android:layout_gravity="center_vertical"
-                    android:layout_marginBottom="8dp"
-                    app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-            </LinearLayout>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/rejoinChannels"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelNetworkRejoinChannels"/>
-
-            <android.support.v7.widget.ButtonBarLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.v7.widget.AppCompatButton
-                    android:id="@+id/servers"
-                    style="@style/Widget.AppCompat.Button.Colored"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="end"
-                    android:layout_marginLeft="16dp"
-                    android:layout_marginRight="16dp"
-                    android:text="@string/actionEditServers"/>
-
-            </android.support.v7.widget.ButtonBarLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useCustomCodecs"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelNetworkCustomCodecs"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-
-            <LinearLayout
-                android:id="@+id/groupCustomCodecs"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/codecForServer"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkCodecForServer"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/codecForEncoding"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkCodecForEncoding"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/codecForDecoding"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkCodecForDecoding"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-            </LinearLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useAutoIdentify"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelNetworkAutoIdentify"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-
-            <LinearLayout
-                android:id="@+id/groupAutoIdentify"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/autoIdentifyService"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkAutoIdentifyService"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/autoIdentifyPassword"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkAutoIdentifyPassword"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-            </LinearLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useSasl"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelNetworkSasl"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <LinearLayout
-                android:id="@+id/groupSasl"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/saslAccount"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkSaslAccount"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/saslPassword"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkSaslPassword"/>
-
-                </android.support.design.widget.TextInputLayout>
-            </LinearLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useAutoReconnect"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelNetworkAutoReconnect"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-            <LinearLayout
-                android:id="@+id/groupAutoReconnect"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/autoReconnectInterval"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkAutoReconnectInterval"
-                        android:inputType="number"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.v7.widget.AppCompatCheckBox
-                    android:id="@+id/unlimitedAutoReconnectRetries"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:text="@string/labelNetworkAutoReconnectRetriesUnlimited"/>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/autoReconnectRetries"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkAutoReconnectRetries"
-                        android:inputType="number"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-            </LinearLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_network_list.xml b/app/src/main/res/layout/activity_network_list.xml
deleted file mode 100644
index d49357519..000000000
--- a/app/src/main/res/layout/activity_network_list.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/list"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
-
-        <android.support.design.widget.FloatingActionButton
-            android:id="@+id/add"
-            android:layout_width="56dp"
-            android:layout_height="56dp"
-            android:layout_gravity="end|bottom"
-            android:layout_marginBottom="16dp"
-            android:layout_marginEnd="16dp"
-            android:layout_marginRight="16dp"
-            android:tint="@color/colorFillDark"
-            app:srcCompat="@drawable/ic_add"/>
-    </FrameLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_networkserver_edit.xml b/app/src/main/res/layout/activity_networkserver_edit.xml
deleted file mode 100644
index 562ccaca0..000000000
--- a/app/src/main/res/layout/activity_networkserver_edit.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/appBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            app:contentInsetStartWithNavigation="0dp"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:paddingBottom="16dp"
-            android:paddingLeft="?listPreferredItemPaddingLeft"
-            android:paddingRight="?listPreferredItemPaddingRight"
-            android:paddingTop="16dp">
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/host"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelNetworkServerHost"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/port"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelNetworkServerPort"
-                    android:inputType="number"
-                    android:maxLength="5"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.v7.widget.AppCompatCheckBox
-                android:id="@+id/useSSL"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/labelNetworkServerUseSSL"/>
-
-            <android.support.design.widget.TextInputLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <android.support.design.widget.TextInputEditText
-                    android:id="@+id/password"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:hint="@string/labelNetworkServerPassword"/>
-
-            </android.support.design.widget.TextInputLayout>
-
-            <android.support.v7.widget.SwitchCompat
-                android:id="@+id/useProxy"
-                style="?attr/switchPreferenceStyle"
-                android:layout_width="match_parent"
-                android:layout_height="48dp"
-                android:gravity="center_vertical"
-                android:text="@string/labelNetworkServerProxy"
-                android:textColor="?attr/colorAccent"
-                android:textSize="14sp"/>
-
-
-            <LinearLayout
-                android:id="@+id/groupProxy"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/proxyHost"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkServerProxyHost"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/proxyPort"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkServerProxyPort"
-                        android:inputType="number"
-                        android:maxLength="5"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    android:paddingTop="16dp">
-
-                    <TextView
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginBottom="8dp"
-                        android:paddingLeft="3dp"
-                        android:paddingRight="3dp"
-                        android:text="@string/labelNetworkServerProxyType"
-                        android:textSize="12sp"/>
-
-                    <android.support.v7.widget.AppCompatSpinner
-                        android:id="@+id/proxyType"
-                        style="@style/Base.Widget.AppCompat.Spinner.Underlined"
-                        android:layout_width="match_parent"
-                        android:layout_height="48dp"
-                        android:layout_gravity="center_vertical"
-                        android:layout_marginBottom="8dp"
-                        app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-                </LinearLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/proxyUser"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkServerProxyUser"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-                <android.support.design.widget.TextInputLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                    <android.support.design.widget.TextInputEditText
-                        android:id="@+id/proxyPassword"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:hint="@string/labelNetworkServerProxyPassword"/>
-
-                </android.support.design.widget.TextInputLayout>
-
-            </LinearLayout>
-
-        </LinearLayout>
-
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
deleted file mode 100644
index e40c9bbf8..000000000
--- a/app/src/main/res/layout/activity_settings.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="match_parent"
-              android:orientation="vertical">
-
-    <android.support.design.widget.AppBarLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="?attr/actionBarTheme">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="?attr/colorPrimary"
-            app:contentInsetStartWithNavigation="0dp"
-            app:popupTheme="@style/AppTheme.PopupOverlay"/>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <FrameLayout
-        android:id="@+id/content_host"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml
deleted file mode 100644
index af00b2617..000000000
--- a/app/src/main/res/layout/activity_setup.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<merge
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <android.support.v4.view.ViewPager
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
-
-    <android.support.design.widget.FloatingActionButton
-        android:id="@+id/btn"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="end|bottom"
-        android:layout_marginBottom="16dp"
-        android:layout_marginEnd="16dp"
-        android:layout_marginRight="16dp"
-        android:tint="@color/colorFillDark"
-        app:backgroundTint="#8A808080"
-        app:elevation="0dip"
-        app:fabSize="normal"
-        app:pressedTranslationZ="0dip"
-        app:srcCompat="@drawable/ic_arrow_right"/>
-
-</merge>
diff --git a/app/src/main/res/layout/dialog_coreinfo.xml b/app/src/main/res/layout/dialog_coreinfo.xml
deleted file mode 100644
index e4dcc51e2..000000000
--- a/app/src/main/res/layout/dialog_coreinfo.xml
+++ /dev/null
@@ -1,240 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingBottom="16dp"
-    android:paddingTop="16dp">
-
-    <android.support.v7.widget.CardView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="4dp"
-        app:cardBackgroundColor="?colorBackgroundCard"
-        app:cardUseCompatPadding="true"
-        app:contentPaddingBottom="16dp"
-        app:contentPaddingLeft="16dp"
-        app:contentPaddingRight="16dp"
-        app:contentPaddingTop="16dp">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/labelCoreAddress"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-                android:textColor="?colorForeground"/>
-
-            <TextView
-                android:id="@+id/address"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?colorForeground"
-                tools:text="example.com:4242"/>
-
-        </LinearLayout>
-
-    </android.support.v7.widget.CardView>
-
-    <android.support.v7.widget.CardView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="4dp"
-        app:cardBackgroundColor="?colorBackgroundCard"
-        app:cardUseCompatPadding="true"
-        app:contentPaddingBottom="16dp"
-        app:contentPaddingLeft="16dp"
-        app:contentPaddingRight="16dp"
-        app:contentPaddingTop="16dp">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/labelCoreCertificate"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-                android:textColor="?colorForeground"/>
-
-            <TextView
-                android:id="@+id/verified"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?colorForeground"
-                tools:text="The connection is verified by Let's Encrypt"/>
-
-            <TextView
-                android:id="@+id/fingerprint"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
-                android:textColor="?colorForegroundSecondary"
-                tools:text="25:EF:C0:88:42:96:6C:66:2C:72:01:0E:2B:61:84:B2:D8:9A:AB:4D"/>
-
-        </LinearLayout>
-
-    </android.support.v7.widget.CardView>
-
-    <android.support.v7.widget.CardView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="4dp"
-        app:cardBackgroundColor="?colorBackgroundCard"
-        app:cardUseCompatPadding="true"
-        app:contentPaddingBottom="16dp"
-        app:contentPaddingLeft="16dp"
-        app:contentPaddingRight="16dp"
-        app:contentPaddingTop="16dp">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/labelCoreVersion"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-                android:textColor="?colorForeground"/>
-
-            <TextView
-                android:id="@+id/coreVersion"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?colorForeground"
-                tools:text="v0.13-pre (0.12.0+245 git-d6129e6)"/>
-
-            <TextView
-                android:id="@+id/coreBuildDate"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
-                android:textColor="?colorForegroundSecondary"
-                tools:text="Wed Sep 7 20:52:53 2016"/>
-
-        </LinearLayout>
-
-    </android.support.v7.widget.CardView>
-
-    <android.support.v7.widget.CardView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="4dp"
-        app:cardBackgroundColor="?colorBackgroundCard"
-        app:cardUseCompatPadding="true"
-        app:contentPaddingBottom="16dp"
-        app:contentPaddingLeft="16dp"
-        app:contentPaddingRight="16dp"
-        app:contentPaddingTop="16dp">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/labelCoreUptime"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-                android:textColor="?colorForeground"/>
-
-            <TextView
-                android:id="@+id/uptime"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?colorForeground"
-                tools:text="The core has been last restarted on 07.09.2016 19:23:31"/>
-
-        </LinearLayout>
-
-    </android.support.v7.widget.CardView>
-
-    <android.support.v7.widget.CardView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="4dp"
-        app:cardBackgroundColor="?colorBackgroundCard"
-        app:cardUseCompatPadding="true"
-        app:contentPaddingBottom="16dp"
-        app:contentPaddingLeft="16dp"
-        app:contentPaddingRight="16dp"
-        app:contentPaddingTop="16dp">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/labelCoreConnectedClients"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-                android:textColor="?colorForeground"/>
-
-            <TextView
-                android:id="@+id/connected"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-                android:textColor="?colorForeground"
-                tools:text="At the moment, 2 clients are connected under your account."/>
-
-        </LinearLayout>
-
-    </android.support.v7.widget.CardView>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_login.xml b/app/src/main/res/layout/dialog_login.xml
deleted file mode 100644
index accd9e9f1..000000000
--- a/app/src/main/res/layout/dialog_login.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:paddingBottom="@dimen/activity_vertical_margin"
-    android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    android:paddingTop="@dimen/activity_vertical_margin">
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <android.support.v7.widget.AppCompatEditText
-            android:id="@+id/username"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:hint="@string/labelLoginUsername"
-            android:inputType="text"/>
-    </android.support.design.widget.TextInputLayout>
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <android.support.v7.widget.AppCompatEditText
-            android:id="@+id/password"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:hint="@string/labelLoginPassword"
-            android:inputType="textPassword"/>
-    </android.support.design.widget.TextInputLayout>
-</LinearLayout>
diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml
deleted file mode 100644
index 40edd43e3..000000000
--- a/app/src/main/res/layout/fragment_chat.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<com.sothree.slidinguppanel.SlidingUpPanelLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/sliding_layout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:gravity="bottom"
-    android:orientation="vertical"
-    app:umanoPanelHeight="?attr/actionBarSize"
-    app:umanoScrollableView="@+id/chatline_scroller"
-    app:umanoShadowHeight="4dp"
-    tools:showIn="@layout/activity_main">
-
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <android.support.v7.widget.RecyclerView
-            android:id="@+id/messages"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:clickable="true"/>
-
-        <android.support.design.widget.FloatingActionButton
-            android:id="@+id/scroll_down"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="end|bottom"
-            android:layout_marginBottom="12dp"
-            android:layout_marginEnd="12dp"
-            android:layout_marginRight="12dp"
-            android:tint="@color/colorFillDark"
-            app:backgroundTint="#8A808080"
-            app:elevation="0dip"
-            app:fabSize="mini"
-            app:pressedTranslationZ="0dip"
-            app:srcCompat="@drawable/ic_scroll_down"/>
-
-    </FrameLayout>
-
-    <include layout="@layout/widget_slider"/>
-
-</com.sothree.slidinguppanel.SlidingUpPanelLayout>
diff --git a/app/src/main/res/layout/fragment_loading.xml b/app/src/main/res/layout/fragment_loading.xml
deleted file mode 100644
index 2b0c883c4..000000000
--- a/app/src/main/res/layout/fragment_loading.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="240dp"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center_vertical|center_horizontal"
-    android:orientation="vertical">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <TextView
-            android:id="@+id/label"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/statusConnecting"
-            android:textAppearance="@style/TextAppearance.AppCompat.Caption"/>
-
-        <TextView
-            android:id="@+id/count"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="@style/TextAppearance.AppCompat.Caption"/>
-    </LinearLayout>
-
-    <ProgressBar
-        android:id="@+id/progressBar"
-        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:indeterminate="true"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/seek_bar_preference.xml b/app/src/main/res/layout/seek_bar_preference.xml
deleted file mode 100644
index 0be9ccbb4..000000000
--- a/app/src/main/res/layout/seek_bar_preference.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:tools="http://schemas.android.com/tools"
-                android:id="@android:id/widget_frame"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:padding="4dp">
-
-    <android.support.v7.widget.AppCompatSeekBar
-        android:id="@+id/seekBarPrefSeekBar"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true"
-        android:layout_centerVertical="true"
-        android:layout_margin="4dp"
-        android:layout_toEndOf="@+id/seekBarPrefValue"
-        android:layout_toRightOf="@+id/seekBarPrefValue"/>
-
-    <TextView
-        android:id="@+id/seekBarPrefValue"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_centerVertical="true"
-        android:layout_margin="4dp"
-        android:gravity="end"
-        tools:text="16"/>
-
-</RelativeLayout>
diff --git a/app/src/main/res/layout/slide.xml b/app/src/main/res/layout/slide.xml
deleted file mode 100644
index 3c4792fe1..000000000
--- a/app/src/main/res/layout/slide.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/md_light_cards">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="?attr/colorPrimary"
-            android:orientation="vertical"
-            android:padding="32dp">
-
-            <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-                      android:id="@+id/title"
-                      android:layout_width="match_parent"
-                      android:layout_height="wrap_content"
-                      android:layout_marginBottom="32dp"
-                      android:text="@string/slideAccountCoreTitle"
-                      android:textColor="@android:color/white"
-                      android:textSize="28sp"
-                      android:textStyle="bold"/>
-
-            <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-                      android:id="@+id/description"
-                      android:layout_width="match_parent"
-                      android:layout_height="wrap_content"
-                      android:text="@string/slideAccountCoreDescription"
-                      android:textColor="@android:color/white"
-                      android:textSize="16sp"/>
-
-        </LinearLayout>
-
-        <FrameLayout
-            android:id="@+id/content_host"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-
-    </LinearLayout>
-
-</ScrollView>
diff --git a/app/src/main/res/layout/slide_account_core.xml b/app/src/main/res/layout/slide_account_core.xml
deleted file mode 100644
index ad1e12330..000000000
--- a/app/src/main/res/layout/slide_account_core.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:padding="32dp">
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/labelCoreHostname">
-
-        <android.support.design.widget.TextInputEditText
-            android:id="@+id/host"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:inputType="textUri"/>
-    </android.support.design.widget.TextInputLayout>
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/labelCorePort">
-
-        <android.support.design.widget.TextInputEditText
-            android:id="@+id/port"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:inputType="number"
-            android:text="@string/defaultPort"/>
-    </android.support.design.widget.TextInputLayout>
-
-</LinearLayout>
diff --git a/app/src/main/res/layout/slide_account_name.xml b/app/src/main/res/layout/slide_account_name.xml
deleted file mode 100644
index d1b9105df..000000000
--- a/app/src/main/res/layout/slide_account_name.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:padding="32dp">
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/labelAccountName">
-
-        <android.support.design.widget.TextInputEditText
-            android:id="@+id/name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-    </android.support.design.widget.TextInputLayout>
-
-</LinearLayout>
diff --git a/app/src/main/res/layout/slide_account_user.xml b/app/src/main/res/layout/slide_account_user.xml
deleted file mode 100644
index 4ccebf313..000000000
--- a/app/src/main/res/layout/slide_account_user.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:padding="32dp">
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/labelAccountUsername">
-
-        <android.support.design.widget.TextInputEditText
-            android:id="@+id/user"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:inputType="textVisiblePassword"/>
-    </android.support.design.widget.TextInputLayout>
-
-    <android.support.design.widget.TextInputLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/labelAccountPassword">
-
-        <android.support.design.widget.TextInputEditText
-            android:id="@+id/pass"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:inputType="textPassword"/>
-    </android.support.design.widget.TextInputLayout>
-
-</LinearLayout>
diff --git a/app/src/main/res/layout/slide_core_setup_backend.xml b/app/src/main/res/layout/slide_core_setup_backend.xml
deleted file mode 100644
index c74f19d5f..000000000
--- a/app/src/main/res/layout/slide_core_setup_backend.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="400dp"
-    android:padding="32dp">
-
-    <LinearLayout
-        android:id="@+id/container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"/>
-</ScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/layout/slide_select.xml b/app/src/main/res/layout/slide_select.xml
deleted file mode 100644
index baecf3099..000000000
--- a/app/src/main/res/layout/slide_select.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<android.support.v7.widget.RecyclerView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="400dp"/>
diff --git a/app/src/main/res/layout/widget_actionbar.xml b/app/src/main/res/layout/widget_actionbar.xml
deleted file mode 100644
index 70e48d851..000000000
--- a/app/src/main/res/layout/widget_actionbar.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<android.support.design.widget.AppBarLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:theme="?attr/actionBarTheme">
-
-    <android.support.v7.widget.Toolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="?attr/actionBarSize"
-        android:background="?attr/colorPrimary"
-        app:contentInsetStartWithNavigation="0dp"
-        app:popupTheme="@style/AppTheme.PopupOverlay">
-
-        <LinearLayout
-            android:id="@+id/toolbar_action_area"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            android:background="?attr/selectableItemBackgroundBorderless"
-            android:clickable="true"
-            android:gravity="center_vertical|start"
-            android:minHeight="?attr/actionBarSize"
-            android:orientation="vertical"
-            android:paddingLeft="@dimen/action_bar_default_padding_start_material"
-            android:paddingStart="@dimen/action_bar_default_padding_start_material">
-
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:layout_marginTop="-2dp"
-                android:baselineAligned="false"
-                android:gravity="center_vertical">
-
-                <TextView
-                    android:id="@+id/key"
-                    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-                    android:layout_width="16dp"
-                    android:layout_height="16dp"
-                    android:layout_marginEnd="2dp"
-                    android:layout_marginRight="2dp"
-                    android:layout_marginTop="2dp"
-                    android:gravity="center"
-                    android:textSize="16sp"
-                    android:visibility="gone"/>
-
-                <TextView
-                    android:id="@+id/toolbar_title"
-                    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:ellipsize="end"
-                    android:gravity="center_vertical"
-                    android:singleLine="true"
-                    android:text="@string/appName"/>
-
-            </LinearLayout>
-
-            <TextView
-                android:id="@+id/toolbar_subtitle"
-                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="-3dp"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:visibility="gone"/>
-        </LinearLayout>
-
-    </android.support.v7.widget.Toolbar>
-
-</android.support.design.widget.AppBarLayout>
diff --git a/app/src/main/res/layout/widget_buffer.xml b/app/src/main/res/layout/widget_buffer.xml
deleted file mode 100644
index c0725f0c4..000000000
--- a/app/src/main/res/layout/widget_buffer.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?selectableItemBackground"
-    android:clickable="true">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/material_drawer_item_secondary"
-        android:orientation="horizontal"
-        android:paddingEnd="@dimen/material_drawer_vertical_padding"
-        android:paddingLeft="@dimen/material_drawer_vertical_padding"
-        android:paddingRight="@dimen/material_drawer_vertical_padding"
-        android:paddingStart="@dimen/material_drawer_vertical_padding">
-
-        <FrameLayout
-            android:layout_width="56dp"
-            android:layout_height="match_parent">
-
-            <ImageView
-                android:id="@+id/material_drawer_icon"
-                android:layout_width="20dp"
-                android:layout_height="20dp"
-                android:layout_gravity="center_vertical|start"
-                android:layout_marginBottom="@dimen/material_drawer_item_secondary_icon_padding"
-                android:layout_marginTop="@dimen/material_drawer_item_secondary_icon_padding"/>
-
-        </FrameLayout>
-
-        <LinearLayout
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1"
-            android:gravity="center_vertical|start"
-            android:orientation="vertical">
-
-            <TextView
-                android:id="@+id/material_drawer_name"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:fontFamily="sans-serif-medium"
-                android:gravity="center_vertical|start"
-                android:lines="1"
-                android:singleLine="true"
-                android:textSize="@dimen/material_drawer_item_secondary_text"
-                tools:text="Some secondary text"/>
-
-            <TextView
-                android:id="@+id/material_drawer_description"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:fontFamily="sans-serif"
-                android:gravity="center_vertical|start"
-                android:lines="1"
-                android:singleLine="true"
-                android:textSize="@dimen/material_drawer_item_secondary_description"
-                tools:text="Some drawer text"/>
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:id="@+id/material_drawer_badge_container"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:background="@drawable/badge"
-            android:gravity="center"
-            android:padding="6dp">
-
-            <TextView
-                android:id="@+id/material_drawer_badge"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:fontFamily="sans-serif"
-                android:gravity="center"
-                android:lines="1"
-                android:minWidth="20dp"
-                android:paddingLeft="1dp"
-                android:paddingRight="1dp"
-                android:singleLine="true"
-                android:textColor="@color/md_white_1000"
-                android:textSize="@dimen/material_drawer_item_secondary_text"
-                tools:text="99+"/>
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_channel_mode.xml b/app/src/main/res/layout/widget_channel_mode.xml
deleted file mode 100644
index 405cd25ef..000000000
--- a/app/src/main/res/layout/widget_channel_mode.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<android.support.v7.widget.CardView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_margin="4dp"
-    app:cardBackgroundColor="?attr/colorBackgroundCard"
-    app:cardUseCompatPadding="true"
-    app:contentPaddingBottom="16dp"
-    app:contentPaddingLeft="16dp"
-    app:contentPaddingRight="16dp"
-    app:contentPaddingTop="16dp">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
-            android:textColor="?attr/colorForeground"/>
-
-        <TextView
-            android:id="@+id/description"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-            android:textColor="?attr/colorForeground"/>
-
-        <TextView
-            android:id="@+id/value"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
-            android:textColor="?attr/colorForeground"
-            android:visibility="gone"/>
-
-    </LinearLayout>
-
-</android.support.v7.widget.CardView>
diff --git a/app/src/main/res/layout/widget_chatlist.xml b/app/src/main/res/layout/widget_chatlist.xml
deleted file mode 100644
index 0141e5179..000000000
--- a/app/src/main/res/layout/widget_chatlist.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-             android:layout_width="match_parent"
-             android:layout_height="56dp"
-             android:background="?attr/selectableItemBackground"
-             android:clickable="true"
-             android:paddingLeft="16dp"
-             android:paddingRight="16dp">
-
-    <TextView
-        android:id="@+id/chatlist_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="16sp"/>
-</FrameLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_action.xml b/app/src/main/res/layout/widget_chatmessage_action.xml
deleted file mode 100644
index b98b974ff..000000000
--- a/app/src/main/res/layout/widget_chatmessage_action.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:clickable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace"/>
-
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:clickable="true"
-        android:textColor="?attr/colorForegroundAction"
-        android:textIsSelectable="true"
-        android:textStyle="italic"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_error.xml b/app/src/main/res/layout/widget_chatmessage_error.xml
deleted file mode 100644
index 33be8ade0..000000000
--- a/app/src/main/res/layout/widget_chatmessage_error.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?attr/colorBackgroundSecondary"
-    android:clickable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace"/>
-
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:clickable="true"
-        android:textColor="?attr/colorForegroundError"
-        android:textIsSelectable="true"
-        android:textStyle="italic"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_markerline.xml b/app/src/main/res/layout/widget_chatmessage_markerline.xml
deleted file mode 100644
index bfbbd490f..000000000
--- a/app/src/main/res/layout/widget_chatmessage_markerline.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<View
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="8dp"
-    android:background="@color/md_red_500"/>
diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml
deleted file mode 100644
index a96ef1347..000000000
--- a/app/src/main/res/layout/widget_chatmessage_plain.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:clickable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace"/>
-
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:clickable="true"
-        android:textColor="?attr/colorForeground"
-        android:textIsSelectable="true"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_chatmessage_server.xml b/app/src/main/res/layout/widget_chatmessage_server.xml
deleted file mode 100644
index 3d0424d49..000000000
--- a/app/src/main/res/layout/widget_chatmessage_server.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?attr/colorBackgroundSecondary"
-    android:clickable="true"
-    android:gravity="top"
-    android:orientation="horizontal"
-    android:paddingBottom="@dimen/message_vertical"
-    android:paddingEnd="@dimen/message_horizontal"
-    android:paddingLeft="@dimen/message_horizontal"
-    android:paddingRight="@dimen/message_horizontal"
-    android:paddingStart="@dimen/message_horizontal"
-    android:paddingTop="@dimen/message_vertical"
-    android:textAppearance="?android:attr/textAppearanceListItemSmall">
-
-    <TextView
-        android:id="@+id/time"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_horizontal"
-        android:layout_marginRight="@dimen/message_horizontal"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:typeface="monospace"/>
-
-    <TextView
-        android:id="@+id/content"
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:clickable="true"
-        android:textColor="?attr/colorForegroundSecondary"
-        android:textIsSelectable="true"
-        android:textStyle="italic"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_core_account.xml b/app/src/main/res/layout/widget_core_account.xml
deleted file mode 100644
index eed51d830..000000000
--- a/app/src/main/res/layout/widget_core_account.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/material_drawer_item_profile"
-    android:background="?attr/selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal">
-
-    <android.support.v7.widget.AppCompatRadioButton
-        android:id="@+id/account_select"
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_gravity="center_vertical"
-        android:background="@android:color/transparent"/>
-
-    <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_margin="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/account_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_profile_text"/>
-
-        <TextView
-            android:id="@+id/account_description"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_profile_description"/>
-    </LinearLayout>
-
-    <android.support.v7.widget.AppCompatImageButton
-        android:id="@+id/account_delete"
-        style="?attr/buttonStyleSmall"
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_gravity="center_vertical"
-        android:background="?attr/selectableItemBackgroundBorderless"
-        android:tint="?attr/colorFill"
-        app:srcCompat="@drawable/ic_delete"/>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_core_account_add.xml b/app/src/main/res/layout/widget_core_account_add.xml
deleted file mode 100644
index bef572b71..000000000
--- a/app/src/main/res/layout/widget_core_account_add.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/material_drawer_item_profile"
-    android:background="?attr/selectableItemBackground"
-    android:orientation="horizontal"
-    android:paddingEnd="@dimen/material_drawer_vertical_padding"
-    android:paddingLeft="@dimen/material_drawer_vertical_padding"
-    android:paddingRight="@dimen/material_drawer_vertical_padding"
-    android:paddingStart="@dimen/material_drawer_vertical_padding">
-
-    <LinearLayout
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile"
-        android:paddingBottom="@dimen/material_drawer_item_profile_icon_padding"
-        android:paddingEnd="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:paddingLeft="0dp"
-        android:paddingRight="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:paddingStart="0dp"
-        android:paddingTop="@dimen/material_drawer_item_profile_icon_padding">
-
-        <ImageView
-            android:layout_width="32dp"
-            android:layout_height="32dp"
-            android:layout_gravity="center_vertical"
-            android:tint="?attr/colorFill"
-            app:srcCompat="@drawable/ic_add"/>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical"
-        android:paddingEnd="0dp"
-        android:paddingLeft="@dimen/material_drawer_padding"
-        android:paddingRight="0dp"
-        android:paddingStart="@dimen/material_drawer_padding">
-
-        <TextView
-            android:id="@+id/account_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:paddingEnd="@dimen/material_drawer_item_primary_icon_padding_right"
-            android:paddingRight="@dimen/material_drawer_item_primary_icon_padding_right"
-            android:singleLine="true"
-            android:text="@string/actionAddAccount"
-            android:textSize="@dimen/material_drawer_item_profile_text"/>
-    </LinearLayout>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_core_backend.xml b/app/src/main/res/layout/widget_core_backend.xml
deleted file mode 100644
index 050825bfe..000000000
--- a/app/src/main/res/layout/widget_core_backend.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:background="?attr/selectableItemBackground"
-              android:clickable="true"
-              android:orientation="horizontal">
-
-    <android.support.v7.widget.AppCompatRadioButton
-        android:id="@+id/backend_select"
-        android:layout_width="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_height="@dimen/material_drawer_item_profile_icon_width"
-        android:layout_gravity="top"
-        android:layout_marginBottom="12dp"
-        android:layout_marginTop="12dp"
-        android:background="@android:color/transparent"/>
-
-    <LinearLayout
-        android:layout_width="0dip"
-        android:layout_height="wrap_content"
-        android:layout_margin="@dimen/material_drawer_item_profile_icon_padding_right"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:minHeight="56dp"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/backend_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_profile_text"/>
-
-        <TextView
-            android:id="@+id/backend_description"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif"
-            android:gravity="center_vertical|start"
-            android:textSize="@dimen/material_drawer_item_profile_description"/>
-    </LinearLayout>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_drawer_network.xml b/app/src/main/res/layout/widget_drawer_network.xml
deleted file mode 100644
index 99ccea32a..000000000
--- a/app/src/main/res/layout/widget_drawer_network.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/material_drawer_item_primary"
-    android:background="?attr/selectableItemBackground"
-    android:clickable="true"
-    android:gravity="center_vertical|start"
-    android:orientation="vertical"
-    android:paddingEnd="@dimen/material_drawer_vertical_padding"
-    android:paddingLeft="@dimen/material_drawer_vertical_padding"
-    android:paddingRight="@dimen/material_drawer_vertical_padding"
-    android:paddingStart="@dimen/material_drawer_vertical_padding">
-
-    <TextView
-        android:id="@+id/material_drawer_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:fontFamily="sans-serif-medium"
-        android:gravity="center_vertical|start"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="@dimen/material_drawer_item_primary_text"
-        tools:text="Some drawer text"/>
-
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_editor.xml b/app/src/main/res/layout/widget_editor.xml
deleted file mode 100644
index 53b6ec420..000000000
--- a/app/src/main/res/layout/widget_editor.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:showIn="@layout/widget_slider">
-
-    <ScrollView
-        android:id="@+id/chatline_scroller"
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_above="@+id/formatting_toolbar_container"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentTop="true"
-        android:layout_toLeftOf="@+id/send"
-        android:layout_toStartOf="@+id/send">
-
-        <android.support.v7.widget.AppCompatEditText
-            android:id="@+id/chatline"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="@android:color/transparent"
-            android:gravity="top"
-            android:hint="@string/labelPlaceholder"
-            android:inputType="textCapSentences|textShortMessage|textAutoCorrect"
-            android:paddingBottom="@dimen/chatlinePaddingVertical"
-            android:paddingLeft="20dp"
-            android:paddingRight="20dp"
-            android:paddingTop="@dimen/chatlinePaddingVertical"
-            android:textColor="?attr/colorForeground"
-            android:textSize="16sp"/>
-
-    </ScrollView>
-
-    <android.support.v7.widget.AppCompatImageButton
-        android:id="@+id/send"
-        style="?attr/buttonStyleSmall"
-        android:layout_width="?attr/actionBarSize"
-        android:layout_height="?attr/actionBarSize"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentTop="true"
-        android:layout_gravity="top"
-        android:background="?attr/selectableItemBackgroundBorderless"
-        android:padding="12dp"
-        android:scaleType="fitXY"
-        android:tint="?attr/colorAccent"
-        app:srcCompat="@drawable/ic_send"
-        app:theme="@style/RippleOverlay"/>
-
-    <android.support.design.widget.AppBarLayout
-        android:id="@+id/formatting_toolbar_container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:background="?attr/colorBackgroundCard">
-
-        <android.support.v7.widget.Toolbar
-            android:id="@+id/formatting_toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize">
-
-            <android.support.v7.widget.ActionMenuView
-                android:id="@+id/formatting_menu"
-                android:layout_width="wrap_content"
-                android:layout_height="?attr/actionBarSize"/>
-
-        </android.support.v7.widget.Toolbar>
-
-    </android.support.design.widget.AppBarLayout>
-
-</RelativeLayout>
diff --git a/app/src/main/res/layout/widget_identitynick.xml b/app/src/main/res/layout/widget_identitynick.xml
deleted file mode 100644
index a11d229a1..000000000
--- a/app/src/main/res/layout/widget_identitynick.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="?listPreferredItemPaddingLeft"
-    android:paddingRight="?listPreferredItemPaddingRight">
-
-    <ImageView
-        android:id="@+id/drag_handle"
-        android:layout_width="24dp"
-        android:layout_height="24dp"
-        android:layout_gravity="center_vertical"
-        android:tint="?attr/colorFill"
-        app:srcCompat="@drawable/ic_reorder"/>
-
-    <TextView
-        android:id="@+id/text"
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="16dp"
-        android:layout_marginRight="16dp"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="16sp"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_input_boolean.xml b/app/src/main/res/layout/widget_input_boolean.xml
deleted file mode 100644
index 61734a309..000000000
--- a/app/src/main/res/layout/widget_input_boolean.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<android.support.v7.widget.AppCompatCheckBox
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/checkBox"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_input_string.xml b/app/src/main/res/layout/widget_input_string.xml
deleted file mode 100644
index f641966db..000000000
--- a/app/src/main/res/layout/widget_input_string.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<android.support.design.widget.TextInputLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/inputLayout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <android.support.design.widget.TextInputEditText
-        android:id="@+id/editText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
-</android.support.design.widget.TextInputLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_networkserver.xml b/app/src/main/res/layout/widget_networkserver.xml
deleted file mode 100644
index 1102869b2..000000000
--- a/app/src/main/res/layout/widget_networkserver.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="?listPreferredItemPaddingLeft"
-    android:paddingRight="?listPreferredItemPaddingRight">
-
-    <ImageView
-        android:id="@+id/lock"
-        android:layout_width="24dp"
-        android:layout_height="24dp"
-        android:layout_gravity="center_vertical"
-        android:tint="?colorFill"
-        app:srcCompat="@drawable/ic_lock"/>
-
-    <TextView
-        android:id="@+id/text"
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="16dp"
-        android:layout_marginRight="16dp"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="16sp"/>
-
-    <ImageView
-        android:id="@+id/drag_handle"
-        android:layout_width="24dp"
-        android:layout_height="24dp"
-        android:layout_gravity="center_vertical"
-        android:src="@drawable/ic_reorder"
-        android:tint="?attr/colorFill"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_nick.xml b/app/src/main/res/layout/widget_nick.xml
deleted file mode 100644
index 9e9ee3ff8..000000000
--- a/app/src/main/res/layout/widget_nick.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="?listPreferredItemPaddingLeft"
-    android:paddingRight="?listPreferredItemPaddingRight">
-
-    <TextView
-        android:id="@+id/mode"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:layout_marginBottom="8dp"
-        android:layout_marginTop="8dp"
-        android:background="@drawable/badge"
-        android:fontFamily="monospace"
-        android:gravity="center"
-        android:minWidth="40dp"
-        android:textColor="?colorBackground"
-        android:textStyle="bold"
-        tools:text="\@"
-        />
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="16dp"
-        android:layout_marginStart="16dp"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/nick"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_primary_text"
-            tools:text="justJanne"/>
-
-        <TextView
-            android:id="@+id/realname"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_primary_description"
-            tools:text="Janne Koschinski: https://kuschku.de/"/>
-    </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_nick_away.xml b/app/src/main/res/layout/widget_nick_away.xml
deleted file mode 100644
index 5b0fb2f3f..000000000
--- a/app/src/main/res/layout/widget_nick_away.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="56dp"
-    android:background="?selectableItemBackground"
-    android:clickable="true"
-    android:orientation="horizontal"
-    android:paddingLeft="?listPreferredItemPaddingLeft"
-    android:paddingRight="?listPreferredItemPaddingRight">
-
-    <TextView
-        android:id="@+id/mode"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:layout_marginBottom="8dp"
-        android:layout_marginTop="8dp"
-        android:background="@drawable/badge"
-        android:fontFamily="monospace"
-        android:gravity="center"
-        android:minWidth="40dp"
-        android:textColor="?colorBackground"
-        android:textStyle="bold"
-        tools:text="\@"
-        />
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="16dp"
-        android:layout_marginStart="16dp"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/nick"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textColor="?colorForegroundSecondary"
-            android:textSize="@dimen/material_drawer_item_primary_text"
-            android:textStyle="italic"
-            tools:text="justJanne"/>
-
-        <TextView
-            android:id="@+id/realname"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textColor="?colorForegroundSecondary"
-            android:textSize="@dimen/material_drawer_item_primary_description"
-            android:textStyle="italic"
-            tools:text="Janne Koschinski: https://kuschku.de/"/>
-    </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_settings_alias.xml b/app/src/main/res/layout/widget_settings_alias.xml
deleted file mode 100644
index 61adbd59b..000000000
--- a/app/src/main/res/layout/widget_settings_alias.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="56dp"
-              android:background="?selectableItemBackground"
-              android:clickable="true"
-              android:orientation="horizontal"
-              android:paddingLeft="?listPreferredItemPaddingLeft"
-              android:paddingRight="?listPreferredItemPaddingRight">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:orientation="vertical">
-
-        <TextView
-            android:id="@+id/alias_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif-medium"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_profile_text"/>
-
-        <TextView
-            android:id="@+id/alias_description"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:fontFamily="sans-serif"
-            android:gravity="center_vertical|start"
-            android:lines="1"
-            android:singleLine="true"
-            android:textSize="@dimen/material_drawer_item_profile_description"/>
-    </LinearLayout>
-</LinearLayout>
diff --git a/app/src/main/res/layout/widget_settings_ignorerule.xml b/app/src/main/res/layout/widget_settings_ignorerule.xml
deleted file mode 100644
index 649420af2..000000000
--- a/app/src/main/res/layout/widget_settings_ignorerule.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="match_parent"
-              android:layout_height="56dp"
-              android:background="?selectableItemBackground"
-              android:clickable="true"
-              android:orientation="horizontal"
-              android:paddingLeft="?listPreferredItemPaddingLeft"
-              android:paddingRight="?listPreferredItemPaddingRight">
-
-    <TextView
-        android:id="@+id/text"
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_marginLeft="16dp"
-        android:layout_marginRight="16dp"
-        android:layout_weight="1"
-        android:gravity="center_vertical|start"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="16sp"/>
-
-    <android.support.v7.widget.SwitchCompat
-        android:id="@+id/active"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"/>
-
-</LinearLayout>
-
diff --git a/app/src/main/res/layout/widget_settings_network.xml b/app/src/main/res/layout/widget_settings_network.xml
deleted file mode 100644
index 66cc8d23f..000000000
--- a/app/src/main/res/layout/widget_settings_network.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-             android:layout_width="match_parent"
-             android:layout_height="56dp"
-             android:background="?attr/selectableItemBackground"
-             android:clickable="true"
-             android:paddingLeft="16dp"
-             android:paddingRight="16dp">
-
-    <TextView
-        android:id="@+id/network_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:lines="1"
-        android:singleLine="true"
-        android:textSize="16sp"/>
-</FrameLayout>
-
diff --git a/app/src/main/res/layout/widget_slider.xml b/app/src/main/res/layout/widget_slider.xml
deleted file mode 100644
index 3320c668d..000000000
--- a/app/src/main/res/layout/widget_slider.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<com.sothree.slidinguppanel.SlidingUpPanelLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/sliding_layout_history"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:background="?attr/colorBackgroundCard"
-    android:clickable="false"
-    android:focusable="true"
-    android:gravity="bottom"
-    app:umanoFadeColor="?attr/colorBackground"
-    app:umanoOverlay="true"
-    app:umanoPanelHeight="0dip"
-    app:umanoScrollableView="@+id/msg_history"
-    app:umanoShadowHeight="0.0dip"
-    tools:showIn="@layout/activity_main">
-
-
-    <include layout="@layout/widget_editor"/>
-
-    <FrameLayout
-        android:id="@+id/card_panel"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
-
-        <android.support.v7.widget.CardView
-            style="?attr/cardStyle"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            android:layout_marginBottom="16.0dip"
-            android:layout_marginLeft="16.0dip"
-            android:layout_marginRight="16.0dip"
-            android:layout_marginTop="16.0dip"
-            app:cardBackgroundColor="?attr/colorBackgroundCard">
-
-            <LinearLayout
-                android:layout_width="fill_parent"
-                android:layout_height="fill_parent"
-                android:orientation="vertical">
-
-                <TextView
-                    android:layout_width="fill_parent"
-                    android:layout_height="48.0dip"
-                    android:gravity="center_vertical"
-                    android:paddingLeft="16.0dip"
-                    android:paddingRight="16.0dip"
-                    android:text="@string/titleHistory"
-                    android:textAppearance="@style/TextAppearance.AppCompat.Body2"
-                    android:textColor="?attr/colorForegroundSecondary"/>
-
-                <android.support.v7.widget.RecyclerView
-                    android:id="@+id/msg_history"
-                    android:layout_width="fill_parent"
-                    android:layout_height="fill_parent"/>
-
-            </LinearLayout>
-
-        </android.support.v7.widget.CardView>
-
-    </FrameLayout>
-
-</com.sothree.slidinguppanel.SlidingUpPanelLayout>
diff --git a/app/src/main/res/layout/widget_spinner_item_inline.xml b/app/src/main/res/layout/widget_spinner_item_inline.xml
deleted file mode 100644
index 53e21e0ce..000000000
--- a/app/src/main/res/layout/widget_spinner_item_inline.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-          android:id="@android:id/text1"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center_vertical"
-          android:minHeight="48dp"
-          android:textAppearance="?android:attr/textAppearanceListItemSmall"/>
diff --git a/app/src/main/res/layout/widget_spinner_item_toolbar.xml b/app/src/main/res/layout/widget_spinner_item_toolbar.xml
deleted file mode 100644
index f7b95bc32..000000000
--- a/app/src/main/res/layout/widget_spinner_item_toolbar.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-          android:id="@android:id/text1"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center_vertical"
-          android:minHeight="?attr/actionBarSize"
-          android:paddingLeft="16dp"
-          android:paddingRight="16dp"
-          android:textAppearance="?android:attr/textAppearanceListItemSmall"/>
diff --git a/app/src/main/res/menu/chat.xml b/app/src/main/res/menu/chat.xml
deleted file mode 100644
index 85f7aca9c..000000000
--- a/app/src/main/res/menu/chat.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/action_search"
-        android:title="@string/actionSearch"
-        app:actionViewClass="android.support.v7.widget.SearchView"
-        app:showAsAction="never|collapseActionView"/>
-    <item
-        android:id="@+id/action_hide_events"
-        android:title="@string/actionHideEvents"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_settings"
-        android:title="@string/actionSettings"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_networks"
-        android:title="@string/actionNetworks"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_identities"
-        android:title="@string/actionIdentities"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_ignorelist"
-        android:title="@string/actionIgnore"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_aliaslist"
-        android:title="@string/actionAlias"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_coreinfo"
-        android:title="@string/actionCore"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_reauth"
-        android:title="@string/actionDisconnect"
-        app:showAsAction="never"/>
-</menu>
diff --git a/app/src/main/res/menu/chatlist.xml b/app/src/main/res/menu/chatlist.xml
deleted file mode 100644
index 15df77cfa..000000000
--- a/app/src/main/res/menu/chatlist.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/action_join_channel"
-        android:icon="@drawable/ic_add"
-        android:title="@string/actionJoinChannel"
-        app:showAsAction="ifRoom"/>
-    <item
-        android:id="@+id/action_show_all"
-        android:checkable="true"
-        android:title="@string/actionShowHidden"
-        app:showAsAction="never"/>
-    <item
-        android:id="@+id/action_manage_chat_lists"
-        android:title="@string/actionManageChatLists"
-        app:showAsAction="never"/>
-</menu>
diff --git a/app/src/main/res/menu/confirm.xml b/app/src/main/res/menu/confirm.xml
deleted file mode 100644
index 59afd08b1..000000000
--- a/app/src/main/res/menu/confirm.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/action_confirm"
-        android:icon="@drawable/ic_check"
-        android:title="@string/actionSave"
-        app:showAsAction="always"/>
-</menu>
\ No newline at end of file
diff --git a/app/src/main/res/menu/confirm_delete.xml b/app/src/main/res/menu/confirm_delete.xml
deleted file mode 100644
index 5735b5b21..000000000
--- a/app/src/main/res/menu/confirm_delete.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/action_delete"
-        android:icon="@drawable/ic_delete"
-        android:title="@string/actionDelete"
-        app:showAsAction="always"/>
-    <item
-        android:id="@+id/action_confirm"
-        android:icon="@drawable/ic_check"
-        android:title="@string/actionSave"
-        app:showAsAction="always"/>
-</menu>
\ No newline at end of file
diff --git a/app/src/main/res/menu/context_buffer_network.xml b/app/src/main/res/menu/context_buffer_network.xml
deleted file mode 100644
index f3b4c4845..000000000
--- a/app/src/main/res/menu/context_buffer_network.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <group
-        android:id="@+id/context_group_network">
-        <item
-            android:id="@+id/context_menu_connect"
-            android:title="@string/actionConnect"/>
-        <item
-            android:id="@+id/context_menu_disconnect"
-            android:title="@string/actionDisconnect"/>
-    </group>
-    <group
-        android:id="@+id/context_group_buffer">
-        <item
-            android:id="@+id/context_menu_join"
-            android:title="@string/actionJoin"/>
-        <item
-            android:id="@+id/context_menu_part"
-            android:title="@string/actionPart"/>
-        <item
-            android:id="@+id/context_menu_delete"
-            android:title="@string/actionDelete"/>
-        <item
-            android:id="@+id/context_menu_unhide"
-            android:title="@string/actionUnhide"/>
-        <item
-            android:id="@+id/context_menu_hide_temp"
-            android:title="@string/actionHideTemp"/>
-        <item
-            android:id="@+id/context_menu_hide_perm"
-            android:title="@string/actionHidePerm"/>
-    </group>
-</menu>
\ No newline at end of file
diff --git a/app/src/main/res/menu/formatting.xml b/app/src/main/res/menu/formatting.xml
deleted file mode 100644
index 7fe406abb..000000000
--- a/app/src/main/res/menu/formatting.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
-    <item
-        android:id="@+id/format_bold"
-        android:icon="@drawable/ic_format_bold"
-        android:title="@string/formatBold"
-        app:showAsAction="always"/>
-    <item
-        android:id="@+id/format_italic"
-        android:icon="@drawable/ic_format_italic"
-        android:title="@string/formatItalic"
-        app:showAsAction="always"/>
-    <item
-        android:id="@+id/format_underline"
-        android:icon="@drawable/ic_format_underline"
-        android:title="@string/formatUnderline"
-        app:showAsAction="always"/>
-    <item
-        android:id="@+id/format_paint"
-        android:icon="@drawable/ic_format_paint"
-        android:title="@string/formatColor"
-        app:showAsAction="always">
-        <menu>
-            <item
-                android:id="@+id/paint_clear"
-                android:title="@string/colornameClear"/>
-            <item
-                android:id="@+id/paint_mircColor0"
-                android:icon="?attr/mircColor0"
-                android:title="@string/colornameMircColor0"/>
-            <item
-                android:id="@+id/paint_mircColor1"
-                android:icon="?attr/mircColor1"
-                android:title="@string/colornameMircColor1"/>
-            <item
-                android:id="@+id/paint_mircColor2"
-                android:icon="?attr/mircColor2"
-                android:title="@string/colornameMircColor2"/>
-            <item
-                android:id="@+id/paint_mircColor3"
-                android:icon="?attr/mircColor3"
-                android:title="@string/colornameMircColor3"/>
-            <item
-                android:id="@+id/paint_mircColor4"
-                android:icon="?attr/mircColor4"
-                android:title="@string/colornameMircColor4"/>
-            <item
-                android:id="@+id/paint_mircColor5"
-                android:icon="?attr/mircColor5"
-                android:title="@string/colornameMircColor5"/>
-            <item
-                android:id="@+id/paint_mircColor6"
-                android:icon="?attr/mircColor6"
-                android:title="@string/colornameMircColor6"/>
-            <item
-                android:id="@+id/paint_mircColor7"
-                android:icon="?attr/mircColor7"
-                android:title="@string/colornameMircColor7"/>
-            <item
-                android:id="@+id/paint_mircColor8"
-                android:icon="?attr/mircColor8"
-                android:title="@string/colornameMircColor8"/>
-            <item
-                android:id="@+id/paint_mircColor9"
-                android:icon="?attr/mircColor9"
-                android:title="@string/colornameMircColor9"/>
-            <item
-                android:id="@+id/paint_mircColorA"
-                android:icon="?attr/mircColorA"
-                android:title="@string/colornameMircColorA"/>
-            <item
-                android:id="@+id/paint_mircColorB"
-                android:icon="?attr/mircColorB"
-                android:title="@string/colornameMircColorB"/>
-            <item
-                android:id="@+id/paint_mircColorC"
-                android:icon="?attr/mircColorC"
-                android:title="@string/colornameMircColorC"/>
-            <item
-                android:id="@+id/paint_mircColorD"
-                android:icon="?attr/mircColorD"
-                android:title="@string/colornameMircColorD"/>
-            <item
-                android:id="@+id/paint_mircColorE"
-                android:icon="?attr/mircColorE"
-                android:title="@string/colornameMircColorE"/>
-            <item
-                android:id="@+id/paint_mircColorF"
-                android:icon="?attr/mircColorF"
-                android:title="@string/colornameMircColorF"/>
-        </menu>
-    </item>
-    <item
-        android:id="@+id/format_fill"
-        android:icon="@drawable/ic_format_fill"
-        android:title="@string/formatFill"
-        app:showAsAction="always">
-        <menu>
-            <item
-                android:id="@+id/fill_clear"
-                android:title="@string/colornameClear"/>
-            <item
-                android:id="@+id/fill_mircColor0"
-                android:icon="?attr/mircColor0"
-                android:title="@string/colornameMircColor0"/>
-            <item
-                android:id="@+id/fill_mircColor1"
-                android:icon="?attr/mircColor1"
-                android:title="@string/colornameMircColor1"/>
-            <item
-                android:id="@+id/fill_mircColor2"
-                android:icon="?attr/mircColor2"
-                android:title="@string/colornameMircColor2"/>
-            <item
-                android:id="@+id/fill_mircColor3"
-                android:icon="?attr/mircColor3"
-                android:title="@string/colornameMircColor3"/>
-            <item
-                android:id="@+id/fill_mircColor4"
-                android:icon="?attr/mircColor4"
-                android:title="@string/colornameMircColor4"/>
-            <item
-                android:id="@+id/fill_mircColor5"
-                android:icon="?attr/mircColor5"
-                android:title="@string/colornameMircColor5"/>
-            <item
-                android:id="@+id/fill_mircColor6"
-                android:icon="?attr/mircColor6"
-                android:title="@string/colornameMircColor6"/>
-            <item
-                android:id="@+id/fill_mircColor7"
-                android:icon="?attr/mircColor7"
-                android:title="@string/colornameMircColor7"/>
-            <item
-                android:id="@+id/fill_mircColor8"
-                android:icon="?attr/mircColor8"
-                android:title="@string/colornameMircColor8"/>
-            <item
-                android:id="@+id/fill_mircColor9"
-                android:icon="?attr/mircColor9"
-                android:title="@string/colornameMircColor9"/>
-            <item
-                android:id="@+id/fill_mircColorA"
-                android:icon="?attr/mircColorA"
-                android:title="@string/colornameMircColorA"/>
-            <item
-                android:id="@+id/fill_mircColorB"
-                android:icon="?attr/mircColorB"
-                android:title="@string/colornameMircColorB"/>
-            <item
-                android:id="@+id/fill_mircColorC"
-                android:icon="?attr/mircColorC"
-                android:title="@string/colornameMircColorC"/>
-            <item
-                android:id="@+id/fill_mircColorD"
-                android:icon="?attr/mircColorD"
-                android:title="@string/colornameMircColorD"/>
-            <item
-                android:id="@+id/fill_mircColorE"
-                android:icon="?attr/mircColorE"
-                android:title="@string/colornameMircColorE"/>
-            <item
-                android:id="@+id/fill_mircColorF"
-                android:icon="?attr/mircColorF"
-                android:title="@string/colornameMircColorF"/>
-        </menu>
-    </item>
-    <item
-        android:id="@+id/action_history"
-        android:icon="@drawable/ic_history"
-        android:title="@string/actionHistory"
-        app:showAsAction="always"/>
-</menu>
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
new file mode 100644
index 000000000..270a5385a
--- /dev/null
+++ b/app/src/main/res/menu/main.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+  <item
+    android:id="@+id/settings"
+    android:title="Settings" />
+</menu>
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 000000000..a5974a6db
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+  <background android:drawable="@color/colorPrimary" />
+  <foreground android:drawable="@mipmap/ic_launcher_foreground" />
+</adaptive-icon>
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index a297d8b138c2dc4d71cd3885fb7a8e9e4df0433e..5d19d01e2a9565ff855235a4634b8bd24daaa613 100644
GIT binary patch
delta 3214
zcmV;93~}?U8O|AyI|~Uq000R(0q|s!N|8n=e@jV3K~#90?VEdWRMj2Fzvu4V-DDrh
z<^_ZhNCYAf6y!Y^1nXna6lb)pg6*_3XmzOdRi_NoVX&heo%$YI=_oP^rF68Q;{a*}
zc@#kcQF$~#l@K70CFHS5b~pRFdr$w^dw1{Iz4z|jO>ji_yOWu_=bU?fzw_DiJFj~K
zf8>-?PC4b2Q%*VMlv7Tbix@0pq}-J#D*b6nui<3&s;$+IqH(J@lc`+Wf~Z-6sGX&#
zK;1t|h_2%?+u7NqBz7wi(KgW2{KD}U?mnkcohBf%=;?#YBl&r63<M*bAX0UQk{U-f
zvY2Z{DGfGEU0UVYI+f{EBR#b|&k?xte=MRy4BvNf&Gj3g(nMa}y$O~<-twy36X4X0
zB|D;?ujO2NKt{?B2Ot3G^+&jIF56#$3I7Dngpz$x1yojRHTML<Hnj?qolwu$axA4J
zc#fdbWkp3H52u9#K;aFFXzvT+Lcf4W{Fdy8!E`V$dIR>dTC2IM3B~|LLm@64e@$(U
zvQjmJ$<Ao0!ezl-*OcJK8W(1cbHQphsg?^xqWGev2fI&qVaw5Ow0Qv#0!kCGjP#y#
z3PmX_p%AB*rx9Z61~P?{+<T@~*zx$H3fx*-29Bif5mvJa^J_+6e$5E{VF|^@$J+7I
z&K4Z)jDiw%sKYHyKuRTp0WyPAf0)nX$=fQibk=AX;G!yy5Zpd}3>HtTz~%!j_~VWi
zcmy+sV+Equ+f=(%{6<QL4ClH^2X_7TS}dEb4@VS52!a4X5FqNz)f^%CMcq}{{lr|%
zC=&r1jr*$RpOL{_Pud}708Fw2$=`3j+J!gnorHW#YB*3z(dF@C&xv+4f1dTAxhn`?
zPy_`~U^An-G!HYYUAXC*a+DQ0L6Yc>Ep_07N9(YBeFJtjhc8>mss5(L6DAbo-~D!f
zyfGR#>%mz#u@Ha%)fAXbTv8c||DL;qwI7|v_7i;wg9kuCDHp4NC@oU(CW0SNE5*aN
zj>pt-r757oLKMqhJBZ!qe<J|Lr}%4hIbhv(e_`*LGXu$O)DJOa2WR4le60WZq!c)T
zU>HwrZoqBNevbE!dl80Nx>pSj074Ls0`Gm<ja&ZQfHm(N#bA(~i7mVdZ$B^(H3boX
zidn(YlO`ZNFnVw-Jcrkp*1&FMqxX`>hr6HKiM9XfLWDB|gp;fge+@W*nCM7|h``!C
z?YQ&hL+JGQnYx|%W~^U68+p+|9nZ6qZVysQ4UC+w)QSb=m|X5)(t7&+xaawuINT=2
zzz_l%4i(km#J@=lWi_7n;;vU4&^-`fY)l<nj1>z;0ivMlSGGzsi|K<&PA{_acw|u}
zlO{x?c<A;0IN8Gkf1Dm1iGl=&QZOA%&I5qc?f_Q2^%aC@l(F@@`fE@|d`Rv^Ls?8}
zhnUVjNfj6<?w?-{ThffRVdqKg{W_4Q=Sb-)aN;7$3yR&RJy^f{EMv=&XU4DVDuFQD
zyN05nhnV!?2(WC%2qw?t4dD6hr$BkLVK`7GOLmjtfW*4hf3rK9;qe6-oA=&O1Jj@f
z5W?}Q5^YGoR!Wv`57G@W=_6}SRRPLfc}$sq?E4y?5IZ2JgF{6af+JF(KOkVk{_~8@
zF(nSnsd56L03bxPTW(N>dyuSTFtX~da;2ngJ=g;97GwhlfG(U^GR3=x+f(e`Fu5E=
zjDjj4WxJ6ze;#5QU}DCB>0{WLtE0z@Q=I{13nyWTg%eMg4jfOq2hrBUPWv;)mw||p
z*jaHX07SKWQo7krXC1_Tv?`Ykj4x%w>-f1|P?H$|H>_}CVMm$#W3B80c*3Yc5HXst
z7u1KOr_4i4V_Yh6SeWmv-ChvzmlY0`^3V4SGPX+#fAT?TG+r?UfKU*KMhp+mvW7g1
z$+9O+@4lcA8!IkDSSjHEfIrOc{_R#iesZAPe9$!ErlzcCv1Ek>)=4XG0^+;5p~FdB
zv2Xyu%q4GN#hBkrvUE>a>PZGi>Wo87OMQdvFEg?z9|UqY9~vC1nIMmsD-antlp<w$
z;qe6le~wekTog2Z4~d1FAQ)<wp%cY)q7-Q92{4XM8dD625x``Pog>R-Gk{Z7YQszS
z*5ZcAu?6V9rVc!@=}VmLi|y&;_ScSfGX9*sGysv9*g9n!l!Af)ksyFPfY(Pbq#mRU
zzf%|4sdjQ@5lU=a);*`#Zo$XDpN~aTMuH;*e;gsWacTuVT6Ggj%)z+f5{CtoD+(Cf
zCtG_#2_LVM$~I&;vV>sT#bj21)W)R)&3$aegy4=@l>n8-gABv!(Z%C2qL2+802t}A
z;jzV&K*d<Y?znCgOi5$VXQ$kt9G?P*IrEh-g)k7+4mU%9j11U&oBJ^sVt<Y0H%|c<
zf02Ie3<u=e3N~z%svTPlP87fq;K3WKnLJ-0j6J8j0FDi-*yAFFS>=VaZ&Q<@SxmEx
z;^Pg9*nZ*?lV4Ne!aZ}#L8RyRlp3F{F7>gSP^CIOeo(?;>AW$RoHYJyYiz-QU_orQ
z)9E?!;}v-mt*)&1Vrr}FzwLKJ6xsAAf0xa{XuA-bQ8e~eYE$`}`&tkY*z+C$2uB3G
z`RV^Ks@R1;{bVweCyErW{reOsZ%u)dy75I?IDi2_Mz$QX11H=8Y&(9DNiTNh;ms9w
zuyJyaNDl{~XuROXqnnOmz@O+z{k{Mmf9oKcx(PNsFasqHD`V^ZLuYWjQ;0Qde;D8Z
zx=&Wq->epXYj&K+!ihz2*%Jfo?1>|>>7n`f<=O`LMCtfL2addE+1%j9?vp*Ze!K$^
zqd0J;5B(7yn}0JGbH^7mc0Jxftp3+gP(EMktr@`4d0;nedofvUeG#mDzd7Z(+QO+7
z_;A%CTwOwds1V;<X~BsZ1Ka~)e{A`x7h8_?!QpUX*UI_$Q7wBgCyFAT*!Vfx2Q3ni
z491)^k9yOGn87WFGJor_UcCBgOA4ggvBlW^<YKH|QVo|`1c(UbRwNmYe7DQSWA&06
z99X>owPOmC>{7hE?JI0KCM^z?tL*qyIyl;pbe^ng-eaiD)1S1%ZsBm>e}Zw$!@fKV
zkH?o>iwAF=f)9?gVEdOB(a_S5?f??bQ=r&k!QARXESWwEcg(DSBhRd2pJLr7C-BsV
z=OA*{tl{VlCmC-w41tr%t=!g%&VdkCE*=ka(vse0<*}@8B9_%n1ORyaA@upfAOtA1
zSx{uRs??lNL=f=I)-Uklf2ZzYfRjZJ0*t{(b&A!C`!1oe)sL6&yb4vLQjcY271^z6
zp~yPx?!jXlk6`cF5JYLkoa)EW;Q&Jov2^)TC3~BFsQb$aJTk8s_b;qMae+O3<tpmw
z_hH?xQ+Q=h8~jmo?1hElfTP1G^AIyqMuo0FMDfhN9<1H(#?Pj?fAG^;qcOdz6c&p)
z<%I-gJ)v+I$6C6v<?wmD)7S-1gacq<rgGM=Ea2!gDx){d^rZK`jWVZCv|!z#Zmj#v
zjbfV_bE}+~P?m?v;ygI>%%D_+FDRh3H-K+C{WyHyhps_U+FQkrFoqvahGP(CGEpiD
zvG~?ex|fi&a;e1zf6xGW{1JTE<WZEC7I%uZ3#Byn$XfaRTY>{<tb<H_R?$YogURXg
z8)sT?o++Kygd=BI^QC8IN>_-q79!HRN@N>&nc(QH6;-=PXK6H2-QT*#Y#;etgqS(`
z7t~{|1fo_>2E*j>0F8<u((xxHlJAs)B%K6ON|~`L(Oh*nf7E16+?y6orqg^=Q^a@a
zmDdYq-ExRj&3zc0d8B3ySt`CzHUX4|P4T7?4p97iL*hjS<-aDVb$l_AOeqOaah?}8
z3nkgZ0kj8c+SS$M@4A2^qmRA2JZQ5G%h~m}B}X`HDww%+79BZfn-_K~Vo|FNC(CJ`
zqNyp|0fhCdfB5dH7r<y?(*egEz8>W>cX(m5W&;N>zMH34+FwUUM<Cp|@u0)~MZHrD
zgygAF9nLTwcU(cDZEbDAaO1{<j*E@;P6R^ipe`31;&I0nt^_3ak$MLm46)m<^v50F
zcR&CGsWAb`036_l0SHLxNdXqpa2~l{!Ad~tI9%_Pcp(k<W1lNraY*)#hI%I*45d5Q
z`Jn*<*l@euN&O+v*als#@DC9XAVCTpdHZvF`{8;g4FpMVuPUH#=im0eqZ$|(h}wNE
z?)(uGceVSzxqz;&)JM5FA#oCyQ%*VM^c~ax0rb-;qnFt4cmMzZ07*qoM6N<$f)`O6
A-2eap

delta 3180
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
S7t|O40000<MNUMnLSTaaUn%?m

diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..02c26625f31611975c75051ed370e17db10281b5
GIT binary patch
literal 2884
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

literal 0
HcmV?d00001

diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 5926e041f285c84ffa1a4fcd5d6a68bbbf84cf2b..b6e188b22c7b077643f98ca38a6238ca278cbedd 100644
GIT binary patch
delta 2513
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
bJP7h%soWqFZ?}lG00000NkvXXu0mjf#AUS^

delta 1950
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

diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..0933974a71527c55ea40911ed82f942a2c1df2b2
GIT binary patch
literal 2229
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
D4c9$5

literal 0
HcmV?d00001

diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index dc1cf779530adc6888c78d204adad727c879a900..aa674575a93548c660a13cb24434bf66e37f6384 100644
GIT binary patch
delta 4581
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
P00000NkvXXu0mjf$7upp

delta 4541
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
be=+!fuHSnxCkknN00000NkvXXu0mjfx+J=T

diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..bffce7425871827e97999f996d14f14b855826fd
GIT binary patch
literal 4112
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
Mssq!m)O33Ne;~j5wg3PC

literal 0
HcmV?d00001

diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 4ce14aeefb7fdfc8b0d9bb7f2f8951fd29382300..492b24a03b9f5bd11be31f080f212c3f0e8fb4a0 100644
GIT binary patch
delta 7482
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

delta 7491
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
D*;u}B

diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..67052223db8d8952a1f38e7747b3385285432f3d
GIT binary patch
literal 6812
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

literal 0
HcmV?d00001

diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 9396ff5f6100a60cfc8739e9cf80e99a11349790..80078179202d507739ea648e0f43cd20e377eba1 100644
GIT binary patch
literal 10878
zcmb`tWmp_d6E2Je3m)7xSdgFr0*h;K2=49>Aowos?!FKl!UhQrK@!}Z4YEjr2Uv80
z1rG1?egDs&)7RD0GgC8FHC;2)C3l>bh7vw5H7*JY3ciZ6yw3C3_rH#f`MlLxbH#cd
zFuY||^st{>Ft%;%^D&O6vXM6m3T46nI;x6qMCS8JDjx+yA6*Z7A3v*4b|`*+e!NcZ
zF5Wg)o_4$*pBxHK-czHXFrui)%jo$R{woS7q*V&I>0OjurvEKxT(or9@Ue*pn(hW2
zxQQCHvbLtZ7v7B`6zNCB>fOaAGM^$MQO0KSP^L``3w=u<B8Ap%$<o&rJf0nlZ8UfI
z{rkD|sg3>K{>d1_y0`oEtf1uZ*u$a&pzH7ea(HqpsjsOossDoh|9!iXo=6pve4nl?
z`s$)1H+uxZW7uns%1C{MH&7NV%QX5Dg^$uU0Y)b0saB{mTQ?pZz2N^I!b*apu)InJ
zojsunRf5LOzOAXXiH4nuqJ@Pvf~IJTD9mTx;+I&nc*+%`X$1uaE;Kg2eTox>U4&IG
zLBSvOI^^Lh3{9To6#yBypqh#rxmeB0p1sr{3FnsLSa*zd0L6G`<{o!&$Rh^Vq{Qj4
zj-yTn*7wm_kAEFkJpeZk56#Q#>%&m<{U)921r&@DUi0o1z&#zP$8u|w;{8`l!)T24
z)L*`3n}f+G-H{%UeTq$4kwtPtuT?H<6f$c6(v$>hATch@XCPXwG#MI(vN}}a`u9AI
z67c4VC5C`bRjZU(&l&|yE1Sn;*8;IL{l?uQ=uu=#&{&a~`sWsgF3!y_i|PfhbaNin
zr!lpa!(9sq_M}Ul!98hL>nPv8GY)^(U<`k7Mw$Twz<0mVgJGi=1VS5eW5`U@nNlD}
zTdI!#g0ZS0bwk)WV{(o6!OLGrgk{iTuBUw!bxYix(!Zrz=u~-ab5l9fOo`=}-Itcz
zKNq0Wi(9k?#ftFoZc}ukPytZ=A>gF*6x4S%S`ma<6_3lXM$v21Zq4Y+`*5UEfAWSz
zbR|Scme%dI(8VL*3E5K1pgU|wC8K~zL`#P+)G~FuP?|=GvtE=g?&}`se6ITRTWfrv
z+Hk|m?2{!&Jm}-H#S0}R^o4#DOE}bd;`Bzzrz}XIlH&cM6G*>)(Bfgvq7qcDeW$tW
zOC}{(k#z5@qp^|kwrI5d2kY+5y-{$hvHQkfg2=er=AWvT<&&b+^SG5;ms@M3y(aJY
z9_lYDFfh>KGNXN0_!GE}1XJx#qcNB=o<v^?a$=M)%1>RyPrMx-sxr<R)?z(*`D-=!
z!XYN>QSNU~Vv|z%mEnik)dy!*2oz{OCD_ID_&fWNq+E#2Eo<YY$-~#&<zH|!^~(u2
zdu^rI))G}+tqQSCn~x*G4;ix<Te%vn5J7tN8Br3uQ|VkubmBm)f$q1(D5Z>%VjCP$
z&Qww9R_IrP(SeKfTkRUvlBI`@^3dWBP~p(hBU!HaFI3PJi<5EB)nOksWRx06?UDo|
zJ%d8T8>lI<2idp%c|Mid$88tP)!!Tx<NxV~sNi{M;R|QNKzmVB&G>?&RzE3MG2J(Z
zEX7SI`3bBtkc#1J_SPrlPA*3o3QHBjW2zt>y|4R2CKk}2G)pS17DyKH(%`e_)!hrz
z@6IB0laIB3mX`iF?Bu_2HEl)-P4g^N`h4kqn*H;Arwg`vEu((3y|hfcZP*HeSI4ds
zm9ru>TKhWUqpAF&DnjGD*8IQ&7j%Vu4KV_w+!S_(b~K~0ZDa-cv|_ZMC%Qx4mlc%l
zXrHW}i~9lma{qZm%D^Mem?HUIuuAfywXV|OTs!tc)hzbe2sT+&kvC3%D-&`W;N=jK
z)5^OEmzQ2UY}_62^sM)7ezBnY2X~PNFCtRF+*z2`ha2n$!AQl=p!lt!qQy0ov4B$d
z_};=oJ|pN9JD<@&-njVMRG+>GEg(ihN+8A|5bHKaz02QrnMemi`c7KAUeSA}OF_li
zDp*)J)H&<U{`W}{d;QQqxOX`6q07J%j^j<crt%<GSC!Be)Vb1q!2x=>$bky;zfeV~
zxszt?JwK$8Wl51_tzjjvwk^*TR75i3+`a(+_+FqS6)=?e3iNufh(ARM0K%~VO~-w&
zej7=y;OG@u8X;6mj}&=T?ToMGPWDj~4xU{f=(X@>R@)O2Yfl&&{KmEB=|xDRY2K#<
z>W-oy&|q9dsScwOEy<2E88XPCE-54d_|}&NkBtq87=-o5OdIt*Fc|qw!~!zxyiIPe
zEX+n6V2x;CVugL}$l?a`FZXu0AE<&n>oKb@ql;obwEIHJo1w#g5cAOr_9;`pD$?Ni
zO~F&+$=@dg?so?XiSlKeFLNaonI(#kCpRBMX?9R}4V@(iLBR&E09`<QHTxLa4TS^8
z{OC%j{mx`7%Kgq_eKoFls$IrNX?=Y?{lUG9(%M?G$4y=ji>_E0s4}VU=|SZ>Nj|Ms
zo&#0zT6v+|XoY{ljTU7riQ?0d>F93-p0$7n>Q3Wzx`{cVB*Qm~@97;JgX7ISKAhco
zX7)T}(9*_}B-2FNi0|l%lgMaAWv8YD{9_{b!!TSRwskTPbjkTXKTFL@giVBvady8>
z<76(<mWB0rC=2PZ6Xd&5Naez|K;gu9Y5x{n`|q*c=zhV2@oS-rDe2QK_wU<j!mpLW
zhM!s8$nz_SlN9stG~s`y%HH=nL^=d2t%wl~N;g`|MnNf3q|4>)*Q;kXJ%vI}2c#K|
zgnOgrbH00y9(EKi3KlG7zYgzbl(P71vA)(y)QkKR6@0c-<=^dx7l|S4h}$5o?)kMH
zpp_EV@adbkHj?7n=PZK|@_MtbyEA2YC-Nt;`I>ho%=O=%=;|F+0`+cR#+PtxrbziO
zh65rt1r@%0jFo-^*f`b7I1=|Z$KupGkUcCXmyb~YIakQL5PF)xPDdxFn)Z*mWar+?
z>U-Y*cr?#ePTqQl&=5<<+qPdfs!!sTkPq+yf7q^j@gUF8+4bK%$}{&Peqj{&U3wp#
z-ZcEXYGCtc(9tJ~U#upbdvjaCDA52&L5va=D>KMwQx>JKT?`Q2bo2L(CK$J$bSrdw
zuLp~-u5t-PhH7qIrxcEpJ)Luy5XKO5Nu$(!06XeC9c!|50JQ#w@#n#Hm#!f349VbE
z+fzrHm26r+R?CjWcXoEx+HQp*h~Z(xKB0yE(H3PiwUCkt8KAlrTF1=TVV^5@#O7PI
z%Vz>#O-)NCMdKtjKS($~2)g!!wt@EyrcZ2wgK2+qNU=*W)H5;ot^3dqPhUsSqqA5M
z<kIO9O#9Rd5`@xNL8iWO{#ql?>Uu=l?tag-&`~VYHedJ7rTKAB3hv&~|4c}wY%!DA
z_u(^J<u-g?l+~_cyKO_|u*4dgVfmyLp0d%HK?wAqnf~WrR8v#a1pemoF*eBKM=0bq
zkufP=z4H!6Qn(AImXi}$wJH%K-mDCJ^!c+!TQB<S>#NF1MMJZ<1nZt4gZ-Y^=^9E^
z#jeR`19Ck|EqeMGAfXPnlsQ6Ad{F~CJv*iW<J@c4GxS44L*pmK=D!!m{Ju%N(s#y|
zEVjZJF1|<Sr3^LsE7ws0guAecS}aVy;FcKg<TG1_f)E^_fK}b#i{-93YE--yoSM64
zIUF63!$zvawx(w1I2pj`hG>4v1JnX0d^%$bB)l$jx}Mih@EXmJ3J$g*luaq4#NkiR
zxJ;2elseQ-KFe6n8i0<kA}%Y`3LQeBEw{(l=%x?<hW!yO#N~XEr5Mt1JH+2VWFTX~
zMULC~+sa*5lPbw>?@aEe9X9i|kaAZR#E~C(z=&I%C=kzzRr#Bal_t6-4TrKBe#u(S
z$3x$GnJ5#87^=S4Mp2G3tH14$Ipis&>VQUA8izS6RJen+xvH{rJ4YaZ-(u7wC%eQ$
zXi69s6a{dVkY-LBxyZbQbB3FI10<05hVffl?vv?XCG9^-)8R21ZReOAN_3pedzcLj
zT$k(w3#spfIrv?qodU+?*JAV{C{-D4AoU6g?kP#y;%{zC8$5@~#Fw8Ov3h}z(niAl
z+tA72>!!sLcA`=9Qkw~~+C0=u?z@SjBF}+tA_j4XwEtMnx&_@LQY=_&U!*#t$iW5O
zUhAX6_c~djtb^bSX_4)mIj2#u*V<uH{DJ3Akp%R6%X=2Y2wR<DbM>Mtk=mrlbRIvP
zjX_@&MKtmh5omR$X>h%1P}Cu%qiX(peOMi^B0Hf)V~)H&RnX{ywe#MtX!^k?TtbqE
zaf53I0H!?zQIU(>e}Ft%(<Ad-lUUWJh*2L}i-<q#?0#OmbDxKoPb7u<@L@smjqge@
zQ{%tkZcmruwN?3#g1tGz<8r5zfK3q*4?hDSlhb1CZ#K^t&9Z6AnFQ`0?VWc-<G3+X
zIsMx{8gm;UW&7B9y*7?sCCek$=%(RAxzT!P`j@wYkV%$Dy*NW@<UDNpG9C7T$L)hh
zB76Jo6hMF~`GdqaN^oZ|ovJIE6>Dm=`8mZxbrOs<D+RsXKPC$s(2+R0s(JjU`~^=k
zWZAc96?l)Uc|xtoh3d@~wPv6zkF4QqlKJJaE55!S_-Xnb4ElZ5D`@i%TQjuX9+lae
zI&9=9eDckq6ah-sB5g;4K?u@%ui`1YDCQPKcr4EaoZmCZbY<#demqtaoK|M|y7o_{
z%6@r?pJoUafFR;KrJ2Yu2TJ+g)?iB}$9`bMuXi*lnVah+UkITs`GWarid$+AA);|q
z{FfuiQD_JTYfg%UFlJc}G3G?MY=eR35JdBU`*|$jJ_MQo`%zjX#aF8G!yl&cWj1%R
z<yNfBf!^WUp{(OudDi!mggKn<(ph`j6zHCEh|dX2KW;8>ljrXS=ewXy9t-EUA?0PF
zVy_2Ngvl=QLS7+{M<0^awp^x7qWFboY+`Hpcdt$7Yd}zQYGDSf>gY4ne01DX@j+;M
zl+7#R#{-IQ`2(8Qh}ho=fFsKn?wU2*!-vDSOQ!_<RB^kbKa0nwO%*w+!y#eWp*6~3
z_Y;~uG`%X+Kw8EujWmOEh_E;9@a+>au85XOjZq(<Q(dy4gyb~n3`NYJHUz`jr_~-8
zMXC2rstA9VXMv5>QF$fmX_$Od^E<w)`fzcd8pkfz??xP9ZU*K!hUow@>NE=WIMxl{
zPo>arxJ_>BD7y*j@0>*&#{+^i!bW)r8CbU)c+PsK{>dn#GYJdI(6DgGvj_n*+UM{O
zD>royvN?kJ*TLS&ej;aAGp!NFG`X_4gFa#MPTM)H;%yQfX2hV+fmxZzYtB=K<nyka
zls}{M#TN#A%%nv2g`Yniv71Hg>y5&Un4D)3>T^WvC3)|Nf$42;Tz-Dbe&o<m1zyYZ
z8E#X^=9+<*=*nw~5o%Yrx@F^J@vw%Vih=k3unQ&HtT7qzn90W}!S#{}$y#6hO5A0P
zB)vO1bSi1F0nJavKj%RH?+0E<+|~EAP88{<`=veqsx<3~ti0_HW7W3XLh6`9F8w4h
z4;b)Qi?VVqG)*xmv1_ViSy*!gN8%}En4FECnNdo!4PaeF6?P3kJ0A#pF2x%$sMK<D
z{n9HRw>7H_IuKQHina`~E@!Jb_ZMpsk`!N!V*46o%e|>7qC*NwW>rDe%kQLzdYk4O
zA{S`2-q~r_mAQzzNji1{YNzcF`j0n?1LI((g|&CvqSLS5U;j@17xKquy@^*=YS9_p
z7MMX2CT-}3#x5))IZ^ic+1rbi%KE5CBI#W~JBfJq$M*aP!>!#oa;}^@w(yfU9}jX?
zMKDlSx`Qayxx2RlUQ6khI>>O_)AT7Xeqr8Gu%!;;b{YBDFI(Hqn;P^5>%O>hXYZZK
z!B*d_7v}4or91J|kM6#M9`v>Kh~^D_dbrwAeAp<)H#(~3o~q!>H^+=(?XSzz*dFx=
zItga?FN3B_&8O1tpY=+hKaK+1{_VC`a_VVtK=C%Ct2+faVd#^CuEU!buWr2w$jCtH
zIRwdj9ehE7<UWR+PD}IZ7i|+31j9JT)gLeVqwKV8_2mhpqQK=25J7bRe>2s$J+{2o
zi;UZC7FivE?wU(vvJHFH&BZ0fQU4fy1rrXEk`j9>r~sM6*oROdNDyBtod)J2x$nDz
z%MH=@P7f7~S`Ek&8&%{%bqsPlM{FBw#d`rNpLYTwZ|;}iDY%qW<u=q{o;b*~TfkU6
ze(%hI&fy>wkp1)T<b5==r5lAaukleFU~~i3L0H;_!}71q;-f&3(r%HRq(w6ELi1$|
zCV!~vPmV&&K011w0*g*kWfnPG50d94MlvsPxNwrh1^-qzY4hNe`+#)yJ-AfvtN%~R
zT9Z4uqCNC>xTl6_dv4*}2e_IHSM~!X5$JAhU|Tc9d47dJN$nK#g`?Yf)f~y7>Z7R-
zK2_aUt7A+-XQ@#2+GKo2l6mhy<;p6tSA!nOZ!`ITL?6VzqS{9ZeEgja1(903Q^;?W
zdy!Z|jy}9dhgBWFzh0u(HeCBV1r@$pnU~=w>vydXr$_PWymM}lF9U}%P==*i<b)@M
zx9VvjTzSo?Wu3N3WH9eFr3BpjId)-dM+?9TnR1@@Y#JhB_9blEhh&f5<j?a@y$v@$
z7;d>mxsu_h^4@R5e5ff-a81**K(-KgcrpVyOF1_`5M=0%D)`NB^U<Db^(o_(@e0eV
z2ZeDB)}VeDzE|!Nx$dEm*8c@CqsfYc0XJtm5E*YA{m4HGyd~4Dup(WzXxGBGqH9hp
z$<{6tgrR(y%6>dKah{y%m1(t9rRb$XHPwXEP>H5@G94Y`@pWUs*_(|8R-x5*@~rk9
z0Ipq;h8G(${XwJeG?$sojVWqqCj8O;ZPuW{OJpx4_+O-d6%&XgWJ~B>@PGVcX(Eyp
z3nOh$#iR@j?9q^u8^NHYW){O*S)yyB07%~)SH7RNnodh=xD95uaLa^a$gUKoT@YkM
zsp2P<KqLmcWKKhyx9*=`Pi$`BdSds4XIL%c<3T1j@B-w(>#<{YMDF>!iD0)Sk9T~w
zk+b!LW;d+<+r`?3mCKhD!mxPxQDxZcQ@oG7o+96@HJ>6|fVF*<YDpj9n(Qfv4Avw@
zqOputi3vyaRFc3H@l`VTufZZ^)Pb3_cvPLd>j&X4h-uS}ewbNHzM#QGUiKkQ!f&ys
z@)v8tQ0L;+kW9Yy2ej!^8U-$3<e}V{?WK!GtytTq-A@jJM}aAcXqK6bkH=pt6JWGO
z(<-vdO!N`bsm@gWi9TThLB-buVkRq2>*u_JKxOLeI>v-}SpKD+DBQwtg9P|+;O#aD
z9*@qt@ZY>R-F$Uw7-cO#=^NzQdH87%MoU___RrP*s#tVL*&U@Af+JAe7lycK4f357
z3g_yO6C6T0PvSeKD*W_)u2EBerNOzl!Wo_EI5LL^c%c<?ckA)n|2+)&B(79vULC(V
zZt!hyNX>xxk}{sYW$7%f16uJ(GQ^2p3QO>a1Se_ZQAOv1OUFsvJLq_Nyfj{M<_uHI
zwb05|b?%5i@uoXtf()OLikyi?2T4)LAM>r-!M7M0f3fHy;(1al_HoBh$#TW#ZN6KH
zAH=s6atQfBtXN610;#fXR#9StQ~bLk&8<_{>&K>ELMg;+kZf6o>irlOeWOIYlukc4
zGBQkBmw83e%Zy>s<?L%DVftE|tY7r;#zd<knO~^f>W{5$yahI5ex6)hHRvK)G}SO6
zzO)?c4{bJ*Ee@bUmRM4XSF*+*&wi6EE)McC;C3kDCoE6S6jxz-_E`gaeMta)t4mXV
zNn@ls=v+D-E|zr3E3WU<{S+&MdYAZ)N`jJ`--fdLU8827^6}3%LCecr+t_dBSffvB
zi5J#U)?(=bonaVpk<H3Ob<;*pZV3CkApxUT?}&Oc7jd1U$Cr3H?(ix;L7mh-z^htC
z#%NI@Z;D!0v;!Oc3nwKorK=Af9|V3`oJmYeM2FQWYAuI^uT#V6<0)Mw-fi#a`*|2@
z1SK$7QD!qK4{v|da81d(jwUM_WcVU4^0iR&6PYOg2rW~={NY}RgP(-z>EH%X@e58f
zY9TT&dYlb(A|n?Q*({?a;cShv7*8}=nD_+a!++P=%Jye3I;pO{9w;P85M`>ptb}AV
zTG?{dYbAOqUciHI|IzC;2-vTaPdioHbqWo!-z@m@0j7bQOU`V~^4M+6p@1|z5L-K6
zOs?fiF;8lL-9^R$gdbM#*!=)>dkHs(?{eAOALJH|e-F0f`Q@?gnXnU{yI$Y~2B@fM
z{f$n@mQdv;NrI2_d}Dz#k%8H+C(OaraWFRO&jCKG-L8>fTgI;!u|NMlh#Q9^2UnMJ
zdtM539IRgIkfcw4q=842c&tD%u4FIqlWjCiCdl`zHa32Ci#XIdzrUQ5!DQblsjU%_
zPS^Pb&T0AuKwm}C@M_wf3E`ttST2fE0wK>^-W04RT01UTYJYCY7dbYLgS~Hmn2{fy
z)=K>MEhSVa$Tf1&WnQu?u0VwTl!MM}xnu7@(tZ@Yrpv@OH}}iKM0rUCIn#%!H6?4(
zyDrvW40NzTD-BKg2HNDY=dt`HQz;sz0WxYK1N24kU3HL9@KyZjcf(4RRrf&hys+qX
z7G~-dgn^bzndpNnU~eACxM!w1_r9_hF>S|S3Wlm0<f`qT^-P9P63{5+K#q3DnzNaG
z@CW&o)a{&=;tpditlKPI1Ld!tdOu~NKTHL-9<P9GW1sUWa`v&;znhbH)~h6F5CV7+
zr|!QsWO3^*HF>!$@)2$|&4|*CdyGA#cSKiflBZ>#5f94Q<k6JfV7GmFHvcMmjebfU
z3-DfO-ay_u9TZrS<Nx0LT<{M`%JA(jp9OO|N)18=VJOuW<zW^Szw`Z?j%s^vnhwLN
z6HwU;<^&IHPrDoq5`5G~YNdFg<h%f@E}t*jPzQs&!8@&eUta?N?FZKR!I-is1-xm#
z!_eoIZB*zq_y-s)*^weY0R1W&`kbUGN;%#<*&|?CM2SUV>P>k<o*jITE>!40>YS?Y
zePYp;V<clJ7a{+!0iPfREO-W7I>*u<2Z4d-+x%Vkg<XU$*%P~~4B|8juZaYp^r4sI
z---|wS5Svj*rZv(4G}?%n)|EBpH{%@6#^;Hbe%F=XekC!{D2#Sc+z~1Si&vVikD}o
zgvcoto6%iC>9n93a&xzdLzpP&Bk)D1Ss4yuECOr%69YuNDyBCGMzy5(v;8kY#ivQB
zj@oU}I492w$)4bYAODUe*EHYJw&Fi62_-4B4iqoLHWU0jws!n}$dWQdQ_Ev#eY5Bp
zYJ?HmtDk3qd!-kMC<nm5wYo{+dm(GqSZZXwFLzMMrm^c<XPVDHr7p_#SOI(fVV{b5
z<IK0oa82NQnEZ5nHzf+Xs=cCn+58(z$HFj+ygnaT*|9JJl3Je*F~RECP3$oJB+Fj)
z#+~Jl0kJGUndaGf|6BTXugoqmU|=Ov{!W%L7`ybW17I|m<l(#Y*J-2c55@HH?$$D9
znlq6+N}ToW)8HUj@VoXVoh^NB5yA@dL)_PL_OrSI0`LAYjZX1ZT8sO<n?gnJnPG!d
zXf%^FiSkXb?a&WBBV^vmvZ3ByEBoE;<BmPW!PnH=+h3X4QWn)ET#R~=%!ncVx?4x8
zZ7fPk>c1W*AgE7JW+>Thz;P@C^;a69I1`rf7<Qk>>;8vd)_-59ha5NQw*M>JBPPX(
zq!%<WmrlR?<ox>a58G}_v{q{TnEwZUdfhbV8KgE+c}oeG0kwC`56}*Ag%9s|{rGg6
zKufP~nB+)C>T-}_BafVs#?(sk#O2(YsxMn>{@bu)Udn3FZ70@?I9AN|K@cnAT}D#L
z<l`2MJa+0#Z+0RCL2T;{iDvFZHBWp;&ern|Q(HX_VhQITz8r}^U9AwD1TG!R2;i%!
z-(XExf&n>q$>@4Amw5;I*iuh@R_0KE;q}O29{1kG$TIKVm>@aRW%aEM>sP2PRg3hP
z38y-;=?$FyX^bo);8=5Ma;K5cw9iSc=;k`~;Kt+V-_FaMABlPom8d1m3QqVNml6&4
z3vO@&ccSN%eyvj6u8JsaOu;E^dX{Mq-B#sy0ebN1(97Ese22Ha`i$S-%_&Pe8&_mC
zqQh6gdwR%S_Lr*>Yrvm1YXLi$;`xHvJboiI5kJ>_?!6;l;YRbDG1ORgS`6nRO5-uL
z5*qf`f^i!k91By{yK>SR$HFHd;z2K_AAgbsZx_{J$6?4OF!{PDh@^YTf7WPN-4;!W
z)<cY|WuGHqrW0gGDcn!}p<A<FkLNMdXTy)x(4#U0f8;y+LBh>9)Lcn(3s9=F8t053
zhv%B@pG65chD)wfeu)XuZlxC+VW5RIT@WDjcnzCV>!!_<7lc34Q!CEThg>lK%~)OY
zQ`i;-;h^%M_FI^?XEHnuQkgbBz6&QnU;UJqTlgoV4KNw88Y7Kg85H8Wd$+3tfUAYy
zi#*gpj%N2ql*4seUyqb-b;$_UbdwXWJsrOD&cA_IjAzf!&FN@6t92UR4&95Mb#QC`
zO&<PyKF@yLSO;+ZCwr=d8%8t=WI<J}oKYA$J=o4MB2P{Hp7YgwVXVc$_u_|ljzHC-
z(HoG|z!twnkHgESo~vrkVBxaf-cssr=yK<lo=`VxJ0MBNbJhDNhwK>$_9N4%xv)OQ
zNh!!Xv|u9uSG4DXw6#}if)6Y)g1&mU;$@2$M<vQa`eHt>wY>0+nIHo{bS87|*gdO+
z1M{d;qW$a_@1v`nXq8XSa{J`)uV1VnKiEs;W}KWdo8xmJ@TH4x4kGC;l{m@NHV8vu
z>0c}npXU%HUb{Ocib%tNwFiqeOZ=uyA>Xr6zj0minclqsede-BdpCVU&|n8+{C1`8
z>G*EoNKTiwD3(P_rrf|mE7J0FGx$Vo@^S(^So@;BaBY1`tZsL9Ne@`oN+ic(6MQ|j
z*M1rWEayA8#;*IrSDn5j{0t&E{T~)!<9*@5^I9hmS}UA>0c38!$?{UHygn<sd1D7O
zV2|H+2TMQCgxWIwaD_`VO_kT=bBs3QgI<blj3y;Zz+Pz(4mr9cB)9;%!v+}4X)rBD
zj?d*ARUbuT5T(gGD2w2C7H9e<*z|`*e?t6@xBiAa*hSIh$n{mt%#xJU@%$=WvQ!^r
zNEr?Yn6}yo8rOaQ-J7%~`cv?uXbPf~VEl_-i&~~m6gY0PLi9`by;2b3wi$~yif&ry
z*`mGv_7n!lqm1q~ib1W2k~<!7?|018Mpj^T_)9&)e|p6gmIALk4tfcj|6XB(gO0o=
z^4625m-*?f6&&-2X3jV)o)+uY9`%|U3kp{Vnj(QfM`?JMC1F;K+;UBWkKpPh2V`@Y
zFY#=@Smn`vCzw~tiMPJK9@2*I9A!l*&rD4Jv}5(-)6?hAgunO~UTcLYm!h4k^8g)7
z6g@fH-CV9A$(B!!;YTN8zg7+KE^d=v9vBG~R93!T4veo&%1p1R;Uu_DIs2zBaeM0>
z^6?4C;UXNPGe}6Au^mHYiLzL28Gn!1rP=t-K9GSG*s+!Pc>}a0yX!ag<+&JO<$}S<
zmZlsj8qMBrb7B7D1|h?Y6Lu*acE&^|ykn|L-utkcfBS6O=SpLM{uE7HxQhB2pJp=r
zVKT(D`9}gFczJTW!%aw7xU{zAsE0EWawK1-os5@s(OgA%{xEzaNdB|14^mr+(6ySM
zdj-P8w?bKTRcvo+&#dLQ61s?}ifO-qmYKEyc|o0!g!!CFCQ@7yJWLmNyl5+;=ZaQ-
z{Q33|8Q`ro!;O1LL`|eM4y=$YyUTC+EgSGY#FFkgC0VV|1+9ln=yAp4mfBZ-u{!bp
z91512pPqvd85D`+0E|R)*u0IgF(VKUKqRpD=-&%YwmA84d1je6<Tg)z7`+>xBkx-;
z8$s`)^&S|*HwAOJMNcJy*6B5o^EI`o3!M=olaE2GnWQgdd5Dr2*^U|FFQy6UcEL|)
z;%egPrtP&E^Iaxl-T_!IB?{p857o8#ciN;Cj`uREagd|uLSv;9Wpr4j6JD}rqa6&J
zkDhYpHl)l|Qpl=9m<y5rW|qB;OSMztpbGxWBZV7N>(r{O_9ftzLYS7IJWFUAF5Nr+
zFW&df=*T~LK#X)UZ@I69|JC*1fLABZ#h7-daObGc=c&&tt{+JTOs{0-@n4rwZyAP{
z?YzAvRB!ZSoOlf5kho`uO1z5-!^PG`s1nKVk}IgZhfDNV*l9b%B=@f!>&q4dlBB7X
z^VTANla^zACS+Za%#|L|=Js+SXe4E1WdfJ5S>lS*F2}w8T0xnCrm2vG>kSNZKFM`2
zA9}+W<h#pSj40A-M9r0eELU=BClN(8>3*Q<C$)8hFf{@5*uG-~myhH2XA<bvNd5>Z
z8N0j{xSvXg1ua?X5qo7d1<JklP=w39Xq1-KE|0~jp_~$_@{Z3GxY{w!rvlhjF{w9>
zS!PfjS)?ZB>C67f+~8EG%Hh)lx<8cfRL!w0%?Dh>!IFT{P59DO`V~ZP4|2Q=co=oh
z7CpVW)V+-P!Cx37CIb=~!9nlLl&^K!1YIO=2KoLLm>{)O@EM~kv`AT4ucS(IdQB{Z
zUx3FVxUiosAQNp&#N4&oI6DYC+rrl;2V{Dn2vFi30(q)yX3JpuUsz&EOiN804Fr!@
z@I~3PK61ukhq<a!%h+vC14WAw3HG|Eb~Mr)qyi*3lEgs>hEpefw3w_KnVHGO+<%eg
zb(BGE@`MViArk3|B`Zm|IlPZ+7r1fb!RDICzdEg`&-fnd#@s|Tg}B4jlg?I^E2V`q
z?OzMZV?@qT1r?H+OvnkBs6OnL+#Y$(_ykZOlXgBLKsTZHQvyfZlMY&-i_4odZ1yj;
zD}l<c6ge$L=Nl5kHW|a5aVkWrlbuTIeMz`n+&G-Xjhy_I3BNUvt(=o6@T0Jgf)l?*
zdWOhB6*bt>X5SsP`yAcfacZ6G=p8=pe@S`Bo9#r%5l<Rc(|9dj<<jPOnIXg&V*Q1B
zUP_8>w@n7`#scEV55FgtTyJ{>?eC1+z!4)O8$DKiUMaS03g0mje?+}}bwNlM&${rL
zb5&msbeR1VuNDB3HVBS}AZ$mp%1w3;XWvoQl4M3(n_gCcXp)k@E`~Qxs*8o@X`Odv
z<%^{^1A996M~Fesm2-?p>^oAn688LuN26$FU$e9()t~<KzD$hh1N?Y{TEbvuMEKYc
zA54TAA6)xFV)7~~)Htqpj=GP>iYv6qev;bG({l!#E3D?0G^}st@zFMc3Ge3_-X^82
zDkq+q0h$z8lk)L(4HwT3wI9f`+5JB?ah6qL=sY>jnMkzXk6Hi<j#ucZt8E^lC`E$_
zSy8jqv4hsK2`<Hml($0aucEDDIl<F=6mb8HLrqrTO~sM;#&rurioBBMA`#UIk^ZY*
z8a=r}=DoJz#uyaCX8R=ZcklKM7OyL%3+D1;ss8<F3;8$9!s*AM=L<J5M%T0X?AN5W
zaRy9=GSKn2dcYu8U>_a4*DP^3uaPo#AMV$mV@$jj*NZ_#qCl=SVfBbiqzbin0D4MZ
zsL_bzUG;36v%cvVoYRD5Mj)}I{}*8~s=uBFkOkYGQbzxmMTdev=H?b=R1%|j{7hw~
znVttc!U2W;Bn^h0Z`^uk4ON`M-o~0ndA~Nefh`gOzx%-ANc#U>qC10)^pfzamimug
zD`(EKk1hPSUG6z;=z<X>#2b*fIZmZ$DX5_(_umbRY~P4|qANucU3h?JcztDeE7UU9
z^Az7s@r0|AN(lbr;w)#y!qH-NEF3Or&wrc5xMJFEW$JTn9Pq5AwwfwGT0yjzIov=B
zyeNp0VyxRo*W^TLppD#o#^i-Gh=#*}OkGx{cK?aHDwAg!>HGipD`JTg%aclQ{}Xbk
z>BTZrrsrbE@%&uWVa$sBt`gur{P*Z*j-=-_GW^4IpNRiQiOZ)6d!CCV#RJ97B#a>1
zGE&D^-@9`={=~=PaFSLWlQ;d38Xv-O6=Bg1{H(i5ZsGGQ-<+zhI%wosJw^LY;>gUm
zA@dZF0y@`_4GKD$t9xNz*9i_$^#8FhdczW%GOnV|wR0zD5#ZtAy}A^+QFwO$aDY!q
zyIl`Ec&n?`zRzqo3o%0lPg5k`J^+cy1vXS&DXlNBU-Rd<`9wa;7sPq-A7rl}-&q$m
zKY!@z;r_-Y_b6-0o?VeJMVuLhjQ6||*aJg$g+D;dx_Agvey4R{fTp6y{%^=i593EH
ZHX3zUI8O=XGgcHuML|OzB5N7`e*j8mPjLVM

literal 10855
zcmb_?Wl)>X6L1m&1a~PK+@TbQLV{cI7AR1(1&X^9f(N&@K#P|aEl?;fp*V%&F2##m
z@M15&|IGXC{rK+8-OY1zyR*B`-QMo)#^`FR65-R~0{{Rbbu}gZhq3*?2Elpg^%tCQ
z9|o|eg8FmF0|Y@{qaMET+|*urKCGYquK^XfKlwdOKJrpF_A+p__42jycmweD^%Z>U
z;^=8(<@QF<)x+-7!BaW_018l7l7H@(wg1XLi)u1cw!ZYwnAbSHD3MkTUKqK&yOq28
zlP5hW+l7J{;eK|y)f{`y7*1RFO!a4?G47ol+F7IQi4<n?qTJ64ET4nrK`7P{__&uu
zYvtjK$!yp`>x=qQi~3iGt>!ytvS^F5GNW4u*k<$6#UhdJ|7W0mlAO$FWc51S_8K|M
zUV3k=0mh$=$h~<<rYNqap<iA!_cbq>*gp2``TUr|*Y$UJhZZ^<QBGL~EcK(Gz7&mx
zQSQF|sphMC%HD{BH1nE{x>EnPj-R$uWc>V-lDvpibeKXaAkc~L*l5o1z8SsHW=}!8
z;=FV?MlRnpm2pY!JTxn@F?_lC<wC-1$HLye{zsh){URqLvP#)XDHI@_od>PR{{b&@
z7q~J$TVlGczcBnWO3Vq0&H18;&M)#+H^&Ua?r}f!X`B8_Pog`@#7f}Yex_@T2<GK3
z#2dhorl2I+r~Y0n=h`ty0n6OexN-HI#1R>{aRi1OlDLQgRIYf^1+Mdk<nr@>|2hqz
zqzu5tCa!-u6Fg($HSuz(k$y08I$3^<qZrVIC)&2Px!C4&ryAX_?7aAET920Dhpz#H
z{d60qpWZ@_crcDEh;VNVmkbFT_zWB|?Ta{+@Zk<A^1XaDkr$`HD_UpTHTdZ?xB;}q
zcQV5lW@~@*lDYNk`=BSw!XC82q#tnDMaYt*ClS19ga9JOf7XwIGeKmmTNj<$T*}+-
zp(f35@A`sScyc^R3dZHo=g7{$oq1^6*8nuz$yGg<E`Sq25T6wKD&-Cz`hp`J2VQS4
zZKX7`!c|)-*K?KEc3(78-<!|z#Iu^>_%cS)aCoT!Mk`h21UmH!?ZVnNQYS40t5IRa
zL(esbpJ1=FzAh@}9&`Uy4jTNF75$mlx|lzq!2TVvBG-r*=%H))WMhCoUQp$9KD%IL
z6`}}|DQ*5<QcAJ=$5qw4rn`$Ju0seya<7V{oe}s2tQs6eG|F!`!SDVOOU0X`gw%%d
zEW}NEH+6Ws>^7;b&$}csYqudk=vYv62cH?T?eaXH5fUUZBvc+d<Bj(m%n6pyPDS;a
zJ9f3<jFW+ZEtNs9-{U_z7EXgo_F^w{wY}cwDMOa?3m>&|*c@j{MRNa2BHWr(A|k5c
zRk1Sc<~BPUUK^Rn>9VN%v0U-uY-Xvi3y$JW_Ahz-BqF(Ve-?@J^Db?ZR-e?O`W)xG
z`(mceQFr8*Vg?G&G_mmb)f<SQxhM{e07Lj~bn|hq1fARcPUmBu6P%eh2@sao6PO0H
zOdkRbgo2>>Q1j#c?CbCxugi|z-sY})E7I8AVTL$9>LjA|KZKl3<kUF<HDvYtmCEVL
zz=Fo_VQk>g1yY4GS35({7AP5z47Ti;S1HyZ9F~yUI<j-*=6*vBtH6Ra`#lxRum~#_
zZn3%Zd){lLLmww3$o~^lPw#$WP`g#_1fUZF-*70npr90lhZ54<N2bB}4)cIow-r3>
z8IRs)LC5RDojEs83dk7Kvz}6$h6qzwm_G;W#w}3*xZE~(*%(&*%U(un`hC~ckS~es
z|3YW}@8J2ub!|U4?bieCkjK2X%jp)SUAwT4iEO>wc@rKQ;<~2z2dWjMD#ZYO<KSQA
zcUqb~mbW@~RtN9GSXw)rR#BLz<*ojlZRkSEDlJ4Ml9x!O5YVztV+gC5_dB0YJN{PF
zqd4v{EHNb-wmbY0ncgNr^qIBJlrG+lEdDW2Z9P5c7JIy426OT<1NPa?UdWa7v9AX3
z&u!96$+r&AV~JEMAS%fK@Rf7Yfal6F_T|ahxL&eE71hg5JZyimr=FdJX4RIW6rm{G
zVtY+-4<*t+5Fygy^}|k<`^h*>w-bK~d7LWovc_6Q<^!4diwg-WUvCkg1J{o8Qd=)C
zF1_)I$Od^`Gg8&=3_Wf^)N00Co5z6~c!|Z_Jrj7{+yZnN#!BOmgC?&hv8s&i)nW-x
zd3fobYk1>IC6Yk_7T1gpz=;lLns;lM@qwDVSc-mj@x$_-@yh)U&)th<T^p{2g=Vv5
za)7jS8r;qRg!_pcfHabr)^L90{5<hdBmqo{$S&(KUN7^DP-D@LwT>JS%c?Zb3tIZx
z1$3A}lZ2#OfE0RzzjY9g7EWWIKr_rzz?~%jtEX~-cKMX^a?&VOBd6}%DMUoXTagZm
zgb;GuSJ|m5<e(HIKXql40hU&lQ$j*<{+gqmcJG%syOpiC8zVpV{Hrcnt0-WmlfW%9
z(t;BS!9-Y)a-Kt2U?js)(>gl99j`5g1M}%aB-(i)!Sw!Gz-e)@53f>~{B295V2WH!
z<>H6vn=!HQY740|ioIY??(WVqpOqCFSl8gM(S|k5mE@ZP%B_IE3Jrg=G9@QYnV5pv
z@JhqqgY%>;9J4-yj@|?|4BuZ-5V)WCzkh_*(BS#A&_rW&8z4}+BLgVF3V7E|u7oAJ
z$RbBp;I;s5JB7ju&u^ar3Oo|w&&_6ASO<EBuoxSb>%=mixKJWIHx#mb7AE4YA1NSB
z(Lsd7VlM5mjDSi15{|pf&#Zm&G~8lWn>ukeS489ac3a}lr^Q#BmMVVUJ68Zjv&qcH
zGa)D();^t#Bq24O*S;Mkc1LG>7_sK_DZ}P<yIH!N*6%!U0sb7L#K1~fqBRW>%?*<e
z37#&&M4xu!8j4>@RP>6GV7=Y}ZP?OHl&o8?4~uX!p&cAl){EY)_D`C+ElAu&+|TP1
z6sW>aA$h7mfnRO(dUvuQ*1EShz8``1WbKbLEJeTn2Ao3XztTIw1V9CkZW#0sIkXl@
z(wk(PNT#1<hf_8~V;g>}Uj(Z5PgS=^yoo~o-GP*(&#??U+|eN49TGf`XMpFdFzoj7
z4UDT!_m<xF=GFY1%<;y&dAry}3o(H-mt_P6YzHFGDah6^1knbMdXpA}lVU~KJFR?y
zut<wqH(W~=jL!N;KnYd+Sa7Ias~oE=m;b4XuT)!9sHocc&Rv+Ak@gx$<bZ4Zg)F&(
z#d;b!A{fX4XBGPNRn9>n{l*Lu0>SmmmaizNU){2s&$+cLx<p@EzpC5H>WiR_U;fxb
zUEppMBlK~loWlAs%`YzeRWj^r_LhjygJxnje0v<jmS6}0`i%d4TC^~Di6Bw1_iXc7
z<m_{7V|C_3PgSrKD{=yHfBFP#N!n3iPIa-Z8Rw)Dfj^nBSn-~wBI&QMs~3_s{>R52
zgP0a{9gIS$eHB1P66YKN@HkiNqEhlq;!*m#Z3ek%iqBYoqO7-=(N#ci-Zj)(`*!I*
zfoAyUJAEQs1FGWpr(&6XMC&NPa+92;Jc|>362jACt`Xx~ci8!M8kUggvXlBuqCtig
z#Z_K&K$@HKDmv}Vy@xLu%iNa~i<QJ4ieN(=1~r92mpNkCz*rvf@;{2%hO`Yji`p)p
zh__l~Pl-JI!=zw4mf~5w2W=KRvre1kGmygZr=#`Fnu;MJd}EF(M^-Nc<SsgCfVA4l
z>Y~~R`GCdc3Qc^+L-mWe^-O5vbzcmOU|qdVeOo_?6auRh#FMu>$fSM~`hy8bXlTMw
zk|+{#%6s>{jPsk_am-sAx6zXKdA2lze|g(eapA;hhzA_7m2wvIR@|kv_{lfL{j#_1
zMd%ZLa`BbB);&xE@SB?^oZV5V2><rIIkJdyOC50m`}5)@X|jH~+jx~6OGB6#{FK{?
z{AX%zg|b$#r^)bodU`IhSX(~rm0I0%;Kbk~Bkpz3(b)<%K~TtDBpxjlNzU2!)?P>I
zryNxya^kDSJOfN?%=!+*NLl=vhp%yr1?~EYAFSnI`?E%azlwUAcYy`#Ba^&p>avJL
zrHZMl(ekGLW8T>LwkI?I>_Nc{t?LX3AflBL(g;`<^#*)FI<pnbOS;}=h!QKh@4HT~
zTG}XJ%Di(HM_*Yi9iNEBe5#J5p0C!rdoCPd9Bqo%tI3h_evE;PUUJ5MbtiDj-G+=X
zJqH1{#;HuMX|fVO#NCVEETZ*@Fb1TaMSnWEKW<zjOTuwoIlk01JzDt3%Y60OMWFKQ
z$yb~wSKYpe@+={-<nphRls?Ot(|_BJQbgz#e48_lE4n|Izh{b#@DmNAhr#CeB`ke9
zout~yiCF}(75D*aQ@M?D(%+B17z}`zzt-hr-=B{xHDXg0#z;<0DBdv%lJw@KEm^R(
z_fwPEL!18gfD=u-G@=}tXEF?*y3J;az#)gaV1O-6`CkXYFgMmh(2;3~?fVMZ&-_(~
z!)CeYurLXGicmpyt1H=kt0;o2;AtfYic<{D*~I3gVEouszL$ukm12hK*KpiwX-%S+
zCJ->O6E>+Y&<$QuP{RgP9_qa0I@HuAKDb7=`3p_81SXpXFW#;vEOf{tE}Bs9o^T{v
zgHl?@yx>X8?*-2M?0SFZkgVGrz3(13!<;xzJZpE5rTvu(Z2<wymX_*-zZ>@!R_leH
z*E`Wq!>Y_#TQ3RIHhk+TSZ|}$ghLycwGk_Huddovj13=;G3n_=U{Z@Gc;AP9T+FAG
zhhRf54ymS=dVGfkNfww8i+@{ZOs9FSZaXlJH^%I**J+Nr!P+ovbN}AM`qB#e-Flod
z4$g?>s1w^z4o0ZhJFH?VIkE^{0E4!XJfP}0(?&CFUz^7z;MBRn`EmotLBEs&-q4q;
zP^AyUHneCLQEUn|y=xF~<3DP|PAl9T#%>o1Gr=?dCYDbo-v>^XzRcDw{OslRbR^}^
zl4*1{u1PjB-Ay9&YP91F*rATtZpx-}=vW2n8MSMMUzE;$uPJ4c*ELK{sxClPY9;d(
zJdT0B1|dzcg&JWN(oz{`xX4~3^zb5Z^c`|?C!n7sBK>9zk&}3}fbGFMM0kTZa{+gE
z7imRhqz&b_iJ~9XrdG{Gp&=byfcD)xUHW^`X6})Ln8KK)`!_UM)E}zn*`}+B-*Omz
z=o4yIdfIl}6iml-?<khqZ~1mm<nQ|;T9eU0q6vmOR>&8?>kHh8p7NNh(DS7qCs1<g
z25hhEBl2EnfJX;rU_M(PDcM0&VKK%z)5MiQ?=?7~@7K39@S~!fT~gFZnN$JTK$4|T
zPZ8@)xsFZGzw<s}GI4&*=bw*ERUnqycOz8);jnE?;FRdpK)k)*!QsyxF#gFJH{Ve&
zQ0~Y;pAT5}&Br(vs`Rjb>FctBULT3y4_M51mcz{IqsIp{bF!f58BPtLoO9}yF&4;P
zIw$yqG|YNs)MmL5&RBN>Yjb3*V1=XrB%j{Fx?4*8Lw#Hw_TiH&f(;*ZMP1f@3IV2x
zR(FRSjQbDo1%SJ${e3!l`As}Ab?25^Uy^e5cE0Lvq~@hNGA6P@asdFzI~ccZA_*t5
z^dmJFEjv$t5(5{^3=?;~xxJL+U_uI3eS!Ij^G_b(E<2%3%tscX4R}5zV-VZ_<|pR9
znYb>jm3A~ull8~?zfI1o#*OF(lExm>-iq*jNLa}RHfaTSI0L~cI~r>~V$xiKUx}0)
zc**pbsz!2-n^5x4@OiM-)1%1YTQZj<Rct9G#1c!^Q~@iS(vhAPZdl%HFUlb`G9`p6
zm`S)WAj**3FtD{qc2pP24oY6moJqjRX?5TI^EampSD!+{uK)0w$VyS7&4Te6U=&3Q
zHv)IaYEN8<{76$YCy!7Cc)W=-J%g|<_w}9qUIcU*XLrziFaw90aiMK)yQReTAlyjQ
z5cV>x&VXYi$<Ch3%A0}d3E2apEL@()a%+7pgg3vUWI)r;&O0K-B9<URb7q36T)aVN
zZM@R1ud<(<l{Uzi+YFR9#JtJ2)ov6$pXzoKRMeluk7D3LQ?8L}BS!B^8bvaws87fn
zPImoGqhdV^+kBR==M>q(-0<4vOUo7SEe!zr;!2!K2Wd;q2j{t#2bLx$1gC!3Z<8&`
z=kR8-!}-FJ@!OS0^4kecSW9ALtosjL`1tUr3cIS;?Q*|vT)g6|O%3M_BPBp)<`h!x
z$-k%Uxl%Oxu(XDGOZQ8qmlXW<WKVg=fI&<aLqPZy@?e^A#tF}pZC@ltRo|2h>lsp(
zYjeCck*(k|z{DL+Ji%24vrq#9?PHK2$pHQQcVE+z#1;C5;5>hy5l>ZB$-Gq<;(il%
zGsH1Vy*CsEq>@Krw~s935T0JMamL&7{lZ*G{@GLi`R|2jT~p0SgJ<4V()^O6R<QGg
zxRtLsaRx*|TC?!_N!gC{V`qhXJ7nfdy*{6!f<LM4$5zo&S8O;xQ`chM|9<Dlkdb1h
zh<!N{P{k7}@M7QZt*3~gvx~ym>D78`%F=jRob_CTW#_NGinrLPEwy($bGMs&Zvsml
z)9MJw?EN{Cqtl0RIyeBJ`X!!wKXemg?#KCiMFu^+t@ScIj=TuwSTzOOsC8JNIUXWt
zh5gy1c@f=gbEe)?jN}mPE#diu_u9GL`C7Nu?;s=CRf!^Ev?>{M{*<B@hY#qp=eRPQ
z=sNO4E(cfN_3*fP;@V(7VsR2IV4n4YEMf-R`g2}uGnesMFv6TLtruUD>*EnQPp)iB
zU*#?s)>=i5Znjp@z+4O0@<*wnr5It2c_0^MXV(w8l0BCCF9{>BepbT|5ffm;s8q_r
zL8hzj`v^$&HgTjXfL%;@dY^DAiV+}JU)8a#iv{4ht|7+4gacsGXmX<*vY?!rvLV_e
z=9>Y(LzOFrq1&2`xVRo{x!$Gv>CZ*GDDyurl7t`%2%v*$RrALh&afj0yuDw#YD2ds
z<^xhTQ_xtH%%#3{Mf0v^^L?Q*BGhrHynQvZpxd_8GtPF9vS^q{{Kqo`N8B9~3OBAZ
z&x3}|w*d%w>2;cW8xDD&|DE_7<Bqa@|MVWl>#+BrnxYS^)T2R+O}DZiqdwe_F<y>h
zr~PY6K&(s&F#x|cGr3TB#N6DlRZuX9e32Y+Uz!i5O*WlSFdva95rLv>GCx)|ho|2m
zB9s7vD1Mx~<!KipapsEr-AhanSE!gZSKD9yKZL)Q({isi>==#WOMrpRUpmMr@Q+G9
zW31|@f1X__4@-+z_l${fLanz#6Pp7Jh$IxM-951PtO0#OmbjXsMG9Nsc4(O3`Bl+b
zG**(U|J5S{f1u^HMi>hx>~P25u>HICbw?@%pC#9vl`rah$h!M`Zb2!IjC&oP?p%wq
zFvS32J?LY<bshhk<p(nhxmRp|#gg|`D(2r;%h|kbia23k-otSXW87;>uGO+|WduCl
zSJYRd>fLJ#Np}?<xbw(s+`S4FNJ^;wU`4#m+~sI!qVJX)-;PP@&DFrTC{fk?`26t`
zI0_7<s%Oeg^L7pLx2bY>hOji;j?G$j2A#zFm1d6M)<&f_TTCeU>-|SLL(=En?mzZ<
zD{pbB+tLvKZ8FFl;lC@1^J+)Vv35{3*F?BsXW9+C7z|xb?a8coXMcJ23#$sNNuD5)
zxAWb1_n6Bzs5|#Z30?e|*=)a|YG=vpDLkN<jFqp1RZjzVVlLU>WVJKBFAPmlSbvp*
zJBdkBqJbb~qKf#CJDe2FWuHKds^g+hJ@%hUvT4PIjIgl6WTd#ACPZ;^hwCMtPuGXf
zm2Yr<xtYyeY&c1c83CExlbnm?Rqy~eui`}QHJ%W=Vz5}KkP^frS*gn;Aq3*{cmM{O
zV8S6upK?=t-R2_A)hyq<eiGe|3agWYp1k^0@^|_zH7BHi4tyyP>5TEyBFeZ#JoDb8
zt}^Bh5xZ&we8R8uBB`&SQpCx9Bn39Jd}8)Q#ymIxU!iQQY>FguHNny4R15Rq<Namp
z1ER7&r5-x+vzqt&5=lfsSs&_%pWa|p-Eb*w362-iD@AF0)^QcM0MpZ_4e~*Qfg0X7
z7jvzlNz!%PBqSEHxYpIq614lX{egM?I({a{-9%#LwQq3p-dRtFa+dqo(`j$8a3jvn
zUUKu{$rT?R8tx;t7B}~`*{GK9V1GkG`<O?9H6xSp;9+|>KLzj({Cr^2(#_X@B(R5a
zEMf?#-(l75$4mDPb*iytd%*?J4K(AN4QIz%p@)j_iMX4i6z|6ZDHUKjU+YJ0m)qN+
zNz<dV2{P%2Zd@~NW4Xx(d}a^a^8i+<YpdzIZpRA0t%R7D{hRrGD#;5(cwR9)PqZ>X
z2B^xO-wk;RluV6t!q8j^T63+K{qTnS*>Cc$-Hqomxj_V#ZOzQj?P?SZ<6~C-@FfyF
zeMbnmnI4d_oQrr9Qn-%gZd>?HBP=<Y`N11ALjlcSm35g93Fy4YZ~P{5bi68zRp$B<
zb;Av`497@=>L<Ni!_l@eH$#U+q_X(5dJE^#zZ*8Uf8Vy@%HK8T1X1|jxnrTIu}6uz
zKI0fJJZ1Jjwq%0=;5M2vE`c6=3s-52FTKss77IO=sUb?uaQ$PxzG1H5-8zU%kdvuN
zw17ao&F_5zOVVEpEar|ob+q_1hQ&+kG-Z3{D5gm2N7$vR?$^w9%c-Uo?YJ+ZuUmXH
zc;ptAP;ns`{sX^N0bK!*(ke>D+Ha#SGDA{u#>@c(^E-9UsPi=!_AMY<{bSSDM-uT(
zH3MrUJ&rg*KjoR1u2!!IJ)PU{3X{Q1rk3pM2@I&bZG%0_e_lpyhH}IS`Aa#tG{@#8
z6#au)xByV=_YBlh{RPjl;toq2<^uYVB~8G^^deM!qnvN+ZqCqYMla!oYY=LZzSL3=
zRM3l5WAb84d=GmWk(t&5Mi4(l0JjeO7HH;?g0Xk{C4ZkMJHM6eV_sKVb#}BYhykEL
zD5Idj&AakfT2Kh{EATgJ%gj6<@(B%qA;>@jZ)(w<myk_1`|z7{XHiHCFkAf>=LGVA
z@BA7X(6mm|tdH+tnrF*pUw}2S2M}wv@}3Cil*#@j{UNRhpyZO%tdk;%k5OIQnAhnn
z@3$Fmx-Wcd{nLBcW@*L6=b7xz;FG0hdQsFm7g&tscO`fP8w!NtwSzyQU%0Hy@OA8h
z&eUQ8G=Zdyfje3YjX{BPb{S790Iqk|K+eP%koZ{-SUXm<TkMSzV#Uxteo%!;%}G?P
zoRr-J5bTBh!%rARh9%4zA8*3Yg_4h34^_g18Ur~$q^};L&9lU>fXlEPKl<w(nc2cQ
zrrkplzv!r&S@?q!!_o`-_}7FxTfi6XN9uaRcB}Elz1!b!&5pqRPTeNps~V$P6sHX)
z&Uvt!ToyzgqZmgGkE2nHqv_=S2>xctul56A@&mwb2oR8_Ls28UFz)B-Y2WWEL>?oa
z-K!29t=0NoEZ<Qz0|YuY^`^2TC1*=nJOZCntHF7(BXoF6H)4RKSV|&p{fqZ-MbE13
zkk?9V(o78)+NV`soP^e)`cjHY!IR)%@9(D}+X*+;?-xl3V%MN4PdOu6SZO2E@@e96
zW2ofgsKUDNNn@y%e>!Tn+bqdqU-@s>bAEGm>gGTj_rBuwm9v`ONKp+r>Q>mZ4QN!o
z&wRL);ak}4KjW-ehi?SUb8PcO)ZMl#C2(?x76b9a2&i8yGoxi6+5P5Q`4YPSjq50(
zX1pwJ-SmD&z6^z9AJMF&M=DD!@R39|<f&Q<xC^y*YQtBxeK796@^(CBihGzL<~2FZ
z?KPd(r-(+muHeMMe**~gea_>)^<gtYDJUTK%lmT9AE-5A=Y{deGUge`z%M7x)Pfss
zM94lv`OS*iGod8)FQGzmc^*Z9Qjv4hc`vH%3zuToq_<V7{Qbqk*tn89OHHYl`#(`z
z-ON}rn%-3L6KEcq#C;1iU4&1o2V?Z7*3K`tD4t-jq*ws(%K=iL@TmV&s75#h<+6O0
zpmo{5W(xAneHKaam1gZM1V+Xe;zlT^N4BZp*8C{U&Z9+M1Z}A8vg)3>E*z`B-%G!H
zTt3~x<8OStnCZ7)*C>fldD(NJ$kUxbQrY>-*TLWN+lfvmQIK-!crM7hPRc^x_59Yg
z_#yDEW6GmB!d1=-Rj?aYuaWoLbXDL%)Ynn3#n!FNZ-%fE6tPKK1qhp8Z6D8=&L_g!
z%;TaBnU(5^kQ%c*cB0~N(rie9Oc+uVv1!+`CVd~j3%>tX@+9bX{7r^FwG(Y;QfFn(
z0<zb9ahILU3^O2%bhHm5QMgMDs5uOI$r3{CHL|3LYGzV71C%VE?|JOtI1x-}S4)HV
zeom)du3V)ZeLJzWTNf${dow#zhbF3QnMQF<Gxq%HY_Vdh&*{ROnU%l|qCcxu`o^EI
z+Hv(o@}i4;u)Ht2;>|?>&zFYXexl3n-1_jXjyLfD_SJ+h47-Ppw^Ci}mHtPC@jF0|
zGBCiMkXPg@9h@5?3>Slo+T{Td=Yw(+;=XHjl?<DM-tURFnxdo(@P+L(SX?CS@aLMJ
zF-R^%%6h+gU<k{!RC;v8Wfg7%ik^Sw^@);-LoYtoA;UllzlQVg3d&u0kTy4($7T(s
z8ct+H4*u|F<!kiR%0=aYdw->Jd$rwQg4ahmtj@%TQ=f>33~#27u#d-l+_fj|{RTkP
zf29`Fa<!fn<6@=56PHp7Nnw_F>}d_O)#h)vOQcUWD2!BMjd8tk5HMfR?G$J`n96q>
zAW5(b1{i@sonbe;1n)qs1`2+E6;8n2{LsY5nnkKr);1y^Zce=?#9mKbu|Jbsn27as
zG2c$LXplAO^7a*#+TgKgl{Lj(;eaKlfdBzCp;aE`F;%2L198bES7bsu<6MIt|45gG
z7^B|^CAMN7IV~*mHp)gRA#!dX0oQRo3?H&EV7ED3e`QkO=x3-2cu_R0a;YAx{$_Lc
z(TfZsBMv=g#6uCm%zw22>}i}XSHs?y>84Y81Mfb@+o$BLbFqcrz_kegZWdWnagYeU
zt}Xyu;v2`0?l)9At7pHPqtC}`P#1ENDCKE^-e5jC0GV@O1K*aqZ&cz<W*mz|xFyNL
z5luuGe6zOr1_p*kATb}cH6RYZ^|P+iCM9<xJQji%VOCD+{}O&hktYZ^H*Bv+R0ZA2
zQLpdlm85FoYI^VdK}x*X9b$OU!3hTv;Qoy+REX1UJVYr8!$JJn?}?#vd8e>NAn4-$
zO6x~0?xD5Rb9=|buG;~L<*k7`nt^HN<we%dNT!sqMf+i=q@sM&gEUxQN*BeWzf@Mt
zxFw%um?NmGfb%%T-6}dYTDtS#Vmt><%UT9x_FhE3o|*fQ(}LS^47b2g`S0KG{D&0V
z{n?n$!tsP5JO9r4(piI4)AP=<<3za?uRsWkWW(NNJa30e1^|!*$)d9{-9hv@B*|;(
z4uJQ-gMYCeZb!H?sr4Ftt}MRA?H-rg#02Jtig6#O(|k|jV)Rk8k<V&MI?StQ{}`vX
zK&*(fc7KJf*`K!&`8b6cNe&M<ibdAuZG92VqqgL*s@uaI)GjJxElzOn7B=&}Gs_Cx
zA$%Us*B?+5YhIb7&rt5z;aPduAv^4<`pT1huznowRk9Ylwj1}CFzm+KkAg?N-SARX
zvX6ut_!_X(0JEOc)uYq>^@`<FJ(otilN5lx`SQN?8!V2XK=NX}#JJiL|1YBylZ{68
zE@!Q;m(~1%NlUdmbB^%|8L^m;XMJSjlc5<k#A=+Ms&Q~g^as*3W~gL?Qw}-YcI&ff
zUfnLW-ls-IfyowwrUhK2Z(@q{PLe>p_0Q2Y_q|hn2H8f+aZbwoA8wS^dW<Qk&|<6h
z<#F=NuaQb)N@Jp<*;OMWW1+HQ0yA~>z{3NF_W8r<{5Fmi^6Bx5m!84?s}B($DRabQ
z3yTIP?Ywz<`DoY`@HIbja6IqM%0mGcq~rM}hr_xP<%o0%pP^%u8nvX<ikdXpj~|3~
z$rtjd^3>`rseH%mJCq0QA_Gg?q{n0|UWEnpERKH8I%PGUTu9vcsOcqiJbM^ma=QQx
z5l_Yj8V`0v&~=@xBtE2^vqN#(aq{W%9*xBDTGcXvwR}Q#84J={xUo@BCz=4>^Jf<b
z#41ahh(d%2VdFYF+|5zPj0V-PG<#<ad+R<_)JIbI@NBn`8RMgLQZ11`nXJG|bSb?u
zUvdP9AyTk@jL-Ewwf%MHcY{Vsw>}-SX%r{|b%#IJ*wyqpTlRy6aj+_&g4UQi+OMwh
zT9Z0N(#K{H=c*>zOHCD!le1)^y5{I3dRX(wqQ5E>O`9A6hrq?AaE+&5s*mVnIe0f3
zS`->y3BR813q_M2C0m$brQDqT;ctRURW6@MygC@z8Q45qxaebnk(vSS{w#_%-q&8&
zwww&He>e6S_{yS+&vMk(7GXbFOhFW2g<U>Hr&~s!_yxBx?;~g|uj$W0Uv*zQfBk3d
zm_5KkD0=x|O-P{2`{L+q<2v*dcHf%FkHOj&i%iy{lRe!@S{gSYeu~9+q8=B`#ZE3o
z{XQ+JDzq%VBW8rvy`-a`v6v?6r)m+ZA(+fd*v)9-ZPr)yTS^p@4SHJnegP#TO-~XO
z!$rVeF`WBn&>LeX7y<n+Q;@?K@#12v7RLG8`%^MRPFUFwzR<lER^=2g7r?5<o<uhO
zD5XQjp_Yx9HO)j+{qOxao69u=t5C;gI_4kp!X#^VJZM@V<i&dWs0HxUEx5g(q+LTa
zXh!e4LjtW$cOjQhXB(?Tle;5gv~p5}x5ApyuHqe)UQ8VN#{KB<<7P;;H_dgkvro(F
zNu#O<&qky6RT(RqSw4~dkF<_LAa9rTjfjcQ&c$C^sv@&z)*L4#)Fse}cqHdEi2vHg
zd*VA;DNr(LM*UJv$n4LgPM%!M)Vw2sw%Qmj%k|SJI6n#MI@<mbJBDI;`L>r>L#yh>
zlm)<OPS%$zZPDdg!!>)vG9Gw8lP-xm!ljy<85V3F<jxJoUiEJav3ii@wIC8Y^^&Pu
z-6!;hvtMNiMB8uOhwXP$@h`n1z;Ev*iN4Lks8N7MnEZdc-$fSrR8I2PxqcZR-tbHV
z(1^uD-yUyvTgu1GFLP~WD)h-)%=)u}A_CeP0D!G%o$^yfoY8;)l*gUKv$rWW@{CBm
zddw%157{S>$=;zR&Mz|S*Ex(BJMEHZj$y!h(PV6Bvs|#UGyaM^FA$ab2V^<@&G?_?
ztW***Chwx%uOXSauUsIxMKB$JSiN9-pGV4CNRFiNn)+tkRKAy`nwQS#O=K;r8MdN?
zfYwaqwY~?JQyCA(0|TxqNChu#04zvzrR5Lcmt6OxVo_-;!-QmhYhXB;+%%M+T`}k`
z1RqcVNo>RU-eRSWfXb|azBnxHl6;`@!1d_Y4vxcB0ISUI{lQveVTZNHR)!+0|1}bX
z)MUtwem{xS@_!#!OwE@`!nSj3N8Pt{K2>cI{)Sb+PqPqVmDh86WQtR}KC~KwW<9aP
zaP+4~81ESJzp|a$Z(v?zbW5fh$ZgDKWMS*%c}-Rl0p)jPW^D+{d^w=}_}PEvn!7OR
zRC$C$BP^c-mIuyDel$k;^Za^LAffi7_|<!Y!pEm-I^gKKrQQXW`xTs|8zebW!6!Ki
zA{aRG^vA87SN~@h62U7V2Ox5fMT^X7ja4oD=4CO7E=aeJ^MMp`Jv*%u21^5gKdVZ|
zdP(OQ-E^ClOvwK~j8ORi*5X-&#V^WjKnn8%3a#X8XxJTgkF3loZZtWv1J3%&cgx(6
z{Qs_3bt7vzswByL;Ai&-BOUaAgu}y6m2_+N%|k5r{&PMbgm`THz;o^V0a>VfUH^YF
z5(<XJEjL!my`FMuj`lj6^x+QvZ&o}k7W(pH!H8L7>h7W1f(b)$<@Z(|4{pVstgU{O
z_Y!>~;S&3<-8cS6#D7$uL-@ny>;(P$%I}wr{se?EF?xaiw|dlqOj4mZ_#eT*U?=n9
z_7rUyIh<u-D+xl5vD?QCFWHIhUrUi^19p?LN|!v)|IuO?Nr$YHw_iOyooKw6(Gv4j
zM{AXVbvx6!3Ay@gh+|f0Hdtsk^m>7ZC`#%U#m|6SQso)D2E#ttQ`>hN`W+vr@BQGR
z8lVTguRzd{0Qw{~^PBa<bkcVK$|yel_h1CD(8P!XsW9|Y$KiNU=cfG($O|!qVCfUp
z3X${>7Rn>;fmD=HBL6xk+e>sG$W-Om&%ovXACS*=$2>zb`=0tuis3_1C_r6VTd6|9
HGVK2VN*#5$

diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000000000000000000000000000000000000..66d0e209c647623c51d1d091376d511db70232f0
GIT binary patch
literal 9911
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

literal 0
HcmV?d00001

diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml
deleted file mode 100644
index a68666e15..000000000
--- a/app/src/main/res/values-land/dimens.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <dimen name="chatlinePaddingVertical">13dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 3b53a5e62..000000000
--- a/app/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <dimen name="action_bar_default_padding_start_material">8dp</dimen>
-    <dimen name="chatlinePaddingVertical">17dp</dimen>
-</resources>
diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
deleted file mode 100644
index 64c4e0800..000000000
--- a/app/src/main/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <dimen name="activity_horizontal_margin">64dp</dimen>
-</resources>
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
deleted file mode 100644
index 05ae0682b..000000000
--- a/app/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <!-- sender colors -->
-
-    <attr name="senderColor0" format="color"/>
-    <attr name="senderColor1" format="color"/>
-    <attr name="senderColor2" format="color"/>
-    <attr name="senderColor3" format="color"/>
-    <attr name="senderColor4" format="color"/>
-    <attr name="senderColor5" format="color"/>
-    <attr name="senderColor6" format="color"/>
-    <attr name="senderColor7" format="color"/>
-    <attr name="senderColor8" format="color"/>
-    <attr name="senderColor9" format="color"/>
-    <attr name="senderColorA" format="color"/>
-    <attr name="senderColorB" format="color"/>
-    <attr name="senderColorC" format="color"/>
-    <attr name="senderColorD" format="color"/>
-    <attr name="senderColorE" format="color"/>
-    <attr name="senderColorF" format="color"/>
-
-    <!-- mirc colors -->
-
-    <attr name="mircColor0" format="color"/>
-    <attr name="mircColor1" format="color"/>
-    <attr name="mircColor2" format="color"/>
-    <attr name="mircColor3" format="color"/>
-    <attr name="mircColor4" format="color"/>
-    <attr name="mircColor5" format="color"/>
-    <attr name="mircColor6" format="color"/>
-    <attr name="mircColor7" format="color"/>
-    <attr name="mircColor8" format="color"/>
-    <attr name="mircColor9" format="color"/>
-    <attr name="mircColorA" format="color"/>
-    <attr name="mircColorB" format="color"/>
-    <attr name="mircColorC" format="color"/>
-    <attr name="mircColorD" format="color"/>
-    <attr name="mircColorE" format="color"/>
-    <attr name="mircColorF" format="color"/>
-
-    <!-- Background and foreground colors for UI -->
-
-    <attr name="colorForeground" format="color"/>
-    <attr name="colorForegroundHighlight" format="color"/>
-    <attr name="colorForegroundSecondary" format="color"/>
-    <attr name="colorForegroundAction" format="color"/>
-    <attr name="colorForegroundError" format="color"/>
-
-    <attr name="colorForegroundMirc" format="integer"/>
-
-    <attr name="colorAccentFocus" format="color"/>
-    <attr name="colorDivider" format="color"/>
-
-    <attr name="colorBackground" format="color"/>
-    <attr name="colorBackgroundHighlight" format="color"/>
-    <attr name="colorBackgroundSecondary" format="color"/>
-    <attr name="colorBackgroundCard" format="color"/>
-    <attr name="colorBackgroundDialog" format="color"/>
-
-    <!-- Tint colors for drawer -->
-
-    <attr name="colorTintActivity" format="color"/>
-    <attr name="colorTintMessage" format="color"/>
-    <attr name="colorTintHighlight" format="color"/>
-    <attr name="chatlineExpandedSize"/>
-
-    <!-- Icons -->
-    <attr name="colorOffline" format="color"/>
-    <attr name="colorAway" format="color"/>
-    <attr name="colorFill" format="color"/>
-
-    <attr name="formatBarTheme" format="reference"/>
-    <attr name="cardStyle" format="reference"/>
-</resources>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d877d19e9..9e55d323e 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,37 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
 <resources>
-    <color name="colorPrimary">#0271B3</color>
-    <color name="colorPrimaryDark">#02588c</color>
-    <color name="colorAccent">#afb42b</color>
-    <color name="colorAccentFocus">#40afb42b</color>
-
-    <color name="colorFillLight">#757575</color>
-    <color name="colorFillDark">#ffffff</color>
-
-    <color name="colorOfflineLight">#757575</color>
-    <color name="colorOfflineDark">#B3B3B3</color>
-
-    <color name="colorAwayLight">#959595</color>
-    <color name="colorAwayDark">#939393</color>
+  <color name="colorPrimary">#0a70c0</color>
+  <color name="colorPrimaryDark">#105a94</color>
+  <color name="colorAccent">#afb42b</color>
 </resources>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
deleted file mode 100644
index 0199718e1..000000000
--- a/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <!-- Default screen margins, per the Android Design guidelines. -->
-    <dimen name="activity_horizontal_margin">16dp</dimen>
-    <dimen name="activity_vertical_margin">16dp</dimen>
-
-    <dimen name="message_horizontal">8dp</dimen>
-    <dimen name="message_vertical">2dp</dimen>
-
-    <dimen name="action_bar_default_padding_start_material">0dp</dimen>
-    <dimen name="chatlinePaddingVertical">17dp</dimen>
-</resources>
diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml
deleted file mode 100644
index 046d53ec0..000000000
--- a/app/src/main/res/values/ids.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <item name="custom_url_span" type="id"/>
-    <item name="custom_channel_span" type="id"/>
-    <item name="item_create_account" type="id"/>
-    <item name="item_account" type="id"/>
-    <item name="item_backend" type="id"/>
-</resources>
diff --git a/app/src/main/res/values/preferences.xml b/app/src/main/res/values/preferences.xml
deleted file mode 100644
index bc7c18200..000000000
--- a/app/src/main/res/values/preferences.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="preference_last_account" translatable="false">preference_last_account</string>
-
-    <string name="preference_font_size" translatable="false">preference_font_size</string>
-
-    <string name="preference_theme" translatable="false">preference_theme</string>
-    <string name="preference_theme_title">Theme</string>
-
-    <string name="preference_colors" translatable="false">preference_colors</string>
-    <string name="preference_colors_title">Use mIRC Colors</string>
-    <string name="preference_colors_summary_on">Strip mIRC colors from messages</string>
-    <string name="preference_colors_summary_off">Show mIRC colors in messages</string>
-
-    <string name="preference_hostmask" translatable="false">preference_hostname</string>
-    <string name="preference_hostmask_title">Show Hostmask in Messages</string>
-    <string name="preference_hostmask_summary_on">Show the full hostmask in server actions (Join, Part, Quit, etc)</string>
-    <string name="preference_hostmask_summary_off">Show only the username in server actions (Join, Part, Quit, etc)</string>
-
-    <string name="preference_lag" translatable="false">preference_lag</string>
-    <string name="preference_lag_title">Show Connection Lag</string>
-    <string name="preference_lag_summary_on">Show the latency between core and client in the action bar</string>
-    <string name="preference_lag_summary_off">Don’t show the latency between core and client</string>
-
-    <string name="preference_brackets" translatable="false">preference_brackets</string>
-    <string name="preference_brackets_title">Classical Nick Style</string>
-    <string name="preference_brackets_summary_on">Show nicks between brackes in chat</string>
-    <string name="preference_brackets_summary_off">Show plain nicks in chat</string>
-
-    <string-array name="preference_theme_entries">
-        <item>@string/themeQuasselLightName</item>
-        <item>@string/themeQuasselDarkName</item>
-        <item>@string/themeSolarizedLightName</item>
-        <item>@string/themeSolarizedDarkName</item>
-    </string-array>
-    <string-array name="preference_theme_values">
-        <item>@string/themeQuasselLightId</item>
-        <item>@string/themeQuasselDarkId</item>
-        <item>@string/themeSolarizedLightId</item>
-        <item>@string/themeSolarizedDarkId</item>
-    </string-array>
-</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6b5d0c2a6..771ed5d69 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,66 +1,6 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
 <resources>
-    <string name="appName">QuasselDroid</string>
-    <string name="appDescription">An Android-based client for the decentralized Quassel IRC client.</string>
-    <string name="appDescriptionLong">Quassel is a distributed, decentralized IRC client, written using C++ and Qt. QuasselDroid is a pure-java client for the Quassel core, allowing you to connect to your Quassel core using your Android™ phone.</string>
-    <string name="appLinkCommunityTitle">Google+</string>
-    <string name="appLinkCommunityUrl" translatable="false">https://plus.google.com/communities/104094956084217666662</string>
-    <string name="appLinkGithubTitle">GitHub</string>
-    <string name="appLinkGithubUrl" translatable="false">https://github.com/sandsmark/QuasselDroid</string>
-
-    <string name="notificationReportCrash">Reporting Crashes</string>
-
-    <string name="defaultPort" translatable="false">4242</string>
-    <string name="labelAllNetworks">All Networks</string>
-    <string name="labelNoTopic">No Topic Set</string>
-    <string name="labelPlaceholder">Write a message…</string>
-    <string name="labelUserOnHost">%1$s on %2$s</string>
-
-    <string name="confirmationCertficate">Do you trust this certificate?</string>
-    <string name="confirmationDelete">Are you sure you want to delete "%1$s"?</string>
-    <string name="confirmationUnsavedChanges">There are unsaved changes on the current configuration page. Would you like to apply your changes now?</string>
-
-    <string name="formatBold">Bold</string>
-    <string name="formatColor">Text Color</string>
-    <string name="formatFill">Background Color</string>
-    <string name="formatItalic">Italic</string>
-    <string name="formatUnderline">Underline</string>
-
-    <string name="labelAccountName">Account Name</string>
-    <string name="labelAccountPassword">Password</string>
-    <string name="labelAccountUsername">Username</string>
-
-    <string name="labelCoreHostname">Hostname</string>
-    <string name="labelCorePort">Port</string>
-
-    <string name="labelLoginPassword">Password</string>
-    <string name="labelLoginUsername">Username</string>
-
-    <string name="statusBacklog">Loading Chat History</string>
-    <string name="statusConnected">Connected</string>
-    <string name="statusConnecting">Connecting</string>
-    <string name="statusDisconnected">Connection lost</string>
-    <string name="statusHandshake">Logging in</string>
-    <string name="statusInitData">Loading Networks and Channels</string>
-    <string name="statusWelcome">Welcome!</string>
+  <string name="app_name">QuasselDroidNG Test</string>
+  <string name="connection_service">Connection Service</string>
+  <string name="connection_service_description">Keeps a connection to your core to allow for notifications, and to transmit messages.</string>
+  <string name="crash_text">\"QD-NG has crashed\"</string>
 </resources>
diff --git a/app/src/main/res/values/strings_actions.xml b/app/src/main/res/values/strings_actions.xml
deleted file mode 100644
index ab5ab0d3b..000000000
--- a/app/src/main/res/values/strings_actions.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-
-    <string name="actionAddAccount">Add Account</string>
-    <string name="actionAlias">Aliases</string>
-    <string name="actionCancel">Cancel</string>
-    <string name="actionClose">Close</string>
-    <string name="actionCore">About Core…</string>
-    <string name="actionConnect">Connect</string>
-    <string name="actionDelete">Delete</string>
-    <string name="actionDisconnect">Disconnect</string>
-    <string name="actionEditNicks">Edit Nicks</string>
-    <string name="actionEditServers">Edit Servers</string>
-    <string name="actionEditTopic">Edit Topic</string>
-    <string name="actionHideEvents">Hide Events</string>
-    <string name="actionHidePerm">Hide Permanently</string>
-    <string name="actionHideTemp">Hide Temporarily</string>
-    <string name="actionHistory">Input History</string>
-    <string name="actionIdentities">Identities</string>
-    <string name="actionIgnore">Ignore List</string>
-    <string name="actionJoin">Join</string>
-    <string name="actionJoinChannel">Join Channel</string>
-    <string name="actionLogin">Login</string>
-    <string name="actionManageChatLists">Manage Chat Lists</string>
-    <string name="actionNetworks">Networks</string>
-    <string name="actionNo">No</string>
-    <string name="actionPart">Part</string>
-    <string name="actionSave">Save</string>
-    <string name="actionSearch">Find in Buffer</string>
-    <string name="actionSettings">Settings</string>
-    <string name="actionShowHidden">Show Hidden</string>
-    <string name="actionUnhide">Make Visible</string>
-    <string name="actionYes">Yes</string>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings_chanmodes.xml b/app/src/main/res/values/strings_chanmodes.xml
deleted file mode 100644
index 26986d799..000000000
--- a/app/src/main/res/values/strings_chanmodes.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-
-    <string name="chanMode_RESTRICT_TOPIC_NAME">Restrict Topic</string>
-    <string name="chanMode_RESTRICT_TOPIC_DESCRIPTION">Only channel ops can edit the topic.</string>
-
-    <string name="chanMode_BLOCK_COLORS_NAME">Block Colors</string>
-    <string name="chanMode_BLOCK_COLORS_DESCRIPTION">Messages containing color codes are blocked, as if the user was muted.</string>
-
-    <string name="chanMode_STRIP_COLORS_NAME">Strip Colors</string>
-    <string name="chanMode_STRIP_COLORS_DESCRIPTION">All messages are stripped from color and control codes.</string>
-
-    <string name="chanMode_ONLY_INVITE_NAME">Invite Only</string>
-    <string name="chanMode_ONLY_INVITE_DESCRIPTION">Only invited users can join the channel.</string>
-
-    <string name="chanMode_ONLY_SSL_NAME">SSL only</string>
-    <string name="chanMode_ONLY_SSL_DESCRIPTION">Only users connected via SSL can join the channel.</string>
-
-    <string name="chanMode_UNLISTED_NAME">Unlisted</string>
-    <string name="chanMode_UNLISTED_DESCRIPTION">The channel will not be listed anywhere.</string>
-
-    <string name="chanMode_BLOCK_UNIDENTIFIED_NAME">Block Unidentified</string>
-    <string name="chanMode_BLOCK_UNIDENTIFIED_DESCRIPTION">Blocks unidentified users from joining the channel.</string>
-
-    <string name="chanMode_PARANOID_NAME">Paranoid</string>
-    <string name="chanMode_PARANOID_DESCRIPTION">Disables the KNOCK command and the channel will not be shown in whois replies. Additionally, the channel won’t show up in listings.</string>
-
-    <string name="chanMode_REGISTERED_NAME">Registered</string>
-    <string name="chanMode_REGISTERED_DESCRIPTION">The channel is registered with channel services.</string>
-
-    <string name="chanMode_MODERATED_NAME">Moderated</string>
-    <string name="chanMode_MODERATED_DESCRIPTION">Blocks users without voice from talking.</string>
-
-    <string name="chanMode_BLOCK_EXTERNAL_NAME">Block External</string>
-    <string name="chanMode_BLOCK_EXTERNAL_DESCRIPTION">Blocks users not in the channel from sending messages to it.</string>
-
-    <string name="chanMode_ANTIFLOOD_NAME">Flood Protection</string>
-    <string name="chanMode_ANTIFLOOD_DESCRIPTION">Prevents users from flooding the channel with messages.</string>
-
-    <string name="chanMode_PASSWORD_NAME">Password Protection</string>
-    <string name="chanMode_PASSWORD_DESCRIPTION">Users will have to enter a password to join the channel.</string>
-
-    <string name="chanMode_LIMIT_NAME">Channel Limit</string>
-    <string name="chanMode_LIMIT_DESCRIPTION">Sets a maximum limit for users in the channel.</string>
-
-    <string name="chanMode_REDUCED_MODERATION_NAME">Reduced Moderation</string>
-    <string name="chanMode_REDUCED_MODERATION_DESCRIPTION">Messages normally muted are still visible to ops.</string>
-
-    <string name="chanMode_BLOCK_NOTICE_NAME">Block Notices</string>
-    <string name="chanMode_BLOCK_NOTICE_DESCRIPTION">Prevent notices from being sent to the channel.</string>
-
-    <string name="chanMode_DISABLE_INVITE_NAME">Disable Invites</string>
-    <string name="chanMode_DISABLE_INVITE_DESCRIPTION">Prevents users from inviting others into the channel.</string>
-
-    <string name="chanMode_AUDITORIUM_NAME">Auditorium Mode</string>
-    <string name="chanMode_AUDITORIUM_DESCRIPTION">Users can only see ops and themselves.</string>
-
-    <string name="chanMode_QUIET_UNIDENTIFIED_NAME">Quit Unidentified</string>
-    <string name="chanMode_QUIET_UNIDENTIFIED_DESCRIPTION">Prevent unidentified users from sending messages.</string>
-
-    <string name="chanMode_BLOCK_KICK_NAME">Block Kicks</string>
-    <string name="chanMode_BLOCK_KICK_DESCRIPTION">Prevents users from being kicked from the channel.</string>
-
-    <string name="chanMode_PERMANENT_NAME">Permanent Channel</string>
-    <string name="chanMode_PERMANENT_DESCRIPTION">The channel is not deleted, even when all users leave.</string>
-
-    <string name="chanMode_ONLY_OPER_NAME">IRC Operators Only</string>
-    <string name="chanMode_ONLY_OPER_DESCRIPTION">Allows only IRC Operators to join the channel.</string>
-
-    <string name="chanMode_ONLY_HELPOPER_NAME">IRC Help Staff Only</string>
-    <string name="chanMode_ONLY_HELPOPER_DESCRIPTION">Allows only IRC Help Staff to join the channel.</string>
-
-    <string name="chanMode_BLOCK_NICKCHANGE_NAME">Block Nick Changes</string>
-    <string name="chanMode_BLOCK_NICKCHANGE_DESCRIPTION">Prevents users from changing their nick while being in the channel.</string>
-
-    <string name="chanMode_JOIN_THROTTLE_NAME">Limit Joins</string>
-    <string name="chanMode_JOIN_THROTTLE_DESCRIPTION">Sets a limit for how many users may join the channel per specified timespan.</string>
-
-    <string name="chanMode_ALLOW_INVITE_NAME">Allow Invite</string>
-    <string name="chanMode_ALLOW_INVITE_DESCRIPTION">Anyone can invite users to this channel.</string>
-
-    <string name="chanMode_BLOCK_FORWARDING_NAME">Block Forwarding</string>
-    <string name="chanMode_BLOCK_FORWARDING_DESCRIPTION">Prevent other channels from forwarding to this channel.</string>
-
-    <string name="chanMode_ALLOW_FORWARD_NAME">Allow Forward</string>
-    <string name="chanMode_ALLOW_FORWARD_DESCRIPTION">Anyone can forward to this channel.</string>
-
-    <string name="chanMode_BLOCK_ACTION_NAME">Block Action</string>
-    <string name="chanMode_BLOCK_ACTION_DESCRIPTION">Prevents users from using /me in the channel.</string>
-
-    <string name="chanMode_BLOCK_CAPS_NAME">Block Caps</string>
-    <string name="chanMode_BLOCK_CAPS_DESCRIPTION">Prevents users from sending all-caps messages.</string>
-
-    <string name="chanMode_BLOCK_KNOCK_NAME">Block Knock</string>
-    <string name="chanMode_BLOCK_KNOCK_DESCRIPTION">Prevents users from using /KNOCK to request an invite.</string>
-
-    <string name="chanMode_CENSOR_NAME">Enable Badwords Filter</string>
-    <string name="chanMode_CENSOR_DESCRIPTION">Uses the network censor to block messages containing blocked words.</string>
-
-    <string name="chanMode_HIDE_JOINS_NAME">Hide Joins</string>
-    <string name="chanMode_HIDE_JOINS_DESCRIPTION">Users are hidden until they speak.</string>
-
-    <string name="chanMode_BLOCK_REPEAT_NAME">Block Repeat Messages</string>
-    <string name="chanMode_BLOCK_REPEAT_DESCRIPTION">Prevents users from sending the same message repeatedly.</string>
-
-    <string name="chanMode_BLOCK_AUTOREJOIN_NAME">Block Autorejoin</string>
-    <string name="chanMode_BLOCK_AUTOREJOIN_DESCRIPTION">Prevents users from automatically joining after they have been kicked.</string>
-
-    <string name="chanMode_IS_SECURE_NAME">Secure Channel</string>
-    <string name="chanMode_IS_SECURE_DESCRIPTION">All users in the channel are joined via SSL.</string>
-
-    <string name="chanMode_BLOCK_CTCP_NAME">Block CTCP</string>
-    <string name="chanMode_BLOCK_CTCP_DESCRIPTION">Block CTCP messages from the channel.</string>
-
-    <string name="chanMode_ONLY_ADMIN_NAME">Admin Only</string>
-    <string name="chanMode_ONLY_ADMIN_DESCRIPTION">Allow only IRC admins to join the channel.</string>
-
-    <string name="chanMode_FORWARD_NAME">Forward</string>
-    <string name="chanMode_FORWARD_DESCRIPTION">Forward users who can’t join the channel to another channel.</string>
-</resources>
diff --git a/app/src/main/res/values/strings_coresettings.xml b/app/src/main/res/values/strings_coresettings.xml
deleted file mode 100644
index 6797493ad..000000000
--- a/app/src/main/res/values/strings_coresettings.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-
-    <string name="labelAliasExpansion">Expansion</string>
-    <string name="labelAliasName">Alias</string>
-
-    <string name="labelChatlistAddNewChatsAutomatically">Add new chats automatically</string>
-    <string name="labelChatlistHideInactiveChats">Hide inactive chats</string>
-    <string name="labelChatlistHideInactiveNetworks">Hide inactive networks</string>
-    <string name="labelChatlistMinimumActivity">Minimum Activity</string>
-    <string name="labelChatlistName">Name</string>
-    <string name="labelChatlistNetwork">Network</string>
-    <string name="labelChatlistShowChannels">Show channels</string>
-    <string name="labelChatlistShowQueries">Show queries</string>
-    <string name="labelChatlistSortAlphabetically">Sort alphabetically</string>
-
-    <string name="labelChatlistMinimumActivityNone">labelChatlistMinimumActivityNone</string>
-    <string name="labelChatlistMinimumActivityOther">labelChatlistMinimumActivityOther</string>
-    <string name="labelChatlistMinimumActivityMessage">labelChatlistMinimumActivityMessage</string>
-    <string name="labelChatlistMinimumActivityHighlight">labelChatlistMinimumActivityHighlight</string>
-
-    <string name="labelIdentityAway">Away</string>
-    <string name="labelIdentityAwayReason">Reason</string>
-    <string name="labelIdentityDetachAway">Away on Detach</string>
-    <string name="labelIdentityDetachAwayReason">Reason</string>
-    <string name="labelIdentityIdent">Ident</string>
-    <string name="labelIdentityKickReason">Kick Reason</string>
-    <string name="labelIdentityMessages">Messages</string>
-    <string name="labelIdentityName">Identity Name</string>
-    <string name="labelIdentityPartReason">Part Reason</string>
-    <string name="labelIdentityQuitReason">Quit Reason</string>
-    <string name="labelIdentityRealName">Real Name</string>
-
-    <string name="labelIgnoreRule">Ignore Rule</string>
-    <string name="labelIgnoreRuleIsRegEx">Regular Expression</string>
-    <string name="labelIgnoreRuleScope">Scope</string>
-    <string name="labelIgnoreRuleStrictness">Strictness</string>
-    <string name="labelIgnoreRuleType">Rule Type</string>
-
-    <string name="labelIgnoreStrictnessUnmatched">Unmatched</string>
-    <string name="labelIgnoreStrictnessSoft">Dynamic</string>
-    <string name="labelIgnoreStrictnessHard">Permanent</string>
-
-    <string name="labelIgnoreRuleSender">Sender</string>
-    <string name="labelIgnoreRuleMessage">Message</string>
-    <string name="labelIgnoreRuleCtcp">CTCP</string>
-
-    <string name="labelIgnoreScopeGlobal">Global</string>
-    <string name="labelIgnoreScopeNetwork">Network</string>
-    <string name="labelIgnoreScopeChannel">Channel</string>
-
-    <string name="labelNetworkAutoIdentify">Auto Identify</string>
-    <string name="labelNetworkAutoIdentifyPassword">Password</string>
-    <string name="labelNetworkAutoIdentifyService">Service</string>
-    <string name="labelNetworkAutoReconnect">Auto Reconnect</string>
-    <string name="labelNetworkAutoReconnectInterval">Interval</string>
-    <string name="labelNetworkAutoReconnectRetries">Retries</string>
-    <string name="labelNetworkAutoReconnectRetriesUnlimited">Unlimited Retries</string>
-    <string name="labelNetworkCodecForDecoding">Decoding</string>
-    <string name="labelNetworkCodecForEncoding">Encoding</string>
-    <string name="labelNetworkCodecForServer">Server</string>
-    <string name="labelNetworkCustomCodecs">Custom Codecs</string>
-    <string name="labelNetworkIdentity">Identity</string>
-    <string name="labelNetworkName">Network Name</string>
-    <string name="labelNetworkRejoinChannels">Rejoin Channels</string>
-    <string name="labelNetworkSasl">SASL</string>
-    <string name="labelNetworkSaslAccount">Account</string>
-    <string name="labelNetworkSaslPassword">Password</string>
-
-    <string name="labelNetworkServerHost">Host</string>
-    <string name="labelNetworkServerPassword">Password</string>
-    <string name="labelNetworkServerPort">Port</string>
-    <string name="labelNetworkServerProxy">Proxy</string>
-    <string name="labelNetworkServerProxyHost">Host</string>
-    <string name="labelNetworkServerProxyPassword">Password</string>
-    <string name="labelNetworkServerProxyPort">Port</string>
-    <string name="labelNetworkServerProxyType">Type</string>
-    <string name="labelNetworkServerProxyUser">User</string>
-    <string name="labelNetworkServerUseSSL">SSL</string>
-
-    <string name="labelNetworkServerProxyDefault">Default Proxy</string>
-    <string name="labelNetworkServerProxySocks5">Socks5</string>
-    <string name="labelNetworkServerProxyHttp">Http</string>
-
-    <string name="labelCoreUptimeValue">This core has been online since %1$s</string>
-    <string name="labelCoreUptime">Uptime</string>
-    <string name="labelCoreConnectedClients">Connected Clients</string>
-    <string name="labelCoreConnectedCientsValue">At the moment, %1d clients are logged in as you.</string>
-    <string name="labelCoreVersion">Core Version</string>
-    <string name="labelCoreCertificate">Certificate</string>
-    <string name="labelCoreAddress">Address</string>
-    <string name="labelCoreVerifier">The connection is verified by %1$s</string>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings_format.xml b/app/src/main/res/values/strings_format.xml
deleted file mode 100644
index e8a914ce5..000000000
--- a/app/src/main/res/values/strings_format.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <!-- Message format strings -->
-    <string name="usernameHostmask">%1$s (%2$s)</string>
-
-    <string name="messagePlain">%1$s: %2$s</string>
-
-    <string name="messageJoin">%1$s has joined %2$s</string>
-
-    <string name="messagePart">%1$s has left %2$s</string>
-    <string name="messagePartExtra">"%1$s has left %2$s (%3$s)</string>
-
-    <string name="messageQuit">%1$s has quit</string>
-    <string name="messageQuitExtra">%1$s has quit (%2$s)</string>
-
-    <string name="messageKill">%1$s has killed %2$s</string>
-    <string name="messageKillExtra">%1$s has killed %2$s: %3$s</string>
-
-    <string name="messageKick">%1$s has kicked %2$s from %3$s</string>
-    <string name="messageKickExtra">%1$s has kicked %2$s from %3$s: %4$s</string>
-
-    <string name="messageMode">Mode %1$s by %2$s</string>
-
-    <string name="messageNickSelf">You are now known as %1$s</string>
-    <string name="messageNickOther">%1$s is now known as %2$s</string>
-
-    <string name="messageDayChange">{ Day changed to %1$s }</string>
-
-    <string name="messageAction">* %1$s %2$s</string>
-
-    <string name="messageTopic">%1$s has changed topic for %2$s to: "%3$s"</string>
-
-    <string name="colornameClear">Remove Styling</string>
-    <string name="colornameMircColor0">White</string>
-    <string name="colornameMircColor1">Black</string>
-    <string name="colornameMircColor2">Blue</string>
-    <string name="colornameMircColor3">Green</string>
-    <string name="colornameMircColor4">Light Red</string>
-    <string name="colornameMircColor5">Brown</string>
-    <string name="colornameMircColor6">Purple</string>
-    <string name="colornameMircColor7">Orange</string>
-    <string name="colornameMircColor8">Yellow</string>
-    <string name="colornameMircColor9">Light Green</string>
-    <string name="colornameMircColorA">Cyan</string>
-    <string name="colornameMircColorB">Light Cyan</string>
-    <string name="colornameMircColorC">Light Blue</string>
-    <string name="colornameMircColorD">Pink</string>
-    <string name="colornameMircColorE">Grey</string>
-    <string name="colornameMircColorF">Light Grey</string>
-</resources>
diff --git a/app/src/main/res/values/strings_setup.xml b/app/src/main/res/values/strings_setup.xml
deleted file mode 100644
index 7012cca26..000000000
--- a/app/src/main/res/values/strings_setup.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="slideAccountSelectTitle">Select Account</string>
-    <string name="slideAccountSelectDescription">Please select an account from the list or add one</string>
-
-    <string name="slideAccountCoreTitle">The Core</string>
-    <string name="slideAccountCoreDescription">First, please choose which server your core is hosted on.</string>
-
-    <string name="slideAccountUserTitle">Your Account</string>
-    <string name="slideAccountUserDescription">Now, please enter the username and password for your account on the core. If you just created that core, we’ll set up this account for you</string>
-
-    <string name="slideAccountNameTitle">Customize Account</string>
-    <string name="slideAccountNameDescription">Give this account a name and icon</string>
-
-    <string name="slideCoreBackendSelectTitle">Select Storage Backend</string>
-    <string name="slideCoreBackendSelectDescription">Please select a database backend for the Quassel Core storage to store the backlog and other data in.</string>
-
-    <string name="slideCoreBackendSetupTitle">Configure Storage Backend</string>
-    <string name="slideCoreBackendSetupDescription">Please configure the selected database backend.</string>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings_titles.xml b/app/src/main/res/values/strings_titles.xml
deleted file mode 100644
index a6d2f907b..000000000
--- a/app/src/main/res/values/strings_titles.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="titleAccountSelection">Account Selection</string>
-    <string name="titleAccountSetup">Account Setup</string>
-    <string name="titleEditAlias">Edit Alias</string>
-    <string name="titleEditAliases">Edit Aliases</string>
-    <string name="titleChannelDetails">Channel Details</string>
-    <string name="titleChannelModes">Channel Modes</string>
-    <string name="titleCoreSetup">Core Setup</string>
-    <string name="titleCreateChatList">Create Chat List</string>
-    <string name="titleCreateIdentity">Create Identity</string>
-    <string name="titleCreateNetwork">Create Network</string>
-    <string name="titleEditChatList">Edit Chat List</string>
-    <string name="titleEditChatLists">Edit Chat Lists</string>
-    <string name="titleEditIdentities">Edit Identities</string>
-    <string name="titleEditIdentity">Edit Identity</string>
-    <string name="titleEditIgnoreRule">Edit Ignore Rule</string>
-    <string name="titleEditIgnoreList">Edit Ignore List</string>
-    <string name="titleEditNetwork">Edit Network</string>
-    <string name="titleEditNetworkServer">Edit NetworkServer</string>
-    <string name="titleEditNetworkServers">Edit NetworkServers</string>
-    <string name="titleEditNetworks">Edit Networks</string>
-    <string name="titleEditNicks">Edit Nicks</string>
-    <string name="titleHistory">Input History</string>
-    <string name="titleLogin">Login</string>
-    <string name="titleSettings">Settings</string>
-    <string name="titleTopic">Topic</string>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f645b9635..3c8869669 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,171 +1,24 @@
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
 <resources>
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
-        <!-- Customize your theme here. -->
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
-        <item name="colorAccentFocus">@color/colorAccentFocus</item>
-        <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
-        <item name="formatBarTheme">@style/AppTheme.AppBarOverlay</item>
-
-        <item name="windowActionModeOverlay">true</item>
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
-
-        <item name="colorDivider">#1FFFFFFF</item>
-
-        <item name="colorFill">@color/colorFillDark</item>
-        <item name="colorOffline">@color/colorOfflineDark</item>
-        <item name="colorAway">@color/colorAwayDark</item>
-
-        <item name="cardStyle">@style/CardView.Dark</item>
-
-        <item name="mircColor0">#ffffff</item>
-        <item name="mircColor1">#000000</item>
-        <item name="mircColor2">#000080</item>
-        <item name="mircColor3">#008000</item>
-        <item name="mircColor4">#ff0000</item>
-        <item name="mircColor5">#800000</item>
-        <item name="mircColor6">#800080</item>
-        <item name="mircColor7">#ffa500</item>
-        <item name="mircColor8">#ffff00</item>
-        <item name="mircColor9">#00ff00</item>
-        <item name="mircColorA">#008080</item>
-        <item name="mircColorB">#00ffff</item>
-        <item name="mircColorC">#4169e1</item>
-        <item name="mircColorD">#ff00ff</item>
-        <item name="mircColorE">#808080</item>
-        <item name="mircColorF">#c0c0c0</item>
-    </style>
-
-    <style name="AppTheme.Light" parent="Theme.AppCompat.Light.NoActionBar">
-        <!-- Customize your theme here. -->
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
-        <item name="colorAccentFocus">@color/colorAccentFocus</item>
-        <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
-        <item name="formatBarTheme">@style/AppTheme.AppBarOverlay.Light</item>
-
-        <item name="windowActionModeOverlay">true</item>
-        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
-
-        <item name="colorDivider">#1F000000</item>>
-
-        <item name="colorFill">@color/colorFillLight</item>
-        <item name="colorOffline">@color/colorOfflineLight</item>
-        <item name="colorAway">@color/colorAwayLight</item>
-
-        <item name="cardStyle">@style/CardView.Light</item>
-
-        <item name="mircColor0">#ffffff</item>
-        <item name="mircColor1">#000000</item>
-        <item name="mircColor2">#000080</item>
-        <item name="mircColor3">#008000</item>
-        <item name="mircColor4">#ff0000</item>
-        <item name="mircColor5">#800000</item>
-        <item name="mircColor6">#800080</item>
-        <item name="mircColor7">#ffa500</item>
-        <item name="mircColor8">#ffff00</item>
-        <item name="mircColor9">#00ff00</item>
-        <item name="mircColorA">#008080</item>
-        <item name="mircColorB">#00ffff</item>
-        <item name="mircColorC">#4169e1</item>
-        <item name="mircColorD">#ff00ff</item>
-        <item name="mircColorE">#808080</item>
-        <item name="mircColorF">#c0c0c0</item>
-    </style>
-
-    <style name="SetupTheme" parent="Theme.AppCompat.Light.NoActionBar">
-        <!-- Customize your theme here. -->
-        <item name="colorPrimary">@color/colorPrimary</item>
-        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-        <item name="colorAccent">@color/colorAccent</item>
-        <item name="colorAccentFocus">@color/colorAccentFocus</item>
-        <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
-
-        <item name="windowActionModeOverlay">true</item>
-
-        <item name="colorFill">@color/colorFillLight</item>
-        <item name="colorOffline">@color/colorOfflineLight</item>
-        <item name="colorAway">@color/colorAwayLight</item>
-
-        <item name="android:windowBackground">@color/colorPrimary</item>
-    </style>
-
-    <style name="RippleOverlay" parent="ThemeOverlay.AppCompat">
-        <item name="colorControlHighlight">?attr/colorAccentFocus</item>
-    </style>
-
-    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
-        <item name="colorControlNormal">@color/colorFillDark</item>
-        <item name="android:textColorPrimary">@color/colorFillDark</item>
-        <item name="drawerArrowStyle">@style/DrawerArrowToggle</item>
-
-        <item name="colorFill">@color/colorFillDark</item>
-        <item name="colorOffline">@color/colorOfflineDark</item>
-        <item name="colorAway">@color/colorAwayDark</item>
-    </style>
-
-    <style name="AppTheme.Light.Dialog" parent="MaterialBaseTheme.Light.AlertDialog">
-        <item name="colorForeground">#DE000000</item>
-        <item name="colorForegroundHighlight">#DE000000</item>
-        <item name="colorForegroundSecondary">#8A000000</item>
-        <item name="colorForegroundAction">#1a237e</item>
-        <item name="colorForegroundError">#800000</item>
-
-        <item name="colorForegroundMirc">0x1</item>
-
-        <item name="colorBackground">#FAFAFA</item>
-        <item name="android:windowBackground">@color/quasselLight_background</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#FFFFFF</item>
-        <item name="colorBackgroundDialog">#FAFAFA</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
 
-    <style name="AppTheme.AppBarOverlay.Light" parent="ThemeOverlay.AppCompat.ActionBar">
-        <item name="colorControlNormal">@color/colorFillLight</item>
-        <item name="android:textColorPrimary">@color/colorFillLight</item>
-        <item name="drawerArrowStyle">@style/DrawerArrowToggle.Light</item>
+  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <item name="colorPrimary">@color/colorPrimary</item>
+    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+    <item name="colorAccent">@color/colorAccent</item>
+  </style>
 
-        <item name="colorFill">@color/colorFillLight</item>
-        <item name="colorOffline">@color/colorOfflineLight</item>
-        <item name="colorAway">@color/colorAwayLight</item>
-    </style>
+  <style name="RaisedButton" parent="AppTheme">
+    <item name="colorButtonNormal">?attr/background</item>
+  </style>
 
-    <style name="DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
-        <item name="color">?attr/colorControlNormal</item>
-    </style>
+  <style name="RaisedThemedButton" parent="RaisedButton">
+    <item name="colorButtonNormal">@color/colorAccent</item>
+  </style>
 
-    <style name="DrawerArrowToggle.Light" parent="Widget.AppCompat.DrawerArrowToggle">
-        <item name="color">?attr/colorControlNormal</item>
-    </style>
+  <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
+    <item name="colorPrimary">@color/colorPrimaryDark</item>
+    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+    <item name="colorAccent">@color/colorAccent</item>
 
-    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
+    <item name="android:windowBackground">@drawable/bg_splash</item>
+  </style>
 </resources>
diff --git a/app/src/main/res/values/themes_quassel.xml b/app/src/main/res/values/themes_quassel.xml
deleted file mode 100644
index 36b18e745..000000000
--- a/app/src/main/res/values/themes_quassel.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="themeQuasselLightName">Quassel™ (Light)</string>
-    <string name="themeQuasselLightId">QUASSEL_LIGHT</string>
-
-    <style name="Quassel_Light" parent="AppTheme.Light">
-        <item name="senderColor0">#e90d7f</item>
-        <item name="senderColor1">#8e55e9</item>
-        <item name="senderColor2">#b30e0e</item>
-        <item name="senderColor3">#17b339</item>
-        <item name="senderColor4">#58afb3</item>
-        <item name="senderColor5">#9d54b3</item>
-        <item name="senderColor6">#b39775</item>
-        <item name="senderColor7">#3176b3</item>
-        <item name="senderColor8">#e90d7f</item>
-        <item name="senderColor9">#8e55e9</item>
-        <item name="senderColorA">#b30e0e</item>
-        <item name="senderColorB">#17b339</item>
-        <item name="senderColorC">#58afb3</item>
-        <item name="senderColorD">#9d54b3</item>
-        <item name="senderColorE">#b39775</item>
-        <item name="senderColorF">#3176b3</item>
-
-        <item name="colorForeground">#DE000000</item>
-        <item name="colorForegroundHighlight">#DE000000</item>
-        <item name="colorForegroundSecondary">#8A000000</item>
-        <item name="colorForegroundAction">#1a237e</item>
-        <item name="colorForegroundError">#800000</item>
-
-        <item name="colorForegroundMirc">0x1</item>
-
-        <item name="colorBackground">#FAFAFA</item>
-        <item name="android:windowBackground">@color/quasselLight_background</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#FFFFFF</item>
-        <item name="colorBackgroundDialog">#FAFAFA</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
-    <color name="quasselLight_background">#FAFAFA</color>
-
-    <string name="themeQuasselDarkName">Quassel™ (Dark)</string>
-    <string name="themeQuasselDarkId">QUASSEL_DARK</string>
-
-    <style name="Quassel_Dark" parent="AppTheme">
-        <item name="senderColor0">#e90d7f</item>
-        <item name="senderColor1">#8e55e9</item>
-        <item name="senderColor2">#b30e0e</item>
-        <item name="senderColor3">#17b339</item>
-        <item name="senderColor4">#58afb3</item>
-        <item name="senderColor5">#9d54b3</item>
-        <item name="senderColor6">#b39775</item>
-        <item name="senderColor7">#3176b3</item>
-        <item name="senderColor8">#e90d7f</item>
-        <item name="senderColor9">#8e55e9</item>
-        <item name="senderColorA">#b30e0e</item>
-        <item name="senderColorB">#17b339</item>
-        <item name="senderColorC">#58afb3</item>
-        <item name="senderColorD">#9d54b3</item>
-        <item name="senderColorE">#b39775</item>
-        <item name="senderColorF">#3176b3</item>
-
-        <item name="colorForeground">#FFFFFF</item>
-        <item name="colorForegroundHighlight">#FFFFFF</item>
-        <item name="colorForegroundSecondary">#B3FFFFFF</item>
-        <item name="colorForegroundAction">#7986cb</item>
-        <item name="colorForegroundError">#800000</item>
-
-        <item name="colorForegroundMirc">0x0</item>
-
-        <item name="colorBackground">#303030</item>
-        <item name="android:windowBackground">@color/quasselDark_background</item>
-        <item name="colorBackgroundHighlight">#ff8811</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#424242</item>
-        <item name="colorBackgroundDialog">#303030</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
-    <color name="quasselDark_background">#303030</color>
-</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes_solarized.xml b/app/src/main/res/values/themes_solarized.xml
deleted file mode 100644
index f7948875d..000000000
--- a/app/src/main/res/values/themes_solarized.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<resources>
-    <string name="themeSolarizedLightName">Solarized (Light)</string>
-    <string name="themeSolarizedLightId">SOLARIZED_LIGHT</string>
-
-    <style name="Solarized_Light" parent="AppTheme.Light">
-        <item name="colorPrimary">?attr/colorBackgroundCard</item>
-        <item name="colorPrimaryDark">#b0ac9e</item>
-        <item name="colorAccent">#B58900</item>
-        <item name="colorAccentFocus">#40B58900</item>
-        <item name="actionBarTheme">@style/AppTheme.AppBarOverlay.Light</item>
-
-        <item name="senderColor0">#B58900</item>
-        <item name="senderColor1">#CB4B16</item>
-        <item name="senderColor2">#DC322f</item>
-        <item name="senderColor3">#D33682</item>
-        <item name="senderColor4">#6C71C4</item>
-        <item name="senderColor5">#268BD2</item>
-        <item name="senderColor6">#2AA198</item>
-        <item name="senderColor7">#859900</item>
-        <item name="senderColor8">#D5A920</item>
-        <item name="senderColor9">#EB6B36</item>
-        <item name="senderColorA">#FC524f</item>
-        <item name="senderColorB">#F356A2</item>
-        <item name="senderColorC">#8C91E4</item>
-        <item name="senderColorD">#46ABF2</item>
-        <item name="senderColorE">#4AC1B8</item>
-        <item name="senderColorF">#657900</item>
-
-        <item name="colorForeground">#839495</item>
-        <item name="colorForegroundHighlight">#839495</item>
-        <item name="colorForegroundSecondary">#576A66</item>
-        <item name="colorForegroundAction">#268BD2</item>
-        <item name="colorForegroundError">#B00000</item>
-
-        <item name="colorForegroundMirc">0xF</item>
-
-        <item name="colorBackground">#FDF6E3</item>
-        <item name="android:windowBackground">@color/solarizedLight_background</item>
-        <item name="colorBackgroundHighlight">#268bd2</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#EEE8D5</item>
-        <item name="colorBackgroundDialog">#FDF6E3</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
-    <color name="solarizedLight_background">#FDF6E3</color>
-
-    <string name="themeSolarizedDarkName">Solarized (Dark)</string>
-    <string name="themeSolarizedDarkId">SOLARIZED_DARK</string>
-
-    <style name="Solarized_Dark" parent="AppTheme">
-        <item name="colorPrimary">?attr/colorBackgroundCard</item>
-        <item name="colorPrimaryDark">?attr/colorBackground</item>
-        <item name="colorAccent">#B58900</item>
-        <item name="colorAccentFocus">#40B58900</item>
-
-        <item name="senderColor0">#B58900</item>
-        <item name="senderColor1">#CB4B16</item>
-        <item name="senderColor2">#DC322f</item>
-        <item name="senderColor3">#D33682</item>
-        <item name="senderColor4">#6C71C4</item>
-        <item name="senderColor5">#268BD2</item>
-        <item name="senderColor6">#2AA198</item>
-        <item name="senderColor7">#859900</item>
-        <item name="senderColor8">#D5A920</item>
-        <item name="senderColor9">#EB6B36</item>
-        <item name="senderColorA">#FC524f</item>
-        <item name="senderColorB">#F356A2</item>
-        <item name="senderColorC">#8C91E4</item>
-        <item name="senderColorD">#46ABF2</item>
-        <item name="senderColorE">#4AC1B8</item>
-        <item name="senderColorF">#657900</item>
-
-        <item name="colorForeground">#839495</item>
-        <item name="colorForegroundHighlight">#839495</item>
-        <item name="colorForegroundSecondary">#576A66</item>
-        <item name="colorForegroundAction">#268BD2</item>
-        <item name="colorForegroundError">#B00000</item>
-
-        <item name="colorForegroundMirc">0xF</item>
-
-        <item name="colorBackground">#002B36</item>
-        <item name="android:windowBackground">@color/solarizedDark_background</item>
-        <item name="colorBackgroundHighlight">#268bd2</item>
-        <item name="colorBackgroundSecondary">@null</item>
-        <item name="colorBackgroundCard">#073642</item>
-        <item name="colorBackgroundDialog">#002B36</item>
-
-        <item name="colorTintActivity">#88cc33</item>
-        <item name="colorTintMessage">#2277dd</item>
-        <item name="colorTintHighlight">#ff8811</item>
-    </style>
-
-    <color name="solarizedDark_background">#002B36</color>
-</resources>
diff --git a/app/src/main/res/xml/pref_appearance.xml b/app/src/main/res/xml/pref_appearance.xml
deleted file mode 100644
index 0462541af..000000000
--- a/app/src/main/res/xml/pref_appearance.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <de.kuschku.util.ui.preferences.MaterialListSummaryPreference
-        android:defaultValue="QUASSEL_LIGHT"
-        android:entries="@array/preference_theme_entries"
-        android:entryValues="@array/preference_theme_values"
-        android:key="@string/preference_theme"
-        android:title="@string/preference_theme_title"/>
-
-    <com.jenzz.materialpreference.CheckBoxPreference
-        android:key="@string/preference_colors"
-        android:summaryOff="@string/preference_colors_summary_off"
-        android:summaryOn="@string/preference_colors_summary_on"
-        android:title="@string/preference_colors_title"/>
-
-    <com.jenzz.materialpreference.CheckBoxPreference
-        android:key="@string/preference_hostmask"
-        android:summaryOff="@string/preference_hostmask_summary_off"
-        android:summaryOn="@string/preference_hostmask_summary_on"
-        android:title="@string/preference_hostmask_title"/>
-
-    <com.jenzz.materialpreference.CheckBoxPreference
-        android:key="@string/preference_lag"
-        android:summaryOff="@string/preference_lag_summary_off"
-        android:summaryOn="@string/preference_lag_summary_on"
-        android:title="@string/preference_lag_title"/>
-
-    <com.jenzz.materialpreference.CheckBoxPreference
-        android:key="@string/preference_brackets"
-        android:summaryOff="@string/preference_brackets_summary_off"
-        android:summaryOn="@string/preference_brackets_summary_on"
-        android:title="@string/preference_brackets_title"/>
-
-</PreferenceScreen>
diff --git a/app/src/main/res/xml/pref_overview.xml b/app/src/main/res/xml/pref_overview.xml
deleted file mode 100644
index 66e9b983d..000000000
--- a/app/src/main/res/xml/pref_overview.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-  ~ QuasselDroid - Quassel client for Android
-  ~ Copyright (C) 2016 Janne Koschinski
-  ~ Copyright (C) 2016 Ken Børge Viktil
-  ~ Copyright (C) 2016 Magnus Fjell
-  ~ Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-  ~
-  ~ 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, see <http://www.gnu.org/licenses/>.
-  -->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <PreferenceScreen android:title="About">
-
-        <Preference
-            android:summary="@string/appDescriptionLong"
-            android:title="@string/app_name"/>
-
-    </PreferenceScreen>
-
-</PreferenceScreen>
diff --git a/app/src/test/java/de/kuschku/quasseldroid_ng/SerializerUnitTest.kt b/app/src/test/java/de/kuschku/quasseldroid_ng/SerializerUnitTest.kt
new file mode 100644
index 000000000..d43ca3edb
--- /dev/null
+++ b/app/src/test/java/de/kuschku/quasseldroid_ng/SerializerUnitTest.kt
@@ -0,0 +1,103 @@
+package de.kuschku.quasseldroid_ng
+
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Feature
+import de.kuschku.quasseldroid_ng.protocol.Quassel_Features
+import de.kuschku.quasseldroid_ng.protocol.primitive.serializer.*
+import de.kuschku.quasseldroid_ng.util.nio.ChainedByteBuffer
+import org.junit.Assert.assertArrayEquals
+import org.junit.Assert.assertEquals
+import org.junit.Test
+import org.threeten.bp.Instant
+import org.threeten.bp.LocalDateTime
+import org.threeten.bp.ZoneOffset
+import java.nio.ByteBuffer
+import kotlin.experimental.inv
+
+class SerializerUnitTest {
+  @Test
+  fun boolSerializer() {
+    assertEquals(true, roundTrip(BoolSerializer, true))
+    assertEquals(false, roundTrip(BoolSerializer, false))
+  }
+
+  @Test
+  fun byteArraySerializer() {
+    val value1 = byteArrayOf()
+    assertArrayEquals(value1, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value1))?.array())
+
+    val value2 = byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
+    assertArrayEquals(value2, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value2))?.array())
+  }
+
+  @Test
+  fun charSerializer() {
+    assertEquals(' ', roundTrip(CharSerializer, ' '))
+    assertEquals('a', roundTrip(CharSerializer, 'a'))
+    assertEquals('ä', roundTrip(CharSerializer, 'ä'))
+    assertEquals('\u0000', roundTrip(CharSerializer, '\u0000'))
+    assertEquals('\uFFFF', roundTrip(CharSerializer, '\uFFFF'))
+    assertEquals(' ', roundTrip(CharSerializer, ' '))
+    assertEquals('a', roundTrip(CharSerializer, 'a'))
+    assertEquals('ä', roundTrip(CharSerializer, 'ä'))
+  }
+
+  @Test
+  fun dateTimeSerializer() {
+    assertEquals(Instant.EPOCH, roundTrip(DateTimeSerializer, Instant.EPOCH))
+    assertEquals(Instant.now(), roundTrip(DateTimeSerializer, Instant.now()))
+
+    val value1 = Instant.EPOCH.atOffset(ZoneOffset.ofTotalSeconds(1234))
+    assertEquals(value1, roundTrip(DateTimeSerializer, value1))
+    val value2 = Instant.now().atOffset(ZoneOffset.ofTotalSeconds(1234))
+    assertEquals(value2, roundTrip(DateTimeSerializer, value2))
+
+    val value3 = LocalDateTime.of(1970, 1, 1, 0, 0)
+      .atZone(ZoneOffset.systemDefault()).toInstant()
+    assertEquals(value3, roundTrip(DateTimeSerializer, value3))
+    val value4 = LocalDateTime.now().atZone(ZoneOffset.systemDefault()).toInstant()
+    assertEquals(value4, roundTrip(DateTimeSerializer, value4))
+  }
+
+  @Test
+  fun byteSerializer() {
+    assertEquals(0.toByte(), roundTrip(ByteSerializer, 0.toByte()))
+    assertEquals(Byte.MAX_VALUE, roundTrip(ByteSerializer, Byte.MAX_VALUE))
+    assertEquals(Byte.MIN_VALUE, roundTrip(ByteSerializer, Byte.MIN_VALUE))
+    assertEquals((0.toByte().inv()), roundTrip(ByteSerializer, (0.toByte().inv())))
+  }
+
+  @Test
+  fun shortSerializer() {
+    assertEquals(0.toShort(), roundTrip(ShortSerializer, 0.toShort()))
+    assertEquals(Short.MAX_VALUE, roundTrip(ShortSerializer, Short.MAX_VALUE))
+    assertEquals(Short.MIN_VALUE, roundTrip(ShortSerializer, Short.MIN_VALUE))
+    assertEquals((0.toShort().inv()), roundTrip(ShortSerializer, (0.toShort().inv())))
+  }
+
+  @Test
+  fun intSerializer() {
+    assertEquals(0, roundTrip(IntSerializer, 0))
+    assertEquals(Integer.MAX_VALUE, roundTrip(IntSerializer, Integer.MAX_VALUE))
+    assertEquals(Integer.MIN_VALUE, roundTrip(IntSerializer, Integer.MIN_VALUE))
+    assertEquals(0.inv(), roundTrip(IntSerializer, 0.inv()))
+  }
+
+  @Test
+  fun longSerializer() {
+    assertEquals(0, roundTrip(LongSerializer, 0))
+    assertEquals(Long.MAX_VALUE, roundTrip(LongSerializer, Long.MAX_VALUE))
+    assertEquals(Long.MIN_VALUE, roundTrip(LongSerializer, Long.MIN_VALUE))
+    assertEquals(0L.inv(), roundTrip(LongSerializer, 0L.inv()))
+  }
+
+  companion object {
+    fun <T> roundTrip(serializer: Serializer<T>, value: T,
+                      features: Quassel_Features = Quassel_Feature.NONE): T {
+      val chainedBuffer = ChainedByteBuffer(
+        direct = false)
+      serializer.serialize(chainedBuffer, value, features)
+      val buffer = chainedBuffer.toBuffer()
+      return serializer.deserialize(buffer, features)
+    }
+  }
+}
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 34c2e8ed8..000000000
--- a/build.gradle
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-buildscript {
-    repositories {
-        jcenter()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:2.1.3'
-        classpath 'me.tatarka:gradle-retrolambda:3.2.4'
-        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
-    }
-}
-
-allprojects {
-    repositories {
-        jcenter()
-        maven { url "https://jitpack.io" }
-        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
-    }
-}
-
-task clean(type: Delete) {
-    delete rootProject.buildDir
-}
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 000000000..ac8a8cc8d
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,17 @@
+buildscript {
+    repositories {
+        google()
+        jcenter()
+    }
+    dependencies {
+        classpath("com.android.tools.build:gradle:3.0.0-beta6")
+        classpath(kotlin("gradle-plugin"))
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+    }
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 000000000..c749668c0
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+org.gradle.parallel=false
diff --git a/gradle/project-schema.json b/gradle/project-schema.json
new file mode 100644
index 000000000..4ed87d03d
--- /dev/null
+++ b/gradle/project-schema.json
@@ -0,0 +1,73 @@
+{
+  ":": {
+    "conventions": {
+      "base": "org.gradle.api.plugins.BasePluginConvention",
+      "java": "org.gradle.api.plugins.JavaPluginConvention"
+    },
+    "configurations": [
+      "androidJacocoAgent",
+      "androidJacocoAnt",
+      "androidTestAnnotationProcessor",
+      "androidTestApk",
+      "androidTestCompile",
+      "androidTestJackPlugin",
+      "androidTestProvided",
+      "androidTestWearApp",
+      "annotationProcessor",
+      "apk",
+      "archives",
+      "compile",
+      "debugAnnotationProcessor",
+      "debugApk",
+      "debugCompile",
+      "debugJackPlugin",
+      "debugProvided",
+      "debugWearApp",
+      "default",
+      "default-mapping",
+      "default-metadata",
+      "jackPlugin",
+      "kapt",
+      "kaptAndroidTest",
+      "kaptDebug",
+      "kaptRelease",
+      "kaptTest",
+      "kaptTestDebug",
+      "kaptTestRelease",
+      "provided",
+      "releaseAnnotationProcessor",
+      "releaseApk",
+      "releaseCompile",
+      "releaseJackPlugin",
+      "releaseProvided",
+      "releaseWearApp",
+      "testAnnotationProcessor",
+      "testApk",
+      "testCompile",
+      "testDebugAnnotationProcessor",
+      "testDebugApk",
+      "testDebugCompile",
+      "testDebugJackPlugin",
+      "testDebugProvided",
+      "testDebugWearApp",
+      "testJackPlugin",
+      "testProvided",
+      "testReleaseAnnotationProcessor",
+      "testReleaseApk",
+      "testReleaseCompile",
+      "testReleaseJackPlugin",
+      "testReleaseProvided",
+      "testReleaseWearApp",
+      "testWearApp",
+      "wearApp"
+    ],
+    "extensions": {
+      "ext": "org.gradle.api.plugins.ExtraPropertiesExtension",
+      "defaultArtifacts": "org.gradle.api.internal.plugins.DefaultArtifactPublicationSet",
+      "reporting": "org.gradle.api.reporting.ReportingExtension",
+      "android": "com.android.build.gradle.AppExtension",
+      "kotlin": "org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension",
+      "kapt": "org.jetbrains.kotlin.gradle.plugin.KaptExtension"
+    }
+  }
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 05ef575b0cd0173fc735f2857ce4bd594ce4f6bd..4123b1525278d7b81af85fdd381fb3432273424f 100644
GIT binary patch
delta 44841
zcmZ6y1B_-t*S6c7wr$(CZQHiZXS%0t+qP}nwry(~|Ge+{bH4MPWbdq`l3l5!?%cc9
zRci$of<9z}!Yj&vf<XfTK|%t-sntuy!;``NCk~BOJSzeL0a?ZiDpOoyond2PW?-dZ
zX8`Bd2c)+EBi=dRI|Bp#&$s>9S(5Q(gkb-TQxstTo$HkW=|9n6pAIDz3<yXL3J8cU
zF&+#(k#`sy5UsAGfun}{U6O7(z)8n?ydapr2$KLNX|2}udksBb7eoxCoa&ib3f}0<
z^cMvR^iBo+kEns){c;aj3hia*&j1D>q+?bVL<&;x!SN)^@2jVKmVbX1;O_&zNB2od
z5`<u?JDe1RK(>`UAMV3^W1>AGk+wfs1xtWGmNv)>FhCE~JW4P{ltE4*8!~M=%nw4t
zA}~=CrVeAnH_v9U>fwbxK*7S|O{qf~Lh1QZ6(`_Nylem6S7d)NlLTZynt@Izuj56Y
z$5)<d+pass>?1dcO$tR;on>CcrgM5)q3GK3l<?bfp#dg5u=*G-#naq|hi6KDtChC&
zXwFCqusEGmxDMY)0rn>2OS5NgO443^Z4D*D0u!EOa%pZfka(tUtj@6(6e-aNleDi4
zV*=ce>O4b@oB|U)1G2$;9cYg7k!8khJDbklq)cUH<t08)cWT5;QQwnMrQ&o-obN6M
zLcenCF2>8Y%D`kXIRSH4%~H2s((f!kuo!O!@G#kb@vt7gw1wxv$~=g-cyYEJou_Lg
z-G{LrF0nsJ)Lx&mW7;HRLA0t+VR3O%IfXh(QfqOsUEvGTc_x{`Ln~`5+4I{%nsX5s
z1EYM#2FGqdc7}d1L}o`rtt%Ehjf}8^Qb5C`q-Hci((k}?s>O0DlqUV|<8z^fcE2M7
z1e~Ceb;yY+8UFE}b0YRn+b#i-aYRk3*AY=SQ+QpQYs4L90ry$cxI^n9*Vq4;*Z!FI
zyn>2vCG#!Z)A5zy<CUt@X2<Iui}_1vXud&><F(v`yPRjwE$h~jcA=zb!?YaiQ(0lZ
zGUSzAQEf5F8_3P7i5)@X8FS0kL;wa0_?ivRuLOWp!N>2`uV|c>)5lwW(dFb?UM=}9
zGkZ-iOQq<^HP<|MH1=gJ`Hve7k9d`fS-v=iMsv|*Ov_?lTiP|*q|e+PJnF5kHq&KV
zvC5sgm}Np#Wb@!Gcq_yA3}v08t8C+V$#t;*d0DQ<kIM2_kw>ahu9W-OM(4)?l=>Fb
z`XJEf78kZ^a(Gmix`y5^mEPa@h-6eydTW#Ji7#Hx1s3T*cI4>J?zT$07QREphdnin
z>@JTy5cGEAO*21GS;NDDh+SE$ZH$UKE;fvpg&Rh4w-9<}wVU0s*38dZLVnId1PE9)
z>6fYm_JH_()q_GZSh>J+Si-dd2Jp9v)b3#!!#K`m2E!q>oKAbk<qI6R*`0s8OiJ9D
z4eb({`xc_T(Lff#6R9Ec3U0P}LUPfn--&C&QlVuLyoP?|!<cU8+y`?jqv_%z1c8D;
z31jUtW;5`4p9daW{@S87nplxJ<%d0l-VqWomui$B;+)_@kU}Hd6+?0X#Fviy2O&b#
z1uAXar#X<wFNsAs<F%dv-~@&*`s@-QBu|`PTyGQXqezLRb_yw<L=@?^VJ0y1ZV!;S
zSqAfKKwUNF8d)E#CpgI6!@mR$FC<evGg+$loGEpMZehR%z6}7#!3N)7mymwxbII8I
zB2NT{d$EVVTvfCcv6JO_3PtbGuSd(CvMQueRRekCP1}|an9jvgsc+AMaI78#{>R(?
z<6+(6z<=`p`QgI9m*l@5R-*x#INcAKs0R!K(oCIb4NL%leGGxv^{IV5gd!YF3t)<Z
z9ADqjrGG6>2|8bC5!X?wqH)3qTAw-E_*f__w5@3|l!S!2MAeW-)qYqB??{RHajuMF
z<iaG`7KgblrYO=wTOFYE?@(oSfP55yJ4X(}?^#5M+#`k^h-HMu4wV5B!HXLq_@8zD
z*KE184P<dafPg&z8LsI6yHNZADnPM{oddEEqCYxi=xBf^wWf`Mtqos=^Kh#rV>H}I
z5fqbLg`BK_oe|%R?(NtP@v*@<#-`-~!kq+`MS!}p6w^Kb*3=B|<5VNddTwve7m(tx
z3W^qOT3wx?A=4i+l-ByJe(7J88{H<xa2|4``<R*>j<G~v0|<W2<8iJNJ^<Kq?<Hi|
zR2+ZG9ajW|Am2#@kchSDvhhEB^nQN$;3^f@qp*{mUz*{Acvx;hsy$)jJQogbYC1s^
z4$f#&zifD5gR3BTW5AcYY(*Db_{Mbt9DNcz%9i}lo(BjIs+Z4$*g~`v%J2#<#TwXB
z9t-1)hN(FC9~8FWf}JV;SOb3DB)Xpp6D?=tNFP}KF>->A>)(p*XrR*n>&@Q2s48|@
z7blX#Sz>8C)|z~w%Kg!EYfJ>kTc;Qx1M`;1S#9=P-X60|+cQj}W84H(0h9g5p$&GJ
zCI1xp5d%ITpOF&Q^Q?W4A6Bco)TotzFk=z(59N8Ne)XqE*#0`$o&X>PeP&cLDB{A7
zzP0Fxl=wL5^%Axiitgpo`_KhL7e(f2g7%CdJV>ARY<O;*Oopd_>VpZ{U`#4c@aKte
z%n97v02Ihpmm*UbsaWZrUCgcK32*$>{Q``|eS=*-?ma?glu;me{<xfmFzf|1yPIia
zAudIbYbwSvH&HH%wVr1@BSNH4GV#UU*j~}y=6CKWTLZh7R+1AMxxJ+((Id|P2<bn9
z7jrZ=C4>Y5QbPa&BKp5NLInH;;Hshh%$R#vxN}dNWEQQ5EGSBKdMySfl_<(Cl+YGQ
zO|esLR=9Pf+qT%64@}t-l)Z`G!$m-AmorrDfkL~YWD5H!HS-H9C5-_3bHC)icGjo)
z7n)BJw??^Ma~``-eQ(n<X?}X{sDInNg+^R6idY7aWq8f=mNnF)aRR7yP0esM^7n!w
z5;=<xh<pWE2~chLiw=x@HAf^&eO1Ny_)7}l2{i7Zc!`&CRqv?KVh<Jz-lL*sE8cMV
zYY$-F3M}zq=06Xidx{PwJ%vX!P<_>g$$ja7ZY`SR`V*;h23FO4K}*qmRb+F}#b+SL
zvA}ng@9e;LmG1PwcL6GQQGvIUoRtR<p6Vkm%>I-@k?AEy2xhLMOt?^)ho!iyX*jLb
zUW4w7A%pYdDxg{(D~#K&${ut&!q;y@YdzuJ_iyp}KI9U&iG;(XRd@}uqsww0(zB+~
z*Z~Ry8U5q?``suK2lXO8R2$k1L}~TPRDaa9C1`n;QyZSoqX6?B11qQJ^$tTSHwlWP
zUgDgxIwxiP7Lt&$xQnruepuVG&%=5=b|r1Jx-GU7b$ITsP8J)oot<Q`;<bl|+Agco
z+$E%Mp;cBLwK!6lBbM$rWkv*ZvF5yj>dLdS=kD55Fv7h&ndZ10>MmWQ+(zcKei>~J
zlG-P-+{w++%K+dPc|{booaFO?Ur?C^UXCUEFLLrj(29%dyN=u@o{VOG-W%+=A2rpw
z6ST58F`4WzEjBc-(u%J+ve=Kp=VNd2K_6(XOp9!`Dzk_RD>GHhyaU<ITBCIk%Hl-l
zQJ?cyQ&EyNw|9g@>Fe!KB7L=)t<_0_9HwT$O3EktBY+4Y!n_pd#-eyDQgCeUvigRa
zpcCSQ`YN7Ww{%>Q+`^62lb4bLcJmaPL0Ng`%y~T%XYk^n5laa+>~dMfc>W4aMzgfV
zz)PEl#K4ODBI^2S=Lax2E%|oGKKYpi&8>+IDUqNI57S`a?tz#PqODRRj+>P`dRR+L
z)amZMU_eE-+xGj8mk=DV{zxp_C)ljanjfC__UF%SjpKV@lnb{0kPNf_iX%Q39E|3Y
zBhX*7Pt`$i+W1@=CcGzPYuQwZ94eYp#dc}VHp&bQ)2@nrWd9N(C}u&l)3f^q!oyQ+
z{{RE)H#B_{ytbKmQ{9z2n@{l(2R7aQTh>o~K>%N%03(Z4KPeB-Ew=8f1YGSQ9Molm
zDJIQ=wy^22;U?6!70u=vO`UV*63w9k_IDJA*{9f`!F>vt<r~h<+?_`}QY=LGC`{EH
zbfa*~<-=lof@n*Y{-R0ngi^5PtLOa2%~Lav-MqU+>g%Qw`w<$glk3$PlRgBNgH2n6
z8Nj?my3N=pBG~xw8M48Sj6dhN;VtQXGBFH79?L#Jx|Gy5T%9Ur*?!@qf~+;DuTpJ#
z7^e4PvVc3Jb2M$f5o>38r6EJ3ex@-$StU+Grf=D<W_<QigWkJ*2K*F1O@1>*Ll2=E
zlTuX*3V7A{nQBv$+68XjX3~ySyPGmO4}kXa$jlOEUS1`&RyQFgHf~c>W5j1-OCAN$
zSan?7Wm}z)dXZbN{j01>P+HRfJ%3`Ny(S`UdE-Uei_qJ%jznE39kkJFdBb!C9ZNG^
z1AVhA>14GeTl4%^3dWsNK{ZIBtnAOD@rd3sCKd9dK<}IB@3ah8FPZm~e68)6NI+kP
zRAJx}=#KTh9!188^*MPKiu(rHu4xDvItq~WTVFnJdOdF8gSi)BxbaBCsVlybMKTF4
zzLwu}<u=RK(CeYQWE&i?Z6Ds+xRU@uF#pxT=S;)99%Q5f?5NRw^8JTUErR1T;!EB3
zWcp;Y{|j9<OdNOT%;4&}A3j?)AK-Mql+tmgk$uV?G|-mA`8gW$UPwEVy^5sZc`eFs
z$@S!V4}YjD)H?Fi;6WTDU={}omJRpOM?;Wts$Fv#6P{kUCu)O?63PlVU#yJmwpkav
z>2bU}Sidkwg08oAPiX-1#ihB9Ykb+*PtOD1#(56j-QA7B@Y>o%k9Bq02@q>hL)TmE
z`I|e+c*;d7)Tt|zhl2A(1^M)?FM{RV0QOwlI;B{tTwpF)#17yH<rYr1L~+(^1iU{l
z$r$SPMO+a5<vc`SA2G(oD)Grxb&J4iTisjsM3awaO^T@G97bx7@IGT`i-hBB=?5*x
za1e4gf@`lkP$Jr92h5>o4N%V%jy>a9GH*u8JQY^pjV_r<-G|xD68S5nV0oqJLo6+)
zLK#YD@$*<!x}71yirfZEhCG&Ec*@M}<9x;&>G5Q<{M;}n(Ij)~xdbHt7!UNV_w?aQ
zNI;A;1d!$5nn1f9!rqEezapf#F-&n+UYwn$XWpkj@#g^b;y^z71CYn(6~yN@Js5;N
zENptg6ai#(d4{C>#_ap$>;uAi=oMeE%`_-|vKu(4Iwwf49zSiK-Z@$L#r(y`PyaO0
zE>8M53Gh*Eam0v-A{YFKa7Mifl66p&19C^#j*SOWBcTlFNw-2<-!D7`!kv;IK4XA(
zh(8LiCeQm;<pXAa07c?PwJb&7@s1c$-2z+F?yOsbExQCaXnKTO6di_d==0<IcFz+u
zYdK~6H5r}*yJ!kv!~vefm{21q&Z03CNjIJa{A+_DU=a)lD;N<{Ygb%Z1&4pJqQI~{
z=g{%pP!KwU>wF+}!EA^TsvP%#nt%Nnj^%%y@ziJvfKc$#5NisyG3R<%oFH7l1-G=p
zh;c$K8s1FfN3tYf#*g75*GI)7km}3z4(`#G1bgoN-zN&z8`X?va3G-BM0`k5fcv7W
z%qCE<U_LPFf-qEprYwxMF-<^|AdYloY=>OS`NFmRwypLB=zV|#pV!ljQhGdk73g79
zVd0@r_I;n{{y`LmLKFtV!R@BpE<)&J>+UPy`+N3i6wuoNzK7(CJOocVi8KV|l$8_@
zJrFC8r6-g`M1@~Eblnui0_++Iu!$us8Fpe1)6Ytr#}EV{E(dBxKML_io(49(_#!eG
z3XVhqmkB#D{*F?d{8bO74IUB)V~ptyPH!k0LS&*U>~^7ga3m<fyv#r6(o#sWPC=B^
zkrz|RB*NxWk3YIHts5CM5oC6Px9sYzR+uM6>G7mAP0g9@1*NP!(7`kbU`!|}TtBQJ
z3Nx$jDCdzNOA=2U57CGE4oWUIR+Hvvt{FJXGcR2h5<&T{in4yHXrbQ`E7-+au_8-p
zxYDJysMHdPlv}%4OEVwcU@(so)+boyb``OiG;Q+jQDIxoGDopYzd$B!66@x4r6E7k
z?$YR=kJcPvW&z(^k)=ohD8h+&+FEHMK9~2yXpiJGr4wz+XAWX2ASN1_iIXmQC6L2e
zgs3epMRi>U7)6E2TEXlyu|yh$%`NdxFa018LILm3vMAeCny+9#2R=*coLspx>_hE|
znY!4g<jZ*?Osvq){2Z;>!r^P<7};=dJ12bzt%%^bxUxh3Es&T6q*tiamG7=+#4yZW
z%tKT}o)!g^24yI@IV;Lws_XNp%(0E8k-mA^&<|FUZC3NL{7tI!2gf?NsfTti(JcO0
z&b01TR7VUh-!r;WuY>3$qlEdRXlNumP*VKIr790cYg+vd+4HDh+}b-Y#Ju&2gP8;x
zdO#5M5SrXkX{0C+ka`~xG+p`p8!VSEe^0H8{4gPK)k#YTL}AiXq(9R$@|q>KxzjMh
zDu<>pD58mD8_9-}*s*t7Drzkw18b!r9!kvvQ^$0yfyAX7|9*u2Kr^1GBUa@)0^%JH
z>z3LR;db&(us@X1%(rOIWN!My3l=6zgTW39icCpqVIu1Ukfko>gBnV_QRmuX8sS=A
zXlftEUez=@Av!Wmdx@wwqhF&$n};br`XGtyUcJ^I35#U6ekQ5j`bhuw7+G+UKE;FW
z;UHJPF4n-~HaN#;WS>DeC^;p67qc$8lD2PW1I@?~!<X*dy85D4jrO_<l6P*jlGRQ<
zjgv9*{UV_N2phX77;k1)6T7qf<26aixnZ@8l~U(atou4spl|nd9_ur%sXftt+-3I6
zh*?*Sm61^zpJCQG`+MuSZ`b(V2R4Z?DtisQhPTJJOi)sm`<965swQYi-F|O<Ohdp-
z`mNeJD`ctdncFwoZB@y6T5adD;@#_JuN~!>wJRnB@EVVNzcd&0_1g!<p7fO*_uVsg
zAE@|jL}Qe|2|Ui1<?i)1TlgGy;-i%45j#!Tt1NI7HOWfVoh_ax*zL5a%^)ImM^Mcr
z9rYi0*e(1MyU{Shu-{qW|ACcZp}4(^T9GbJd4uq`w2ogNyX4}R#>e-p5w!#CUoXYt
zqY1brfPS|C$rbCgp$Y&=(2|7@CQ$`4wB=4-RL7!!X?w>5Ws`Jha!|B=n@v)-Ms6U}
z1CjoR7++V5+>=MYUa;<fo#maY#3?kr<InE)E%0ZM&&^+lSDgd%Z{!QF8>5}VDI-vp
zZOL(RT;mah$CQKKI)2<CApB#30ujvqLrf7C!0V-vt~gEV3X->VVJ%pXI8TodM9(nG
z8}R7)EvbKgFwfC8*)77uH|Z_I!%h4vf>*)BHsss`oj3OwH2w&zAD=ij4VRAB4*Y!M
z(M|@{A<03fXJ8ZZ#AgVnHs&Mnr?jkuVnm^;^2t$d(Wgq$n^ZVr^;xHht-1Z1ab(WE
z(&}l;nMavzSGYHn#=e3c$+|+nbcI*7w#=dMRxEzlPinGcqu$>w!6ajw78XTs^Rj{Y
z`=9?0@cmDYc<9=QqW6zADE(s%{}0$*8~6uyRrD0Fg;4nl2k0*=P$Q+Qt2fjG)LYd5
zmRlW+R)nj<K|(2*20+!&cbaP1erkM4E-e+s`klpEdqYryANBjSz0Rb&%yxU2zr5xW
z2msTX$O$1nBIk^GR_tM+lhRV(5mA$nuiOLuy3-wi0f#;@qlL<i%ZK_=9$+3^YUu$q
z#!KO!dZ^%RO7Z1NU6z0D>{DbDCGoP&z)dq>HKe@gF4EUBO+7t4NR$tf@VRA8-d=Kr
z#M6z|c!gY>!Bx&k{h%8NjIo!0yDhSJ$HM-Z*Gw_8oTO43&|GMG7wT5tyQx>IYdagH
z!d72#l&iN75ZMXWG6^HYYpqJwD>MZ-T{qgOR&Fi3<4np%clyW&Q{bIe=@+j^OzLrp
zFk;)pSaNT~SUDYxU5ZsMCnvaH*vCi0g-8la2T7_k1xSSq^SlVDWmbu1-wi?8NqQC=
zgIB^@TW|=!vCaD+C=TOPRkVd74w~M=*{#S`4(Wvm>gW&abQO*_i8j_nyuJYhJAPCU
zU`o5r+=R{}Ge&7(2hDEq+TrC6^%!YI9R$KPdo_@6B#L-m5^-B+sSqhlQ!!I+NY}At
zbmLB0i9-I)^EWd|DDX=HMhS@zq9`K_vv}{R@GbZDW12-FQ9LBwBM_r`Np2$z0{rY0
ziA}%Y7^5Iem&t(_Jtg^nWAOs4$#U6-&Q@XJ^i3#Re_$@)e7O=H08mn^ah*g+z9ND_
z*TN{Iu*m9??zpkzGseJ=*8|80LE-JD8(*u>&}NYiAHSq;pa+SPFAR)HS*1^qO?HtG
z8|z}U$j4^bCuY9D|M#&1k^Ly7>)!>2GA0lZ^*=h7*eXH`fbvvbM*C)veIRFu1tX`$
z3gT=aOOF#3L;?jNf<lCZG93(yh#e=v%9?^<anQU_*SRjJ-o7em_Ni`h?_ZHGC|A5T
zw(;n^{cHT{S9=ZE^<har27dqWJL+ja&H2jmnQ7<!+A=8xu0pz0wH?u;p16Z<?^33(
zRlc)EBSY2&1g=uH>Ga!td1e#TrvBzAYlC?GxEB|=QMn^Wb0Is>?b5>U5gXRIX9suC
zsP6;r6&ZH#QfcTmpubI+1f|9w>O||3=oj(t(g@rsE%<e-aR-bx=_oy{%v-hhhgw~l
z9^pU)8vp)qkoqF-Kbm>JRBGoXPo)yzKNvlv{^SJEy;`XHqAHYmA`__GJNXI^Q`{#7
zDp0*OMZkG#4_n-63Gh=u@!yVOp!zC(e<twyisSohIeU%7)=G*SJRjOX_t3+&%h2!M
z9lF1Nl@RPI-`n|0^m}~0<&b{&L=fzSI={z95FAoa`$yzby|qX9e+nDU$Ly@U)WrM&
z^}_>nLwLMgopY`=w)Qrb>JZMki3*f(j6S_dy5uH@jYzOVPg$`XO3B3P{PCtWgA9ro
z+vNGs;pybwX!NbnP4WZH#{1GbOW?IcQaUfO<h8a#Pt(&7pxm=z38kuTpuy(oP%#OO
z67BV;G?yfs4#US;LQ!h>2;jG2%|O*$HX{d!XGkD_I8Ise=gf_cMvFee`*iNEU(Xjh
zVISihY8V=A2N);XoqHPxeOCM<imIuP^n65$`-Y;^C)e|7{fiOzLE|Dc)}&;jf>LQE
z%lKsW=WRKX*q`;Z8ncqL8(Zcv(dYL@R#*Bsp-~gW=AW2YQh_osP#^N-bSAbA>Z$<v
zKP|9WUX&+oXl9?hq8rX3E@xr<99n%T^v+i@TJxHZthyWLci4FiJkv}YTG%WS;zbP@
zo?`iv{G@utFz1{`qRJ^!pJ@7Te;@0MHhJVlqoTOfKJFaz5y0rHCS%3F<$tNW4RK<x
zqUNn)j5z01%GE@*yNOwTW2z`qr^o?9+l<%{p4=Z~6=xQB4R^=eigU-XN%YPmuvn3$
zGABQyq5>;Dr-U4DK-Hu$rC5@~Fsr2wFhA1z0;}w^@9&e2e@j*1NsE~bc8d>%#pr0U
zX8P5T+g#4%l8c=<q$AC@I}2YoPCMRA4ivy_l7d^eVXs<Z_D^Hm4@6_f?1=-^3m^4J
z;bsp~UDfh=(%o6g(O?OcPPr|kshDkX&2B8;(EO|SII#UAcacuZ1jpx9m-1{@zX&+g
z25;{n-~dCpsGnMc26q}KJ5Sx4<rEUHXNTC|A-y(l5Z~oQ;XJHaLyxSQZ7Th}te-eP
zNSaqhDy6i$^_aKCqeh)xy!Zf?XQLG8)1$T!j05)btJ8<>%>1=Vox<wzBBqgn%s9`V
zV_}TE6;Ll68H0rb@sEbt1v`^q#KyGvb}dmCyor+Y3##=Q^&kZlvI12UXi$bvRk@^n
zcJ<84bhL0ZkmGhzVYK4}d6gktIn^*}v8m-DUL-})Wb%_p@CePaa4|qZ#t!Fbb`eSG
zV=)I>Yk`UQi{b+UwQ)T;eO$yFyb3^$7D)!2z4iRQ%_=wqZi8zCGL)E!FCDjZQaE&4
zbj(dAEStoY(<mmG*w#7psR*e;FTKicLS`{XL?SAzI2_w4KM8YTNK9F`ZoOwb8tRn#
z6suR3)?%t-IxZU7SqUJVPA!C{d~YP3eyg^?Rxez&G(@dLQ<uZLrHvA?IZU2}%RxLp
zsAR&48l4*qNF=^sRf@II%;B4WanQ|7C)Vo;W#)G}W|J}*jIf*=vYsFFAs=heLcus>
z7psa72e4#2t{4-SuTH!mMy8KK9ITF}@A9RW)ECtFlSj8MxdNWMr(AeBAtG~R@%SXP
zE}YU+V=u;6h9s@0!gNkm=q5F0z(Na2%E26_CJGvKY@=+w$X=G1RBU)h196!<GwRWz
zG1cugs%BiP4upi9PB8=QSS(SwbTuE?S1_)Q5tAFV&A4Ee&<+;X%uWf&%4ly7z6WM*
zlJfO(P=f5dX#oGM(Rt_T#(Wq>rl%WRua*;ir|_(6fGD`mW_En762kPN>(okLsui3v
z#10(KxsS$%SB%qc<Z-GJZp}F*cYB+Q9@3|d*0z!-U66?jRgH;dRsakAG&y_TJFs<r
zJgDJH|3!T8V&!<Oj4bLtjb0*IGywwV!W>n+)~Lqa98kpC>x{iYz8P*pQr);lsEM&5
zcgogC>jIG&rAKU?ZA(9tzn0-*!s#F9z+gdo*jOEQ`9$@umU|tA7L(P{km%%Y@2+jX
zIx+>hccWECn^@fjsUknW+&*(bAeT0p?ZcTiTeJwJV_>>eXFxhKpM+o7i++^A6YXa5
zr6y`f1i)Ox8lB_|bn5#vLK6qWYkAFMN)g9)5meb~sapG5z%%)F<6_=)!9D9jRqfkB
zn0qAhcGdNmT>G#$Dk*AQVvDu!a%$;M2<@Y<WM|>H_Q?D-yJ#0RPOh*#JIb?3q%jSf
z7|YH*^~C^JJMJd2bJ;S<TB{Jv0`I1=jBr4l1TbO&A_&AB@}KF^aOQxaeih;R>wHr?
zv993=Aha-$;uq$(Y15aHWI4ixOA4YO#BWi8ccyC&U~7x1JRuYuCGwv{>}RZ(q`fJ8
za~{aa8mg)Zk($~W9A4!MPRNH!YIzInVNLoHG8jL+Lzspy^AqV2^fJKK#&#*`M?==7
z0`&haWlT+a)Rqn;OJGNQ3SKO;rpg}rL?<gl)aDKb7u8A|DPXPm!wc2&_UC&<iZ&$^
zMtedXVv@YRNDQuGpNbX_Iz=u&#Aa_mDu~>19yJ9H{0l{sKLAZdQ%b*bp)9+l3*)i9
zrl?S3enp$R4nGocM45FDxoSk7)rer*9YD4+$8%|j=nZn|1jD}P-n3`77S!nkelv=m
zb@B?;w4smd!7KJT=#HuIsKq5co3gJY`Ysc4fyB=!!Ib%cKkyueWJ3^R4D00m!|lCG
znyT#F7BUBhI$?Y0$PFz}Tyt7UD`xMZ(rdywGnQ3%40*Nhz`wcmTVl)xy|?-49DsTe
zG7#_q6+|&F=+TiEf;-n_LS2SA7ennj$F^x#h|XQ*2%7x+>oUwPiP~VIrcY)Ymd1io
zgXc#c?MTZ)J|}t8A6RQE$!z}OfUW^ezAzpj7jV)yY*m%sw;}BA<Ge;U(Qrt!WA+N9
zNAY|En^as+A1$-c#v1+HNzj*71E8|Sv`*_gwxBE^t7D3mdo9og0o8cJA3e!m-|vyK
zP48P_siCh%S#zI2R|^NCcR?%9hs=wu6B7P=-ULj$&sJr!quUQdjRrfPpZwVgK6_dd
zQQwKiKv+s<>1yQvPVb)VpHfe|??I@DZYfjf=kZ20RgZS**t9;Qx--8l2uOBk2jgB`
zYqoIvWzssNxjkK2GonKGAnyk5XW_nSvEB8?XED|lGTxaC(qf$X1%4?<;n$vA`N<tp
zU2M>A;GdCKPfBYlyv#_J%2GY}<b=}Q9Wd`;^x@9z<iTWBTyG=|iSpN-+X%f}=bpH0
z&0Q5#f57wvb82okB6Xu)TJHdU^{U$)8ifH@adFK@f!wNnJypEc^_%pggr#p>IdVqU
zh^e;Um3(P!Rl>Q|v2@b!&t$hT^p~l&5EKd~<y0w-bDL_LE?8~WkoWulKkZ5k0y}~K
zPyQupkXaD-3kWC~J~0LiJMnhtSEB3)Bp_Sk8i2Zt=5O!L(P;Y%vQm8YSAK+>mTZcs
z5Ro7Zl=T&IKM<8<W#YCIixG2Ub~c=0rC%eRotVz%hPck=M@Y4U<}`AV*w@i*DZ!V_
zCxmt`OJk-jyA1SK-RX|cN!PYZj?3+~!p~zr8Ia$bC%Ctx=$H}_0u&ed(WY=uB0!J<
zf8|aR#0e971VwVsNbAT<J!~-PUTGgSSQfHANS2&2<j`rYAuS;oC6s2N7_0|If%6#t
ztt_msiB`dNk5t}mkI7eI?Df!7cTIux4)l{TfFL}V>60@icj&%I7C?PuQSkE!R>)Vq
zkAdx9zOMnDy%^Hn@BSF#w?w^d0$48@sMsoEvNNUQpt%GNhL5MxGy{x1pw^Vv^4fGA
z=+wB3HJ&EpF3#e6JElq7h|=D2$7&BpScGK_jAUJ+HHytru9?3CStLo9q~gJh_KPcB
zlxA#4$zy)$w8W^FpeE$AY&u4)D?xLLQ8)cXQTG}&557^?56NzDSZf)(2GrqB?iSyf
zdUN#;OIbEo+&)KeG_zhrhoTkyu@BHP$Zo`SDPm@`_lAgeDi>j<FypfIOsTS&D!Wn^
zB5=peXpMGWKYA!Jb8pCx&5T(<u3SprS<~GL5>U%v@GBxjlb6NXaax4YqQP6FO$yyY
ziMhrG2X{-_@oP<DDV59o4aj?)nIo?>wQ#9QdwbMf)i~4c3RWrpU|-=VztY5Ap@*`)
z9q-ag7)oa2Eq1iydm#)!h*HS#x^FUGqUH`UxVLnBRSx(i0A|v2;8k*H0g(;|Rg}D`
z)Ov6{?fB?T7urocf_?4w(4u30{F441q%-FzKDy{BKFV&pT94(&4fqJ&3gB_G?N`V1
z*tf?6ePgp@>sYwQfu+*jjSAyKo1{<6iLtoX!RsBo)k@TVZHqZI<@+sg_C{jv%FA#B
zzW)UUP!D@fft_8wFR1$o>|N05HfHV6r~Q%}l;PGNq2bmaw!xmc@WcbG-XnD7AIfzV
z@7v+s?q!8|xP7Wz0lGp#uU?22+5MP=EgAD`JR(kZMyo<9Vjj~L9fd|A+Qz2vobel_
z$>Pa?R{qk1{{#ar+kz0>d`Zb6%oevNjgl>`Yw`y+%p%7KF;q{43LOuRzZloLEU<gH
zM6al9ZM=}1uJ*~kP^4r~YH2gR{Y3_#0}7q^jAhfO>-0FQ0Yfc={uffMoaiZa)@^yl
zTOJ}Q19a!=qsou(3r5MI7sW6GW}vM)$BZ+}Q7*5Z>&-Mh?YnmrX_zFr9Fx3~9FLUK
zde2Df#yBwT)(ntoQ{WVS2Ssi#m-5;>SX`}|unqN;KFuix^giX2*e2GtsZ!lFYJBhv
zL0b$&w{0JBfY3`gF2{6uO-|#(;P>+m*G0WX%0gs~tUQuA_>L~;%say5noz&dANWow
zuk-vKYo^d1x?NL)Hd%d*4ke?uky2%6s?=*Hqa=x`L{=oXz<m6ZY-ID<<)CrC9rxgA
zoB_YGeYtr@68bLPr;%r2OC8cCPz^+F66cyCp-cD{K*XPbpT9~AmKQaZ@`YJO`|+H{
zIf&>hkHu>+!L%DZJjeE+oG+{5JC6NhGW3{Uv*08Q!ab=ZpKyi{%^uF~sCILl{&bC2
z=+rKMX*Zbp8pBML=e0yx%GYR((^dZsv7F|2%Z#&M5!;pWpS@oe=^f33^aSt;GNLH>
z#*AeH1{|Ii*~2m2^7OmH-r}eJT2>kli;>1;Nl3IURBEQ{iYX6YJo>i8;glOs!>-s@
z5Oe*ZXHH@qL|C2L-*Cw{fAF%LZwwQ6cb_$M*800Ty-9FhUSK0@JG1|hVfgUNpPWWp
zEJ9gr3)BB6;?A2sk0&r^Zf&F9o7JVwDkyj5-_I|$qyVGu((M<I*^An+4_go4%F&_u
zhvaZu0Ao@{qN*)?YgG2vZ75qO>YCzk^+9y+3)hN8efs8r;-;|3xNBP!>t;2UVHyt3
z!zkR&#HU^CubM)aF~-r%5#@OoV19S-wlm^ui44mPao*#w0+TGhfr%V){~1Ifhx&$8
z0Oc2y`=QIqHw<hAsR7dVTII^Vz8go#GU<&*X`G5hodRDd(lf{lL|S`n8PD{(zA?M-
zv|L+gV;W&mNMTdPNcRyHu8I$(fGnwB%&en8PdMatwUMk}m@$Ewn{@E5xaBplbHUNo
z?Uo!EJ|xnZz7nvxNjkN?z$)^XH>DyBtKkmp`JaGKO88%gM7Z!h(fc}E+;4z5JUl@H
z1Caj>Z}h^$W4@4qfZ7rn2&n*2zN*K~0u(IiJXrKPgh58#!~s`E5}*Y{P{=qS$mpO2
zJ5yVvB#m4yp`<I-Xpz-=+uC(%m&#Se)YMSe;GOL)E$TKlHqCyu%dh&IufDg>-K(w1
z-?JVT<cX$;ai1rhul|!-Kc~K@e?8x86$nTQhCgd!Khle-;zr1#bus`0#H{#MtnW`B
zWr2~bFYRHwo--2s_!K4`tcQNQ0Tj|K<D-e~YZ4w0s8%J`x(9{jymBY0*1X%3{sgmo
z>DaRm^RPMBhg`fG-mq3P3!XW#C(iM)vnTKT)_ctFx`flhRuiL6;2PGt$H&&uHm2g$
zvFOg(PYe$a#$NPDPN{&2HD-e32WN)bxYG$@{?OTHC%)Q;eY@t7(|1cUPb1rC)>9dm
z07XkgXq)aWN<KMk4x6r-NepkVZr7%_Gmsw1jM(?KWDd)%lfq}+qvPm@EmFDmSca2n
z>{gpDF><@-dGVc-LiU}Sdoq4&j2^qK{bRg`dX)_4XohDch+DwI8#BT6k)D3f)})5#
zI;s~>Bxj${{KSKEDsQJ)8h*40|3x6#ye?Oahl^%L*oYFr^$AQ-`1nxUh=x_xos#a!
z2qzVctrF|;A>S5FZui3q1^@YSTdtHtxOlaw$(k&AHECjRxtHGH$_ia7M{|?I`c{Mc
zWlBo4U8;liS_2@byzN=qB~}ZAy>Q#@+MO8nT7Q_ehY4M7!+dGSJVXWYuQj;>=gPJn
zS(<sv2=cbuHWUkH%Y`?JIj=q0h4wO`y7!;@9ZOF0U+E`DnQIG4_!#s~i#Jxk!{TS^
z6mwD?`b)OBG+75PV1iV}=kRUxC~eumK-8Jr`=c_XTRH%~s2K_!Ku5flBJ*+GA?FPb
z2=kYNY+TK2Xq#zU(e-)5to3ZD%^S+`@-+3sLwTNr=!}D#Q=*bRi`n*_6kxN{6O&rL
zDDWcQ282fGEz79V8?vV-%Z8ngK_Z>P+vP!4p~mxSXfcZ-_1yL0ZNzarGpbG-MR`hy
zS19>2NxlFFxuA4%&ZEK<y;e6Dn3AL;d8=EdR9b`ioCroa_{a-6u0PlS-0kYZ&h(V*
zg^9<}Di8}fPL5z?t^5$T6|_gZ{5Idgl)iAZR5PjQ+5jC!OvzxQ9o&G^<k%wRcm{7>
zK6L_=&^wy|icZw`KuBTZ78X7$aOLp0ZG%=|O)vmrrtr4<LQ1mU!BYZlY>FkX*`FFS
zamES8Kcy_o%VdfSYwhUsE9(finJwe0U?nkNvWugV&Fa-4(OTOn+lX-XjmY^m-?}<>
zF~h&}#R{KrDt9o?l1@Ha#-)ED=eHd)doU*b=1$B)!$eqZ4oS*c6c_Fh$O-6Xvc9>9
z-&z5TZScihouAoU)q`{<9%LRLn-udEvqQ?#9e4t>vx2%$z|tsSkeQT=_9=VfTRaa}
z|F#2P4&%5Igs#AP-;b-bR`Mz1vEC>TVq57bEIplf_g-ko{QDb22exTkT2y$v$PiVD
zIRo333h`5R_Jzm3H87Ko<*cZ)2rsJmigpBmdg)d#I@Dyx){iId4U+9ip==k^%}!>V
zz`0r?Y!r$-nqCr>O-Ql=3F$C3vRqLGSdK`c)FfAST4VEwm<_*wu7^B}^5Dldi4VgP
z13K44lCd4*rcK(yk1(DLSgCo4z*A&Qv1KtcQ<{U;Nx(+&q74q$W-e|48H;3a$b$ex
zkkRJ3Pt0^N;h_o#m!B;YQSx&*q#bb=%tdU3e^)UiW!E>spO<Kflm7G}t>2}jjUle5
zEizEaN(P$}FiaDz;L3?r*}}V1)o%&Ou!CG*$jZ~;P4eM2qkz_X0_44oD(Gf2-5+F*
z4dGUtsaV?wjJa~lX}JOO1!A(*ULJtLsTH>ot&%*4c-F{bE#@if`nrkUdo#`B?TLnG
z>5w^OqNa~2sN)qDENvMDxyvLg5)qs9xe6{6ZJrPehSXt<+>rwoxpZ(pnb7tsMEc5^
zwe9x#1fu4LsOIG1Yibpqu+_y!YqJdb(Q~eBf2rPub4a+eC+_b2MMS>BMGC-KBDbCb
z$JrAkU&SJS4|>#WnP-yN>bWb5pL8jXRqe>?r7tKz_*CH`8v8amHq-SR^>*>yd?z&f
z^+<Z!fOd$#`qAPIy)3ShsG!}?PXz7)AzGmF@$~I6>|zUws~(#8DQm=F?mhC8EZgCD
z)3qo2R?vFf0N&EKbjIMM_6*RKi*V+P0Z_}RJ@;+3bc~&OU9edL55aJd7rRy*nlQI1
zp`llW#%gE#U0+ArJ_k8cRfH71{)<{>6IKk4Wh2%K>Z*`w+`L)b#ao5#Ds4WP)?U+Z
z4KVmMa&Xo4t(}B0_{rg}A8w!BJM$Xef3x}y%-`2^StMNKMbS@eE(+k!0OJ-I+nqbN
z4-|rb5a9-(sPE&e2?c{t1LM@wljOqck>jHBR?=#tUjvCh&V;9ZiO05&GIP_>Sg)Cr
z(&Mzu<23kKPZm_H$cw^ujyBC}jtq1qKM9lMgc;>;JM=Al4NMAY%VAqJpF5S=N%C0-
zB{0ehy9SvAHViSMAOh&Jr+*_2(|2#3Ne>Z+SgnPtDqkHhi8mLd#p{S-Q>I=-H<)U%
zCZfZYKbel5&uH_;(QjTP7YdG8DmJgC0cR7Sv--=NihSBd6U@IWIenV=V(L6QZrDna
zPWg{#a|_7Vo_~S~ls_VQ;ryOGqX;xLu%OI{5e%3mbU#h}SKUcsm`YU%1IibV8G*Pu
zaXjh9KfwW=T<Yqd5z6W>erf?8RcvBHCpT}|YD-9~GKqD+Z#;7rL3RNb-eZDIu=>u`
zBY@IuQo)IP`gpZClQy%ve;c8?n|Sh<gf^-A!Sx$>H_TY*lc@g5*L-8lTJ99XbR!Fa
zVJ(ds$E4g*F&N<efC_C~xr5p=RkSx12U;^kniUfU<3<JhlA)wiz!c0C*y}oEYbQiJ
zXFR?^Y0Z;uaFojGuXU>N7Rvn-W-zQ-tMcpO)8spRruJSz>CZ{EpX&!)Z_Pap_mAw{
zJ^2r>$vG2S#!T<;*mt`AnX37jHO>Oh%$&>wm(U@EUQ|G<A&htI&gz?8Heh=7;uC&1
zWXt=354hQ(L_!#Uc{hPY0LX&3ax3+aWobgWFr~F=%w^vy=UIvE;E6NgyXYZeKJ@Fn
zko*`ow>0IHj}fPIA?o~rrG4v7k^_9Wa7djZw90!hxeVd4A@!G!fb%-bf^})N?zi`p
zNy#iToEHFr9D02X29(P5vrKOla-URKLf3#ZlLj^GoyY@~6Gp_Z*nk!23*(f_MI-AV
z!9+UeDcChgLXolE#ZC-{ReJbO3EeRQH*T7DpcT^AF`Dx`lb5NvGRE)2tF@1PpSXmF
zlrGQ5y|x9r*D_8-ePatQy%|~uTpj@*H)TI(y+?rD>qdPPE{b@{t0HxhZOo8e76P9h
zHC?616y^obXa_|tKiNBJBF(7jnRVJ6cxp70_{ui^C3Vr>5hXR2yK|Ad{DS-whby_s
zev+LOZ}b-FUnQ)*SbAHe_R}A^IP*7J9x?@vDWufeI$bO+KcZu!(Ze_8@><CnU9h=}
zjY5F&=~)^shBUhwG<%rgul=b;1;1o)^u#=sLab;prHNp?;*#Xkc3{PK<T3?HnG<a1
zw*!-hH2L+kskrEB4Llop82)q^^dG6%YUiC8s47*;lOaVb`4((1H%`8vef_2kX5OS8
z@&x_bAd|`t7;QiCF<h5I(syPbBa(F!l@5TanYN=gxmI$2I*MRI$8m_Yjn9h!gYz%-
za@;xWOR)pde5NT94|#ojY--3#2a{E)fpW3!XfnLl({AF2)YA;Zqc2&h9pE6<*z_$#
z8O>=Un!qX8zNkoTKlcxpr;zk$EjV-6ns(m!?HRgCz*@A4z4e8&9peG|g{fzHMl2vj
zwQoNSv$+l<eY>EsESEa0EbjBksUsw<W>^DQPh!})WyGf*w`mzg!t{B_3u~4ttuxkM
z{I8YoHW0Ku@2Lj7veGf)J9osWTnPq*lz{LdO=V1+x|UxMZ!(*N<$%%fK8vMA9K<zm
z6{{t6HXPQ;A};mdCP)W3Niw|L2Q9!aMzT9xwrWST0_2(8xqa@h*9VBVXhz`?3EV83
z8Yrt1Xoi$svcdvbmu!v4-)&G;T?5Kks%QMC*jJwrOKXYZ-9v_|nhLC<1mKJp++==s
z=^5xVO{j_GxaJUZWja!Wq9ff~$H|HIkRC~cK+#}V`fcgffQZ<X`Rlq`7#jf1Is6AS
zYbF%m>mu+}hD75TeV5l+rRMd>M6D6rOl1uJRv<rtxIJ}_f6^yTh^4s1GU2qXOSPjy
zj_9oCC5+4#`0HF1HeerUT6>?~Y1i-IU)Mo?C7ARKzvqF+GAL^)zV^&DCTXF*OZ8of
z=U0x&>wLku>%cA5J$?5LWi~*~;D`Y`&+Ep=D$5|V$@2Hi&dq9(&G$>U{=W&-df5fd
z2F<l366fth*HY(1FMwFx`+|9_==G#wtT15Ru(CzSr;zess3bGT3uwwBg_q<s@~<U!
zpHbDxuL1)#44=Chm67yBC(kck3B1J4tF#;n{u+^r!m9HLA_zx>HvvNb)u0%y7)vjR
zXzu@tX7o$M57Aovec5_<((eL?SKu%x*Z#{t2wx8L1S<-1X@lBmb)Y4q)Dn1*V=>gy
zNW!W8uU5sGqgpEgSzhM_r+8(&^o<n4Y81XZpI9?^(yurg2tkc}Il&WB!Aua}7e$ii
zW1w!jN~=teUzM$+hVlQJv2+ze&z<IcK)O2`0-t!pb9A#~<^;7%3Hm?=n%hsjtgEW<
zi#ohLqVxRcfwiFpX?OIyL{$njnmyX)>zld@>q@!@4?QBOpMzr;nfn)=UzN0(a2u1M
z!&iUryRpK@q(y{1kzivOx>Dtw3WmeviK7_rp`*dzKb^CNu>}J(o#+c5v5W0p)VIyO
zrH}Ew5;-Xq9TX}($JOj1W1N$GKor8;Lx{AYWOGS`{BQiVBP9HErt8t{S0e_HMTh-N
zmy%HF%U|F4K%1-u&X@gXRhl|}x7^Z!73@~yzs%!`-LV_qxWApjQ<w4}?HGjgdCa{d
z(j1mL=Y9L5RT%<u)$)n1nHWwYbD<mjoxT65s&OK0^o|GKvutSG;g3Ah$1bS*%%;N4
zpor>*l3JH}+{|vDortSY=&6?VnIl?laAE|`KCx#-xnEpHwrmT0I;?!h9Z+_(Y6;xD
zcUocbTLJJ#S{rICur*#D9E8<2VzV3U{0Mw{uT>m9ei2|g0cE4!P^O#w*T#m@tzVAx
zm-an7#FD?mUm&~P7+B(bfYhc?#!20Fz^c>CWw9NQrWpOBUSayA;k}tB7wonSVmktn
z&e$WADGY>qsuI<P&)y#&qx!#f-CMQhv|_%iBm=9)aumkx7)XAg#P8^$w|rsI5CN~D
zhPR<YmrQ^z0bm(|{#`^M4_rkboVgFao*^HnzFG{YSG*7UDt}P+jNAFw{(JL`Xv_9r
zzNy6gxuqC;$KD%q3=1;9tBzt*&(WUnlpF+9_xu<x-(SxpCLUGJ+`QEST7&cp325%n
z$C}l=Bewz=fM22xCSw=SViUOpv#ZsH1Aw8?c?AK%HzGA6>x4AwyfN{*00mI>5)tEh
z!weCkX`NE2ClxeKaA$^`lSjfL+94OSWMN-A{FPs;8SBfEuNG?5o@%rDAii)3IxWz)
zf;A#OddP5T9iEzDUesUw2%z0S>I}pS27%-H;)q>=OW(wF0oKGz%yl$_Rk`z-h&~_*
znMDA5j1}6v+(m|@F`C8`Z7ByT7qqcre{aAg7zI?IPH35ody74U7GFY`$iK(4J;5k!
z8-8o>Z@DUKc}gs#D^?z*;>QQ#Fwni{Xjr{ahjkqC+Qpasx%3C$A5)ku6$q;?(9a|T
z9{;<c>jBqTSMTM_U7t@z)(tTY5cHtjYCsOZX}6!}&7Z5k;&vep#!qw^VAG$!cYM7e
zQoK`V3U>)9zWFG>@SAo@F~2}5yAf8uNG!jApC<`~&JoJ6zKdu(uwK$)<(}<6*last
za4vZA4uH4y6+h@~VRX#sylKAlyc^rlc)@-v`*1$`0=?e$EoV;`;$Z?1y0Uq_VE`Xs
zv}TFhWh5IF)`|kIRgSx2C>1uU&vQO^L%Bea{6j9*uKO>*8-UOafcX1^0p<QTNd6BG
z3>4yYgyyec1Zt$oyoXL}fy_#GD-0kN>7OF^o2szHF2)gpMPhc77|JR&bt9BV_*4RX
zF~<^POHLI-fzW*MpRAT}@t*?rIlvV^$N|AzZ^@rxc!hK|N-AmrtL^l?xRC?EpBWPj
zA9;uS+;f42$jim^zC!7k&&q7aSJUPPPVImhz`&l@SsOw&QFd>iQA|2VKX-y_7bA<c
z;p%=@QkL*=X7Ld?nZ@bLz|73db@2~YyUU;1pM{@eHwz(uc7mH3P_7%)Duz#iFScAJ
zPJ!!0Oweu$Q+{&&YGy}Z<ebM_`J5>3-#@?pH#}?PMvn#gZ_}TH9b8*8Fc6R-C=d|m
zf19=LFyRslMlb=%%6c+5|BCTE8gHz(thcl;C2W>I5L=h44|IwNBM8BC%HHN$rI<+*
zYdVb@%HL{HVT1XfAf6<`J;;Tk&;k)$PW`ieW^_+>uXB5WTJHTpOf+c+1{3agFdtV&
zc?f90dTY4f5thki)wB;%!_?3T%0>P0li-udJ-t-iRs;Y@E7a-sLvVB#;ZY1tmaWAx
zz2RN$yXRw%*2HXwU3|$EpD;$fyd8dNuACd3ByA8{ddMX-)X5avj}=R$fdN5v3Cp6+
z<W0=?gy-1#L0CFGrtjKno$V9K!j4%b$^@i=<?Uu3MNQ8?A$OYtAyWh;SO1JVdbE?q
znZRLL6c^w-+tES(SBO)z!ORgjA`KSNkgX4F1oRE_wO)M9t4Cbjq?nZ0ZpfgLPHPe>
zxIyc9qRdM3ICuX(mx_=TdkrR<Fi({k*)EtP9K*Jh(|RCa^40b!A0onkFr5EIF^t{E
zv6k!BaASs%FM^^O^BIL9K5r<!EOr={Ky%hH?pX!4(uA*Yu&!rd>o?oUrfakq2c_=z
zq9=R#^;zC7Bc`0^7wMWGY>zL<mEq0?_zIl5q^{Np$2{Ku-f4|bCc=w<7k$|9KtSaG
zcYo0V1~{uoKlGB?T2*$mCOn3cX0j+mz!lpgc5(+PG%d(rNi@Uq!st!tmtlGhoelXK
z-tBU?EOv_>uYQRu@mq5Wk3K(TExYS_B#NSmpLwq*eAAilGae_?n}DCwX8<r~D1h7%
ze}t&Wi7x<o1vyC;%YN*xE26=+c5*=3h$0T~n}`R8xEnE)q%re1v_cCF^OmX;O~B!r
ztf9=e%%O>sFK>XtULuq)G(*Ib6<Timdm~iV$f@aDSHvcD58@~WisXJVXAkLwLCQXj
z@mVFYpWN{3;af=9Zq%WUlP^!e?Ox}>&oO5Y#^~$u-6XYt-ribKcSY)`+^Wk|a)bq7
zBL#%cK`VqseMN885iP5Omxr03tG<hogQ?Tktb?(hmqQ>kx1)-X%S)uU{B)w@|8Vur
z!Ieebx_8p)*tTukR>!vOq+{%kc5K_W*|BZgHaq(Ap7Y(h=iEP5)v8^4uc}=&))>zm
zb3DJPHa0o?M-4~a(PN@nSD~d-{I4!E8eUpjmY=b)t>5!PTzmoM_)vfim&S$bEYw7*
z+m%y;?Tpxk(mcywSs3m4j|dnN6Sp{PNlLl#)bH+34c1g=mompd_aB1=e3hkL^8p>!
zuy*%3H<`8`wX5U;2U{$8dx_^I39LmPc6=V5<gIJ%PJDXoEkA+e`AJ)T^ohu)cCB)*
z_7jBX?xN)`PGpA6s;j2_+_JP{1oQ!o-^;0U!6P1V=3sS`b#}nrpR{V9J2Z*a>9{b(
z^A1yhE#A-u>7&JPm9G2_o5T?#BL0N|+4=sEW%%Vq*`Zb~7F`8lh1>(23iRQJX6N9)
z02RUZ`a@~gW?fvhT&5vZ?@D>wY8+f*LFQ%m-T|JWcHjBbl?S--N2_Q}0bZC@#k&K#
z37;M<htLg{&W%3X&p)xjQ{W|?Is?y5Rz86MD~;IPStauki|%Jbj<ZF=xS+e8Og$%c
z_*K)Q>xw*L?mQ!`80!}zhH?+_ek{MzU7YNt8?<8f1Lo0)&gFU_;chhWIQL$LGasue
z^)P?e@}=(NyFWlq$_+1=u*l?By^Bfmf#Qyq2{=Y);P5NjTgEA7n$*$50*DPdu)PB?
zx>aty;Q>8_?C;+@hBLchIwfrzrCMV;*-9v?0OVk!cQqtCTCOd!d6@RIjt2B`*5xRE
zfLqLJk~6c}s=jqpa2iWhRCo%EjER(O_gE<PJ3L_75wpgsRA#_^Q17gYM15v!g_M24
zG3F7OLvU*n=514P_P6T0X#aV9ff3-MmamA5p;*(GdR|Vg@|gY&<F<J@FipSBsPayN
z@128@60zhBx8l}AR0H?Xrjm5Cu^cza;$0>>jJBfG@WyWQw6?HN)bmN#19F;!ZG!@c
z5y;z5fNltf2?~rWuJQorI2;){1TH@*7wkNIow5omjJ#d1($r=0a@~R9ssX(Bp;1Wq
zi7gG{es{CgYMK?4dOsk^8Q`MF))_+)B~L-}QqH{=kB+gO?>}a}vJZEWGZqkf;}W_K
zsjzXB)I^L@?8e56+M6BvE%T*KaX!=X3(&#s2Z!ss;a-57@ooTI1;KTyEh-^9r?@y8
zj_vS4Opz^K)P83h7*?GOkOEpkz^{+X!9R2XhSNObgl|NLT+b^Q+yX<3-rTgA1!*{m
z8orCNc&M5F1Y$Qt0%Fpzi8n@(ju>DCdH%y?)a}sBv7=qU<n|=eAaFlPaj1JFFJD<o
zu*;cvsUNaJkw$!tuLfSq+}l&86_!=R$|G<KNLgcW<~E^vkrzUG@qq3<cDyxV<1!#e
zbt4S|WsKuVq+{uxCHy63!Lw`3<-FY0{9}>-zq}QMXht)hf~-0mo@V#{Q;|rM^t^|C
zDi$tr^<kzza&Z6h^q_^Vfo`~{g&|FS*Yo2O;;;&vg-hUb&M+8+xv+)ik*Wg1F!_xx
zSPIJFN(nJ4QbQ0L$bczdY!ch5Ju!I7lC!v<JCI;E>+sNg!vk5*b!I<sJ68Vr;Ds~F
zy+|+IfWQbeV|WINT)TV7%Oj90Z1#hJ^IT-&<hE4fXX=L|DY?V*U;3)?wd$=1TT^=i
z)6RVRTYP}jfMtOz39jh;DCQQ{)xQru$z9;vZ&(1h&D35=4?up@`-E|{=9F^wZ~)=t
z48uQSx_>7+2jqxx0<w10Ez!1jw&=bwuG_+F9a(ml)q9(+`tg2j3M?uKjk-kp^Ic!6
zj&94MkOF7kie+^{6@GE|^TZE_iaHm+<6=T!z~TeCWchz{)$-4vdRB*roD(RpurMW4
z?ayFI^VU&X{RLzvRqNI0c>tYi2X}uae}vC^gbj3?25*z+eWiHFV_{EIyj6^J26!AX
zXg4>ER(4yb<STsZRYQ2u_4wpk{dn%BFax&hHiOIKElZ()Z0C>IUcSlPn&z%2-qn{c
z40BGELD-s))0k<(WjtMxox~S3Uts^EF8*f%=HxHeod37`024X^8JP>9qoVUol;I%D
zL_#=J&lT1-t|Ql-FJF<NGPa7P`bh>=q<==7Nf82c*&CGxb$DdydKz^q7I-<@iQNC?
z3mrJI;tojscS$B<U&Uv7`FHu>(wYsxrY7rtc^mK!y+hOW*cW33?%<^qV#R20EYVBP
zxS@>wB+^@{+evQW0z(3T*;2oW#+*!jGSrWTRTeAKd=MFo59(eIG8;&*4R|ipOv<36
z(Y)Vj#yoE&9eh*vA(|!R*d^UiyQvfMw&ia|(QoZ&>}(Z7&W_qBcJ`C?&IMOVPlFo5
zTW3Ng_CLZNpWsSAt+XzyWSC*HN(Hi#D-vSqqB~A%W-K&M;1&Z2ChZ+gp2C~s=FFIA
ztBcgx*JID~=MKrDB6~(U%_sw)b=H5K_TuZvmbmg_t&em4dy2Pn+QsrRmuIzVP7{$7
zai^*J;p;Eb4n)snSN5{3t)1YJplQu5Iz49oMIgG|4DMsL5}G!}1CDAG5avp-P8zYh
z*_!PJH(prv+0_LY7D~?=u|F?XnVQ`jN+xg*<w+2jk_DFJ^RfFElNiUONjKA|JQmB!
zFR2*|a63uijB#zsehr^{c=n8*iKyEYW7RU7ll__;U5iBa`(E8epGIkE@m6Dop7=_r
z4Hs5~r#MRIUYh1`(<dD0!&t5h>F(IlQ~YetQIf-UQV9k`d()t>xJgFU!#re?b!D>S
zo9HkyyJ=*fnJ-D%oiz&qR+{P8yAu}V0Aq6;R`)pzlYp4E4aK-1;=$zbH>uH})FfzG
zVeLW6T69xYuF#5+J^!AWQ(pfTDi>R9mD&PhOm7;2K?@pzVN9B?0a0*+vKO3fs77^t
zRnVqHj%Gl;QfIa8A#bJVA$aU1{WP`X)qv_6FUoFoNo6D)g$rjGKD_F7L@$k6+=3!_
z*NXCVzc*e*?%pMoDp(j+d7N;VIk}Y%Z@t6aD`#!LNjqtbf!BUne2hVwNEcPKy-oC>
z_V1)#QgMFYwTh-6GRos(k9t7IwAVbo$NiMTCKiCx6RLs1`e-G#eEhX4y|Y#aFwvfZ
z>`zf-Z4K*c)UVlYR;02~WnYo(le@24K&F<<s*RAlKA8VG`-TEK5@X-6Anl)&i2De<
zx3+RoM1Y6@Tw+QYv@;ssrYIy*_c1Y8BD`l2BB)FgNDmQ^i^CX;RBTqu2NE-`$3e1G
zM-U+N@vewaO}I<o=lqis9UfLvaS3}B6(4&tFHZ1UU;#QM^F>$Tc{heYSWi%db=G1{
z$Jx>>v>9(r5^?7CH(5wS$O&3#G(o=X4zs<}96i(SU7Iu4@>W7WYz(t==gH*md(isv
z(FNsigtraPd2nsSS&f*c4*)_)PHwgjoFO1GEM`~6?_n2*Vn!^2&j$@Z@p!ivyfGKi
z&XeQq)HUo06a^`F8N?TO${vaorqxenYfTtGD;fC@Oi;$Jx8enT-}Bqbyz7LVB^KqB
zg5(v}(YH#fen3NS@6`=VxrL!7&wIc-KIxra&^H0~c_CQ7<q6B7N-i{nb>c{4TqlK}
zD!yyr{QQ3$D#mgRM77^GDM85pW0R6cAOTq9J*@4^$maa?0Z}dF4?;yl6GI^=H!jDb
ziG2au?$Sw)C2i=j->O)VFy96f_8^*Nw&~>3tq-t$3)Zx+3kUa_Z^P?9c#wwLN>La(
zcmi@m4rqu8s~av*1*%NS2B9PBGz(J<cFnmRZm|8CTd?V}7O;{-7OYZ&`{@nmOF+-s
z>ehf)aYNUTZ-y|(nU!;k(PHfp$3fRKAD6M>$*;xemyLIkD&Ib#x3f%%1gdba{qgAY
zpR{mZvWI#Qb&pHLOY>^OP1{WhXU)(4%Ne^{RbX2ihuNYwagpGX(bKuQcAoGRySM$t
zcD}bSr)8H~-f;#FZ8@0|>-z%%t$<S?zO62|XR&JXboSF>aqrwBf$^ktL4LvE^swIF
z;>;RrhQ#XUatTRy^6AieQDukWV8mBFS)Ou%Y{8H#cZPf!HeJ<${3UB|$S2v5D?d%w
zUe@0@VBwB|y{UUjmQ&@|>y$4(1o|Hpmy1!>W`Gj))h)o^$7W+82ng&*DnMaIHQ|kU
zg76uis6m>85C#PNNCI^%_Mb*j?sS&d90PD?U4cIJj}-wZL%c5<>UY3kUI>Npf~aNQ
zG)xYv0HY7_1GV9Azeds4wSGQP!1_D%#Kcp!@WjN>v=HpR7#3xB$emH6_=#vn2$lp7
z!l+?06zR)1Y7Meit~EH@2=H6d);O<3JLeVb!2z>>PsEY>sskyeFBPfA&>hh=L&YN3
zApgY34UgTuA9}D<_E&D`RWJv^aP&D5Gq$M+v@_yWg^)3e6gIm#CXyG{n#Z?^dX#8h
zCKl2fNe&`Sd{P%Pwh|;wHQ-^K=w2o^9;eU%LQ8B?88bE$gql_uMT%tvmOQi!LVAR#
zqEzerM?5BxicD-FoU&2?pK2hPS*+Yb=jjh+B%=8|^P~R(8TwDvJ%v>JT>iFPQGQ#l
zsQzm?Dvtn}kUfZyFvNudfTpG+CqF&P2Zw1ql$uL~aAwbFEG~78&!T|M$YSDMZ-j!O
zQd1S<7NZIc*LDb;gGT}trw`}cdiLE5eh&NWN*gtI>!{j|@xAYQ?s~@WzV>j)@w$o|
z2C38#@#`Fo;RW+>K@x8rkLd`c>dhlU+aRU=HdiHsT;1<i33tK+91!#2o*|W@zwJ|`
zp)z<hq{qBw9w~4kW*#k>elc*@=*iFEH-4{vLh1rk4T#`OwA+xTFODFDao2(MzGCKS
zAV&vpv2cixH=#bqW-q0LF%UPYnzyaB0J_kI8>hN^=rmsu^BlMxmA!r?!EChbf_j(k
z34zODivTXnkRKiZnXVl89T!j^fj^8tZw5iS(0WqLUabVXP{c}Vebu@Q5_V6Week!D
zsJ9>Xb%Y;w*7FZ|g?%u$QRlk|2M}-iiTr{HA#YH@n{>SM`$hS)Nc;K0KD;G>Ue9m{
z@NjO3@G&${kNSC+^J}Qu&iVY-X}1Rh=HTP)k)~sF@k{am`nV<Zg+r*5i%>UjvIBbr
zH#mo9+v>5^Nc-!RhTY64?|f2U81<_w><v_W0<5#Cl#|s_RLo3{D67rJJujJFnBj*;
zbcIGl^JOc)L6YTWkANo)u1u!_JxeD?3D$%MS0X#PlB!B7+~DX_D}L<xA={xjC(<@f
zfjmRK8Y6i?qe7}SU0%y{Do)zOlipOz_>pu*Iyz@OpK8-Glhq9Rzt$#pduO%@Fc=2A
zv8MdmG1Sx3t(uq;>PQ+NJ&DL@wWpy3FMyZzFV2v|)`5AfWfWd^R))q7s@k?CCbGsU
zbgtA8mD6Mo7JI$Yoq&MmBT`>HL^m2ms>-2;&A$MEZjRgRtyY55w-v)Gx;mBP(Q0y`
zWk_XWs;&_Vn|U8b-dg*ZO6pAgZA3BVC#_lG<n5pb<JHdwh{E?5>V1bZ?FkI4$W-Vf
zM})s>C38-bb0!^Z5Y>@?<gAj5GPFu;$(rfuRD`u`l{CfsW{d-~#q4xZ(gSpevQ3fC
z)>PF2sM8N*X$4bv=7N4hr3xp>n1}(rNttx2GaC;+%1brtv8Wy684QBW<Y@5=r1T_l
zRISTaSQwY{#cyo4Qmo+QPBSHGsA7fXe-Lnx-Nk511>;1(7frwq2umbj)B7SFSDJBE
z9@;W*+Tsj5r!9GwT3v%L)HVfNat%<akH2@(TU4c)eQT2C=^obaQ^>5`g_S^6x@jh>
zQBBaV)D`Qek+u3+SbkM7X3NAm%&r<PRAZNXR@|S}$Q{sX-ha_1F?gux3ab!wi#E5L
zt{aD_Gl%7<xaOtD{xuju(zum<4|i=pxl!b?8Z3FRHKMh2vV&oSLA)+v-W_Tx8*-cg
z5T&tI)^_C-%@3t(C9*S7Y|h3QRCqviBL{bzEi%-3sb2KTszw^Ogpc2fpfmPGsNwZ2
z(!?{Vz9V#()Tfr{^EM?`?;(1q58603gbRkZ<3$TkrmNmk?!GkGE_rYkB;YX4T6)P0
z8sK5Kl)hBdmT3%^6hs2QO=TGupZpepe&lz=)t3@mRrHftvHEc-N@EV~x$!<$@IUNP
z)VM1g{^tfXbhnS&Brk#<@`C_w6_CJ9n&kO*RO1^P%)3FmS(>@Nb{4@L-uYXxUoz`C
z9H^p|rfN!wB<6131cvh9G*u5H9i1wiD$SC#ofUe}QEIiE3<17&K@w`=w--MESZ#mx
zdQmBV(RLxyaU`p9CI4mX^NKGYSv<knTtTs);N$>IHZ?L=lAE;gMl5kO2ZvBTCK6<a
zQKIZJ^V^=O3<=Qu!j`C~=S!WzesbhFOsCjPT-ILKE<RxmpRP%S@+zXSM}61uI$v}d
zWXcRTQ2Qa1W&m9-(}uP)Zuo)@P*Y2$M)xaHR+Cpwrad{~>~nL;<6bg-k@@&jz`<S>
z6Vb+uqsZifQELL9eIXZc0xHtBod8r@#dYjy@cMVVtprP-j49`o5Lx6_S7PhzE<eg!
zdEm(K+{eG{Ez8ZH@Ay_t{o6#**No;XUw<p{jSacFyz^W)JO#e4EVsNIph|q?gRFcs
ze8*E!ap%!+8KhITZx8Ni?e4Rtg!#)8+F}^_>WWM3U|@OWrqF7_G$+yw4HZ9Up(r|K
z)OSMCV9uE#;X=pZ7Th4gEQaTmV+st;B+Lv+V@R#Rpb$no<#$F$l*E<7xaLR{{WL9k
zv?r=MrWXM%*F0^LjWTNiptJVzpf%e>eX2Y5(39GsyReXz)l?3AJIqZVeT7J9A6m3e
z-TfUCqn}IOeBAH%dQ#m&$N{qv&F?S_uejOjL^H_Ryq!1JY2VBtK=&a?K<OX?TwHiO
zO`q3XKY<teDKes-f>%k1K+*#PqA$-WrpE~@QhY|%eXQ=)Q_6D(;N!4q+5vnl*C>*5
zNcyoLvE)y?Csn~c6;4!8`0-AL<md^WOvdp}PSfEKSMnX)%+IWSm}9i3H6Bw6ZB6vl
zk+JB02bU%Z7O0IVwR<XDcyQmCe4j=x6kn(_ykvd`FH-PDwcJz_*x*JKpj*tE`Z9YO
zw>7Z?gJe~GAf-$zfCV#66kJ?G`9WH;mT%7aXP(qOvZ}atOm2Ic#Afh%h7N&<+<~zD
zw2?Rj?WL7vk`GI1mZ%;CC9lon)S9*TC7Q*hss;V83Hfous0NSrh808BYS*PH$0eN0
zrsDq6?SqEhP%cL{SiGh#ZZ^SBkWI~q4kyN?HX+-7=V;s=z`hsxlnDEj`NDKB^~y-n
zJyP#$Ax9o$2J|pSYAXn&6S3KE#WC?#L`>2^2Hc(o=t*DAFj`0QLu4{CCNoiPi@@>~
z*3n!NZ;BfXm#GwD$uR54W78V{KTQuPgG-c3HWpKXrDM5Kw3idPa8sFf`f%nWOU+Sh
zjQ%pR%R4Lz03lpmTA9@C`POjt)Iy*4;#LPU*X!D45PyC&?VMg<fu=xALu%9cvEvio
zR9cZ5?!Aj;ER8#pc!*t6IccBTsam4GVj&vy>fwQKkvqXLi~m$a&{PQ!jw6`EB{ZnH
zbpf2i)d;~gPF8P%I1nNHq%gF)D|u!Kh4Kwr?e_vEK$~zf*Bi6!EE%quKT<Zl_MB<#
z&DOp78f7|tka|r+Om==XaYcx+r;pJ%_YA9*0%%VfxH#$fST|!r=bB)WUepyspeH*$
z_zdNHX)<@w4>x^fQY1wp1%=S=fwr5p;=q|GZW?fR-2>kX=M<+{oh>;{)!Wrrlh$l7
zWN>W+`1y9YZhh>C-CHvXkstj>Mv|(a9fk&mxxo6Rit@l%a|P(_+FYx#&P}CUeygl&
z(s7;YLJ#oSZsRux>qeRSqhjFux=C{h?b+k1)I08!<=wT(Z$NT<k7%&ZtsBqp!*B0c
zCpBYv%9e*A>HS4vVB<os0@(5IgzJpP(w}AlbP?+WDWkv^VfN96wi{2|o05fJtXAAu
zXT#53WI%;8!u~k``HE{ruyq<|MzT_05tJW)-jz^D1Fy#c^T@(CiTm9^YlTaW&Ks`{
zBi%lVT53W*dhwWvzRKd@WVR(!K46bQr|AZS&+uvLDxj)*oNUGumma@3>rlinigw5W
zs9`)-<<ZSl6OpSct3x>yLblvFcV<DmKt5kT?5xB#6%pIW2HHeSZ1v0snBbGcty*p-
zi#yEx%|E*|=hNKd*jLKY%ez8P3hC!35Ib*ZKiAuYu|xah{e=9#%_r`#a;g2`83TfE
z-~ir#kf7g}g|m^Vtr>m7KLb1tTB@;W894^(W;sTgU!&5Ca#N!RG&Ga6qZ4x92&Dh}
zoS)xndIHyq#Pj?2=^zPyh6Dh+C|;Bw#7N*S)y7uva62fmscESv;4g6GYW23ax9`>d
zX*C5`2d`-cw{ftKyJP0yj_~2<_&<IB_|h#X-?d6qq!@BB^uCr-<)K=LYkM3}iT*$p
zkC#9pOMdfp)d4ISNoEXeEqGO*54zTS1mtX+-!60=z8pXQ|E)Es|B#>?ziG}1o<_7k
z$-e(*L#a{74}|~R^|*o$^L%&PdSMc_O2hyz>tbl1OUYGYN-oS!GU<(Ec?@nBLqh9~
z3-&#7D%Oq+JMl=`zs$6p5_#fd4}RTIdRPG6^~WP*Q}gDJKY#kcIjXyDaIutS^x|A!
zaeFgtXEz*6)qH;Lga3)CrQGGa3e}8d0xG=Tqy^z!$!HGn%QM_A`a<XI`v>uLVf6q~
zsNf8-X?-*=`_qF!y3YES!LY>RP!V5mqC#D(yNUO7kTc+REA3CNeuy$<Yg!;-Ook6J
zsm{RL6?N$>U4+QANn}d(swS<q8=q&|GlRS9xMSI4{OU-rUXv**F8bz#P9@<ltE;+C
za?nq@xlU@axx1qm^i49P4-qi4^Y#Onloz9e5Y*{4IN^b_9{IHe7u2We#;Wt;%S%x-
zVbO15*H+c}%Z)JorYZcAO^?Zgev53)57wI$BXuv*wZpkp)Xk!;9z=b~E#|474SdoW
z^cp47oN;lDr5vI?j>{oKtXkZ~NmdXAS7%KR^~Po>l$K+eX38j<+3^pmyqW+FYgap~
z?Rxg%TO#pxaTVJiZtX-*q=vDTZWOPFTw#Wl_s)2ll9&e)C6-HwgVS0&pUK}apfJS&
z_r%_OeRj0v@f`&R{04$eiYcfk;psnolZ$uJ#qDW9IfII?H8N-Ff~%~%k9|69=gsAt
z%bwBkf7Q<MTFCeHB3a>b8fgLh{J%z1hY~|2Sp<4akhjOFb|JA@eU72gkj=UZ!b?YH
zYRLl@n)4!7;%?E{u{(0l$F4@0jF^RnVrtE}9A6bJxR#ytv7smC(0Ns^^Gv$M3qR(D
z3!UAXx+<{k-^N&e{Vg+7oQ@Q{v!I-nedZc`QG!isK|hAVK)*QjPyhlTr7H>?riQ;L
zL%X~TN1lw=OO~G;i#Vmv@E)vhv`GeuQ3Un(z&CfvIafxFPUfli!)=t~hj`HL=mn_7
z-*wN*(7Ms>wjZ~O78-x{lk#j^Tq<L_7UW;n*fWcD1d~j^d1Wm)41TQfyCwLQOfj;r
z?n{mycXVkK+}isXr3(O1rUJjjnDign^oeNXSQjZo8m4>w3dBKB*?|1!XbC&6=g>PO
z44?r$I)R)DEl1b_2@`Lv8!XmwzhjSRM`v=NY#}Ugp)feX(}Rq`@(xwOb`R0wjKO?y
zYyL_Q&2R||QJ%JiVtF1w6{jzyLv^Y}enuVuOTh-EGj5NBl{Wxy1_%7VT&PDsIA*s0
z{0;>LCRK#QV*3rD&`&XUitRKrF^ECnVx=RBi*_55i67h$O9ZUEpreX`7vw>Z?2E9G
z@mcL;EiDOlmt@C<<c9o12}VPU!V))*&UcL3izW5R2)bb2-J@)kPd$n)q!h2fn$-w9
zDxq&uP|G*<IT@5|7t4txoG+_xDwyV84s!`y`r&lsG#{~6wTtKZ5~PmF$0*FGJZH=D
zh*AJAmXj5)RCf5<G$}NGW@p;T{l@rzv*3Sa8F-s`(ErXiz<OO!`2TzsYHq0<@=c6$
zOknV41ZcU;tD}7$V2#&_qv(eA6Sxgiw9=D-qvR6X<`IL&55fCm465TRi94I672$4v
zfie2pc%Fh?CNfd8W(nNRq<w~c#x`#!p=)i)6!$w`w@DuR9rLcce!jddZ-aCK9ZXij
zY*?y?k@}kCFM57an%_3Z9u34t?Bh=iJAuI(1KOzf)$y+P__15eN|}GFIncvUGZqHK
zvek7GiZh3k=PeYplByDhb^tY#%~DzDpzGC~e~;72o@93xY^gP%OLEq;rn8ddxkxak
zm#fsVL%*GMN2|vGtuY!{qpLCo<K{c_O5N(}E7PVf0#O+4U^Js}t=oPjOh&cOHnw6j
z0xS<Zt2#`{$kKPq=q$-~#w+^BO4cZvP>kEtYUq?H5$53I8P?Q`66dqXp(Sypb=;VB
z8W#id%<h5N_$|pPY7I<f8EcK_tMDW&<r(cR+9E9Ixy-wk&Fz+!q+l*6ef#RdsMPzD
zWn*{w=F{O00j)_IQQV75gR3eMbc~g?fQCZWd2fTM0s)0C2k5_#2&v}N(zMlf<%wD?
zRiW(a3z?@)6sw6imevViQSBV|`?A)a6X%G~qGiQLSegp@(VUy8@Qu|KZz|_3DnIzJ
zoiX<XF>R+NZElxZEC!aw&;#S_?EZN*=i`D;7As-ao%aA$CN<BE(}=2=`)jYj0c~!D
z5L`dj-xV~Zq!_Wad&rtO#I=R{FgTl!%9KmHH8TqGj$mqR;!(<g=Exsxng0ki?MbIJ
z(Rpk1X2d(5IkfPROJNWS1~{rbTMLs@PQ-f|E|PEae&D{LU7*WqTaLltshV!6IU-`B
zZw!M$^GC7A-NpsP+(Of824*je1L)lA<(km(dW6Aq_E^C~f*z1^BK9!{G)vL*0JS-Y
z%k<#Xa7?$bP0x|-jLgM5v_4fkxVs%+W@+Un0)IUu$9e5lCaP}T1Shn3YzVWny1la5
zt^Hug#9WDak|)KM7ybI?V=DD3=kJb#KKP3^OO|U-?H~J<iw4GV&$a*H0Tu%+hgBP@
zEKfqUX{;#VA#~(r-<%?_(zVd=C-8nrt;FGcF`k#2sHydt<n<u$F+p~?Zm_^PqtKtu
z)i;@)R|EOq!!}2^@1aog$9qI>(eeeza3%$>j{#3Xw1jtV>RH|*5BUx$y9!MM5(I@l
zLFwqfi6%ar|6vzCxC9;L0P^;!`%ZJ}cBx6&qcXL`Rr`|qD^3z`pw_7e$ljx0RR3WH
zL2Bd$#d^O_8wes-foWBHBOkU$yh#5pK>QnNhS(MvI}R>`+USvl@zF>qoC#>aD->h!
zz?THoSPM2e;1$!_)n9~ro9z@n<&yWPGxbE_!2Ov=SuMOIm!(MH2+&g#=I}r$C!#FF
z?Jb3Lj`9xe$eap&$$6O_(0v49EYU07Do>kMdpc9vr(t{ZtuE2!ENO$`>|cP&u;f8D
zxJQL~;TBn21vxA|mh4MY$HLVy!XqE5OU80Ap6Gv>ht=?oX259oj&D2n1SKbZLbn}r
zQs@+-X$a8h5~Z7;2XqHaw*4}Wc%g_ysg6B)v`vVaS+-n1POmhyiQ18FCf01Hidddh
zA-wO-pynCbfsnq&g3j*K%G~d6aU@t?Wx8(-TDSe9eaFt2OJzUnwn6{Jt*s%-i&|-_
zpz_T$96jYoLQ5d)Vc5xsbekJ@MKp<Y<md{)^NVyGj)Ax10HBVz$K+hg3QR#Gmgww|
zaeU4|P+<N!eKMlZ9!|ClxAU*tv_)MfW^7K}mJ}tR<i__4H$`2s3n&8>sGmNr-<If|
zm1T?0UNU~@sc%l#X}hi8a<ivwD|Q+Lo9&Dw1Bco!xATb#O4T293vbdW8}~Iye%(r)
zh(;e#o;yx{pxs(qql1+j$~mN#nXmr+Xz;)Dw@`^IapAX$J^a3?66zw!5=>1|el)=(
zc$g9bfUo@_&tK;s9zRBy;E{o;NP7)!s{t)d#(gB5cC@Z-HS9TsuC~ijow9vC1+Zqi
zRTW_F8Y;k0Xjv0lB`qx)jNtM?1&<_TbKa`eBN?9I=-3Be5ox`!{i5A`(!ww6c(fqU
zF4hOw>mQNth)hp7uMzyB{IO#Hr)`b&EouK#Ptg4Goq4}U<c1UUI>i8+%JYgypYqyJ
zh2StUgMfkX84PWqpLF>}V=-vq>PinZ^mPz2eTBk4;DkNTJ=plF=6Khcw@N-x!~D|z
z#yZMa=AGOf7VgvTZqFC?cjwbB*B}tJRC(ARQH^3`jkyLQXkY|z#!>_H$o;ykB*Fuw
zq0Gq4&;%PvL`EV5{K$Z3?6XNuYhom`6PYs!hIrP4q)wF4qeUqZ1A~;Nq{4FQh<YW(
zNGz?GigasvreDuo8DBO=VHz?Q#(!nuu7bMqnHn8?`;NRMn6t;y_@vk3z0{`|M}cF{
z;&~Yz<BlAkYpRjdi&UwnlfRJTdwDCY!sAB9g9Aj=NuvcIXm$aLnb{ZqX2A=Il6^CU
zHdZPe6AQqyv-D7Dpn6724M~x-CZl(J#hng!d`gopnH^4fazv7>R~A2GKLw#~ecXN+
zZGS<^JiWJbIa#BslH0=iItMc{G_Xm<)Ae`-qH+vrOZ=6kCq)=2M1PD`*w|%dnnazH
z645<ToO3)B!2!s;?F&&yM(p$mrAD6DpD;|$o2N#HGl`Don_pt{m94n>#9vg^*Bv0g
z(u{{$z71%jx%spX@4|r{W5BX5nxl8O$!3Iw>!&;`(>AVmh;$eQI&&3UhxhJtLNB(v
zpyO-(Y(`#8%bcVM7BOU#QR7h+HF;RGYqKhU9qH`sl>`hCe>-dBnX%htDaB|S%1tN#
zHWZN{Q>Uwhh<F=VHD`+OCL^S2XSi1vb8FD9U8BNf7tp>_-S3UO8I-{iLZW9qggNBp
zfF9l7`b%WO{>X92ohG|9x4b4fg9i$TLIL}D9eoS`{&CaJXp82T!1w-vDBG{VB6vDN
zaO?<L%LPdPMP}0at7Wy6a0Y~P*5d{>h|w{mJ72yBae?vSLu{R4;1J0QC%_gmYP};i
zxowkyZ#<7Ftkc(ftoYJbV~vZ*J6iqe$E7Vc=+l@prKLgRwLISPjJUny6_3*oaC~tP
z&Ye4_#0+sv6*L?{YHj9*z|`|sqh`$?3|D~>C&b!Z=1zaVt2Qi&sTsSi(Zep^tn`==
ztKNoiJgrzwJNa)HC<Cyp&^?Y9fI6DH)HN{=!e<DE_y+wB@+^1D1LpsJ{j)m+((}Ie
zI4QpOI9U^nI;j&_^N|6l!brnk-t>Q+=^IOl1T=p7(>neMCm9mEAtpnYo1wTHvh}v$
zwtJp<QhbN<!!(e}kGI@|yb;B=sIlO-9Q9|GbF(nF0I)XjwtPIky(xgWwAu*`xB9bD
zcuA)(D6z#3H2Py}@|e3$Fq@X^7xV_}IS2PMDc_k+mP^|&<5vK*zt2_C<-qqgo3;oe
zb{$5q2Ba9-l5F|bPsHlp+6Eja8rfASIUTU-mn9sEjaJ-wrO9fX<}sf-w95f6{%UlQ
z=5#*lDNwnpK}l9Gcs88ITH{CJg<+EsOBTFQpMQ_Qm2#a6r1*`GFmWk)O>R3?Oo>lw
zKNrzj%O>E$K{EhsXxgI1fdUF*NIXZ_5ZcbPH1z*e`z0`)Q#5bIf7dR)dK-OWD^z;!
zIk2bsV$-=-&<p6Z#Yfw~RY<n(dtB(wK(0Mi;*_3C#MB4(YCbocE_$AncVV5~q$#1B
z#|f*$FE^Y7=j}uE8`FKXd60HK=Z`PK6E+tb)19=Y4blVXSbh;!fMOR%yF9_&4?DpB
z^VwHOGV0uyK<uay$t3I_wvYNG#GzOV`AWB!)cxnvW+%AvM9z5sFWF@TR#Cz~dz|fW
z-UC!=Hc1&|`Wb8eL)=p+ThvkHs9RpzV2#v8Y<XVJkRO?)1vq~tOyKHBoL%W*G@twr
z|H9fxzY-<@mI$V$y1w?FN=6b1?uvO(UK2KsmONynQ6?;Qj1{D~<P~H*WB3s!nJSP!
z2N47pw06eX4$OsEQTkYVPO9sVEU_1N<*MSs9%tbMe|esIs#rQZX&H`P{Vd6`+HQ*I
zmhYX?t%|u5rtPs1kdYL-cr6o6BEUpt4m}bAI|`hew`NWblwvbMejmg$EAQ1-`Qt6E
zRmw#e^v>!Z7#lPAKH~q5VljuGGpFAL!ZYEzK@#wNI+dS&z2m95m8h+yQW-VyhbOU6
zQ!G%K7(Bf2r(6W^Uo*7L2FL29?f2+MZ_ZA4DJzdEwp};(KIT`5VBhV=CR-3iZQeX~
z_eP3Kj`x&H4*&DT$NBd5CkWGbA@!Wd$uk$0z`Dm<Hj^3|kuqWagR8mMN=-rNL<g&>
z4g^H%;8lQW?rWwv;o`DD+%gXrM<QK0+BzLz|GT_?@cIojqO;IWQXN!&F4r#CT~yI(
zP*;iin`v*kUaq!W373cID%z5QwM6-Mw}u4oULTi%wW*)TY?41}H<QVh-I{!|y&}2X
z6#8(YUVBrCUT-2pLVCsws>X6VJ-NA9$2Ebi2^mi3h79}iEL0wciclm$sR<RSkLe(K
zQ?t=Bp=NV*1MJZ|;dc`yAm*3KUkH0{0_y~t?MNqOj<!^|;SxB+Z7Bjzm26k%$!Aju
zwubyPlhCL77-5D~_=;cLBq)xpV660w>W;{yFhD2&f}U8uB%txV9{6)@|7}{pw32D4
z$7zWn<}>zOcH9*<BK&>bEIBG8K}+Ed%h1n?8mzrxNX=%NsC4rcK!w7X_I-zeeS0LE
z3yBuF?tonD$bg5haXPU_YUb-4Se32If7Cb^Nix<Ee@vt2gg>x@5vtn^Xj7vB=S6$~
z)b*>>UQ-eork}|Abek`_lV3(f9R_E%eNy%J`m0*6&0zEB_1g%@u)Iicb)Se^VRXK@
zfd3d*nkfmVI!FUZpL8tBD$by0d~VJ_z%B$2yw%6LaGr68$5VO^u`loRpPSdu^<HFq
zp+TkDPE2P{GL?4U_53m|(k|lJFsliDp0-Ieiunq7M%?*A;dH{O37xT_`4z*20T+HJ
zPb%n>zZSS_m%drtmg7Z^@de(c$ybN?rNH*Qi*G$0&h7>P^R<Nrbwj<5w@Y1uicz|Q
zw-8%QwuQUimzh7`#u6fYTmvmM=Iec$Z9#v-?y@*hc!#;_hlSHkkth^oK2M*151j!$
zFwQLY$J$LQfyAN%PRVrd>(1uT@rgPTicTXU(S+lVBA=4qRh7`Ur}Tu`Czo#ZQRxg~
z>4*kYk@f>PYA2l$J`i<{>HpzSFiAHKT82vq{5)Ak6Ag$KkhvpchNp&#w=MQ;<*Slf
zaFL{UD^>4y?8nGrV#b_<=|9Ex>4olRK0YCr&<KluAt2-tsNUs2(~#=8f57MxOQw3<
zkN2Q0K`x<ml4*rO5b8|QAky!%I)K6~_S3oBg+0UXPCWRZkgWe`y_geBd#>+-H2*W9
zI#LzT;6t}#9M@c`W?N<X8c*Ma1x8F01`S<C!RAY7s9B=rma$oMTk}Hbaa%+ofR*#1
zG{id&VIs`ToRQ^yeARZm<zn&l7Q<)&$~HS8G+Y3uY%QHzm^{prU3wE29UfgCjU!r5
zkB|Ku%lL2%TeR~$8oXcKfM?H?10Uu(5z!71e(-h`x^A(NU`+_V-|KzKdg0#2=oQU~
zX8>`h4EIBUM}0X<-!TTVdf4y*Ptrp#<E<+<XxVqU;n(=SiB2l1PI^$5vqfcj*M2r*
z=N!ZsMxX$U`@)b?8(@mD&B|q%1#@J{x^S)l@0ldFdS2B_9b|lZT545Oo&v7YJ?aB+
zd7~Q{@SktYD<Ssc7P0GC&#i@+0Oz`MvFE_7xcO44>n;UdSz!z9KGPMw)eJ*QS-{+n
zq6TowrfO=HtMlUFOdb1sRM_BBEtw9gRj^lvq7jsD?f?pRoKL|-z%18rECf!42qWHh
z%o6))XI+KTe{dZ(SE23SQIo!F2tehJKE0OquRkG-5LI!>&l2WMpd-yF^#eYI;lXQZ
zC(x9VJ0<v-fc9YAnWo_wCGrvf&a~}P?-r?4c@GtHs(yd*8BNrHq7N=imXH|lnTd>T
zY9EQzOlpY`(WH)9Kd@Q|^yh7j(7Zxl+=#Fikc=cC(y8(l&6mGMkH7C`Q^?j!9PwA(
zj*-%jT_jnw{d?B;qxOQ)pM+rM8S6>(9h3n0gw)cP&5q-gR(`RY9dN8H2>QQkL+fO`
zb?LXdQAGs-;s37%4*D1#U{mv42X7Jk3tuyJk}1rTlx#q~1O_yD{0DIzGj)<7o2tkh
zitw)rdADJ+y>Hf9TJV5=ev^CC@&ZQ1-xbToD2_5vk()Kx=2<TryPQu@-)w=8tKp@t
z>xm2JRdQIrixk%5&f~vX&t2ZP-I)46XQI2uR>I@h8?jh;oW%Mz0W2a?%%+K$378Qn
zY>YW(J~{!YKw4tbeVoWqMW(5a0wcVN9{v|RQeS<FCxe}RO!5s{6VfiUp%0ek{c)DA
zfSS9>Wz+9z6vF`r;4O$KL1mBV3kKtM@(q61CxZb%VaUnHpbr}RQ7ZTr>{DQ39I^ie
z89-^u7eL5*Re<gRfJ2mdfsS}B3(ApxY5QYbq}R^^sk_dUfZ`_{`vFVz`+{9=^Gez(
zx`6jboxr&KP<(T;)M=f^Sm>i>K|y-j3G1(qKjyscdL6NTB|>eC!aHZOvH#eD^pJBP
zF^F!($S{ylq|^4Ts~L95l-_9In1phhTB~7iv=*7^lXf-K0Z;g|Lyek4?8<cl{Z6O$
zlYipa*f~v5_t(gmJKkMnSQF}YHuWZ^@R>8$nq|8;mjBebV;AqbK~J!wNg5PkhU;{-
z=4n_=3<>)y#v~Eh=nYYQq|NrX`zrEgl1LR!huf41PjbBAfr#4D`=4dV*=#&CX&+4D
z52923l4(w&2Q;k9n@hOPqpxhnURMt-0%bJEZzB#GP&J2}mu*`N1kd6v{hNVm<C-Z8
zn}5?;Ydoz)_wBY!LRqrrR%y)iN0bkAu0rjv5tZeny|2az?tjoscL<|Nd5G+6e<9v#
z;B{<9%*GekbvEA5^^U9S^LVZfg?0VlIEVwKH5q=y1;9t|pYdg?M<arJ&sOY6Yz%Zz
zf^$qP$J(ziMLQAiR;a+Z6-f4STqru?yV0x!$55Y$v;+vlL9@}<sBox0;YFSMU$;Ok
z(^I!=d}voLEptCw_s!uiHtH@eUM;Cjsx}aB%78lx6h0FQ<PS?Xl-#gYJj;T2_gVSt
zZ5Efu0E#zFxLI6vT^1VcqOhU)^R~=Zt$na(t5C9)Zs@)lzv>(LJ8(d>%)!{8Z75qt
z>pNfIzM|@DoTvf<jF_4**ZDi1(`Ac5Xg<u8k#b*RfK{djQ{X%b16AtaJ&eAg#qZ1U
zLfyc4=HX4HVOJdk<}b|K_@ET@&OVM8dcT$tz?0uUsu%u@55!cJ8=6n5S|{qEtH?N+
z6Atv*K+^W|9fj7Baho3*^?PuVawk?gF$r=g*098Xqq)BwBR3GN08|HQ4;>-;<T9A8
zUW1?2AAbflb4`MaOps^){isb=TO{&7T0}##UK>;~$nEl|f`frywAUV|#*tvBIpl?5
z1LTSN$~Hv*Q}*9dRx9;qzW<)L-9%PUXKacY6ov6`5;KN&RflUzf^yBcQXRvYX2&}l
zir>B1CF?dde7Q#BYW!hx;C`HhQ!5fN>^fX#cWqk`zu91{)rMfu6E91cwCrkmMOt9?
zc5(?0XVBSn`1o<y&RA4qvLVXSQW^Ot5kQ&)55a0vn8ysT-pq8dZkDHav|n*_)p4PB
z)_Ww`+X9h?BY9N}4@aKd?FFK7{GC38k9rjzWRN90DoLT4I|SzbjC&GIxAXFBOXWJw
z$n0*Z>vpd+q=H_-QojJXbqulfBUJcCoK|I^{i6q`>^2KOog#l3H$UL>TWP8v1elA0
zs*N~W2^4vVkeY0m>ZCoy_F{MV#eG2jZr)lG2O+6@RI;HveruQ2BE$6xR6OOhp!_JN
zmkg4GSrhjtzv*Jr^e{-L?_`|BM{4zdB41I_8to64)aq-1-Si2NM=VGr5^`y@LLpaT
zj+#566X~C)$`JEx^h8l^G(*|71jt#U*yOYSOq%w>b0~h4k@~|0t;H8jbNiDcg3>98
zE12gNEq!4Agfvq=kr{B&@7J?lw?)1c&CdAfR_Q&mUiV~HxC!dRQc`fR`z%?acnejX
z8q9*Hh3f@+4wNl8CW6l#Hk&W?DYJq(Z&;3dw^>W!oHP`L28PZaS~%CN046YyriD<Z
z<DV>Q#WTfIJP`iwWj+U38+cuTf4rbUNOAfHwvx{{g*IY7RFP8eQme}40uLv1wGDsR
zSkyVCMs=J{7|))+yav=U2%%4V@1f-=5y{^qVnLnW1O;^N!g6Qrt4ulGj{W%O82!0a
z8NVmMLWZrCSVv5$*exWw4X|bhuWANPAJ?s>c!}pIJQ3sQmE0IPxLBN+J{@Y9^E;{;
zAx_Nj*421I5E|8~HMVK*nCZ@MFR%o!sa$`JTc~h`Agm>24kv3ZsBm$J;glem*{fKF
zv%Pss6mFu0HZKYeo6j^0^%PhBdGhmv-gV9N`pRicI?i&$Zv!<(0N@T(pfzERKG*Cb
z-0}<!;&Ksh4Fq|>#)P+6jR7F9!`*MQUvNK3Kjph#LM(2mupfU8UNDJ^Q*V*ZZyyae
zQNd=;hzD*F`{3lGBzm_%UNw%|q43hJEo>;GmQ!Z{xjF`lVmwiv{&}=PsX9U)*5A0f
zL#!4G!PZOn?h<97DGdCz-P8Ngp7Q4Ii4y-(im7<G620Gw!6G2PeJ=W*v*Z+hgW>}O
zR|D3?O+EX6aqvbDi{AaeTG0sV7_01CD?UIZ+%!-oD4J0LXjxQ|4ANZ2^keNp|NN5s
z-8H~9`!f()pTE|8>9>OP`m5h=6zA3n<gEw_ei)`7h+yI^pIsVQGF&qGCbz=$Yu0k}
ze~oA7MuvxDIn(To3`^5UxoV65NI6`MObk~_EJ!s|tdv`>6+_d&k|6ZHL$&8^|GVd`
zVKGAhmA4L1OW=*ZVwzZ_>rk>?>9ju^grBEUuQE@F@R~$wzfM_&EK^K82QqDBz`?Ex
zgS4pur54Lo1W4x`+ZJ_~FH3wj3lj?1Z2~hYHaH3i@FX@cA&PjPMjY`(*?bP@JCIeI
zRs<umvsGp4N4Klb3s<WFG5Mx8jIXr%Y;Bfk8oGdt4VpG~AX5u2OSdm4Hjus!wr&Y*
z7K}&p88un6c|g8&p!#*|D#`ncsRN9Re%8!cW1;NH)}B3_8+Z&R*V(PGx*k505#O1J
z%>wCUq^MDu{5Nl#^&mO&x*;uYa)v3Ouv2$2cP|v^`O8wXCm%S^Rq#EvU!ZB6N@yE~
zRSZC!Hvq2obH);HcH_gTKw?F2pQP?y(8Zp~dCxDHr7Azotmk`GS+cwCvK0Q~CKY$6
z;rhFLA{{?ZBrPl@A1W^)-Jzfz`ibh<9HrQGgStzvENY6tf|zj33s?87xC)6^(BQO<
zH!K}MDNR?f4gKrqOc6-=0j!-^m#YWNCM4i(Wl)I+51i6zY=0*CXJ!am4oi>YCuE-;
z9D4D(V%K%A@0}y{c5NUof}^ssG)$ZiMgr)IM69810QK;R{>gDQ-afu%XMzdLG1x*t
z2_)6n?dsQ4*<6;daHQ{}W4go1eta&qE)<db2+IYhEv~JN0!vK?&4s<@kWFVI!yaF}
z#%$toT2Z<`8wpz`N@M7IKoS$g>j%v)-l-L|)X?YuBTgs&y%!~aM{vovN%+6T>7Ox(
z1l(y1K$V)E!n`7y-<A4O6|FtV1g4KLUf-A@lem5o5wd7~?&t){yIaem)`hmq`s<y_
zJGkF%AVt0e3gD06n8y{Biz%!4UP^YhOZGiq$#b^%+x_x0A;?i(wh#&@+sVjS3v?6#
zC;KmB8BqjaxD`B&x$1<ql%f1!XE=#y{Sik7V52OBZrBuyu`OT85=y^iQe?6jCZ_FX
z;@=VB1dZqfz}|DUP2hw<w?k3tA^lMElOGtOvU}tBsv9i4`ulvrRtCaNd$OE5`=(qj
zE-zkZ-z^wc_Mfm~+$D=C!QTh^<yDVK@m%$%HU&@Lb*Eo-RxZ=5&@FgtX3c`AzBcWn
z30t+K0K2gBi`FS*;XBQS=eOBlcb`tVs*7f^$&LDhJ5#Tj24!JM7%O}WC!JxUsT0kf
z(r{iLjJiT&tzno@D`Hj8{WOPgdRY&@HZ}M;xc-kmWxFV&Bh$=~b5Y!4_m22|hW<V3
z=UCz|Mw_yLBQF-8>W2HvwkVyg+3M(Ec%FVD*_vg-&Rg&r#}2bkvv``ns{Ch-yPfK+
z{EQt;k|l0?KaUmVPa?jY^%dGV*7>bVj&Tr&sZD<KpZ#`{V4^$5l`1(LP$7c}23kVF
zB}~@Q0w~x?20Wn)K<{B*QP5e7yM<n7b|aJsDpv+k&u<1Cu{Efs9nnodrwJg|O7m~A
zmGW_j#=D505YoU(JLVFw&-gwG%D~9nz%<@gW*5l7bi^|0T~9H1+Xsa>1I{ngopgz8
zVx8mt7><*ms>~3U(Ox4)i4{VBuKu{)vIh9QV{!iPm61SeAz|Zp@RcV_{T2kM{&&3D
zFVB9zKs7L3fBw|><-#Ea<p;>J$zm|25#O3%Pj(jCNG~G;fPz7cexRgbyA6Wj9`@@y
zrU`p<kDdI-huJP(0KJbF=-klwaJnPahX@VABXqjbSff%+5vAVx0CaS0Vv8G*-t<2;
zv>s)KqP-NN(-`iaH|fNHq~&MqgLrpK){P3s<t;mQ1lz9y*PU4N+Py_Oi|xC%Sd$_=
zpCdWo#+FkLf6D=TH2pRVUyd+sNA+b2Ud3u7be;0;d%MzemFO^sH3BEpdhLd2+)>~m
zrybzP94<k)EEt8{E2o=W=)j7C^nqpYL8NPhDe1xy-k`XFqxA-WQ;DZVnY^oMzgY?)
z;C}vnu=|K@*JP`^qv`UG29<&o^i*Q5I!bYs39*0Q)HN4OHc^M9Wj$KUuwu1OH96Xy
z=-ZNcozW-{xxB^l<vW`vUIq%mwKzYeprzRUKS26UWg*@szu_{;DBJCv*((TSfOan~
z{Q64XU<WrW@Nxi<NM2!;vRQn|;n|~bF|~mT4FzxFG0v2>!0wN0LG}53_T^e@=?vGu
zDIuwo*@?l{-i|LOeWHUma&Bj%*aUXJ)F7sWC9!tTi?E0mEIWIpvVNar|8xawah8?g
zxqlueSS25&UmQU%yNs`={2O#Ec3>=yO)6eE5m|0JOY|Q=A~J~B>luo?qmSuU`)3an
z0g{=qSlzt_Ofp3~2LQMLexPuHcY1x&7F4fuqG&gUIRe$@ZuCna(90{Uijcb3SSp`Y
zS~=B~Jsi&heM6KFhE}WJWH0ELE!!}_$Kup5VPLckzx>KdcaukpilN@+KIMdV<_m7^
zlwNW|V$@k>FD*LI7Aa}(v-au(I|^hushBy?!c<|`Gc-qBppfSZH7h^cOo^z*Y40>;
zJhu3ccs#3^2J`3tIR5xQ?IXN|uBGB{qDH}g5jFm^o%x@HS~-pkNQ$48`6g-rzZ$d}
z+KX|j<eIA3*ZwGlSL{WJ!LTc8LurQ|^mRzH*h+FVu<%lMN#+dD_C^Q@5te(HqaxMC
znm_Lex;zPP?@p`=0<HmITtf6>py$Lsm5?h?isWbtiRw?Nd5YVoNblxrDM5qDb9c5}
zCo(R??a&s<I#vn*GJK;%-k5~0k35#Xxz{GOvQLIz6msh@<2f?hjmgDnp>zqh+}1@D
z(Z;0z!XmxG!qZO;iGFWCVlOUc3*!U@tGZZTq;=Ni$l)0#FntwH`}tb1{G(?3#ohn}
zE2H0S+-gS=6i<Z0m$b7<jK)<##Wc3+4!?*SOYuzO+#5Rwh-qURM%3!%zzJBkvU_m8
z1+9Ixw#oA1r)R(CZ%EKg^Lg8MqL?ef-S|6leGot$4%6~n>yHvByf~%PlGw@-1S@8l
z-c`JR{rmsgIt!>cmaT2$PH=Y#?i$=(gS$f@5FofuaMuBXyL)hV4ek~kf&`Z!f$$BS
zoZQR(|6Xg>%yd6{S66q{bWhjbZ`muMWu(Ffd{RQA|1x&C+SRht*<)k7N%_!CIFKI;
zPG$fmc!DI?#I$8zLGPAe-M2G5*2EhmPEzAx`sRVa01r>{lwYSOwe|4BF<{`RD;c8W
zg!Lp?%Z#z6-R0-`;eVwHKb=q<hN`@1(2rCyD4q!PRN&7ErOC$uFj#AcVZNOSQ(wwA
zr`_a!ZxR_A`w1S#|1rpgL9V`K^w{L`trx_jEP0IOCghEBKVJ=2_6LajCdZR>(3I7l
z7T>QkNjku0PHk{;l&6N`oz0Ag?3w(-qUgSJF7R?_O)*HT4jaAAXv^KG2=YXdA+E)B
zpy#`%XwW~dJG`Q?2ei(a29b4O@U%;fRd4Z3ss=5pJU0E7clRe#zfSctcIrFpJ+SqZ
zgR;9#q&K7P=vqN0e#3T5r8-%U!G>#HVyqX`t(igX*F4;#JW<iM3Cq}mby`4w81!So
zxnt$Kfoi>5kH0ch-<BIb=`#8xBK2Y8{RN$!YG!!;d6o!!EP&(}{xN&2;B-tOu$Yz%
zJrg^xSf*xBnIAFAIDi|U94WjmAKGtTZkNz|J^rq_gMgz~PKqw$q?Co345r@*f6!Pj
z1r|oq82#eCdXE@nw6Hmqr<~B5^S1&xB!;a}-_j%tBXvkkmU7=!`76B{yphMN`Fa;|
z3X>!reRhw**8tjv#o?&$uPBJcH~6TRERt~Tn|7`*d)*5uTB#<9oU)i_)04Mp()y91
z?`*a2O5j!Ew<(#a)eAVw9k#N9WhSX4WOSs;#VE_0yz|Pw3NB>$Dbi>m7*R;GLiR+2
zRWqE&GxxH{Z?a|aF9y*nammIgHB5fE5b5izz9K5ty90oU8L~WJEPW?qV<Rl!&)osL
z)0BT$#^w2Pb`&xlQ`Xmyi9%7aywkO<y7#lzD#6q02bd)D8vs&TR96AvPY;|{$*sxt
ziL$1zWayp(_6l9)H-oV-_{HefSsOu9!XE66p?S$7XbpEsllE;RwHPA^B~B0x3F&?D
z&2dmG$LN$yA_JU@^CS2Fl{Na*U>{w+Vt9cXtO}^X{^yoX%aRa)>&?DWU4>l)ji7-T
z0>>zk2q7yCAIrgNH5DR*9J(6hq7uZ=V&*D$uerWG>fh$(D~_?XDD?Gav_40rw!dfW
z+H}=xEtQ-7*VXdCI9QmQjWHY|HiJNt7DsG@QC3#4IY#s)$08O+eW-en?}wcd`(U!f
z;S+XT^GY&2$<nWYgmK*g*eL+*E5fgNB?kI$esyc|9#ci0Dnldfw*i&iZ5b~UmKi(;
zsJn5pciAcFD(D}oDg1=dZA%Ys6<YSggD8%gb8Whb5gW2o+faQ-A8u3W6L3d7FyBu1
z>0L>uAuOZWP9KxXwIzE6&bhs<%duF4Y)mnrK=T6)MZgaL3?AX;Dma(;-o#y1&7=-#
z%41U4uZ@C2xJ-TrnPooWaP%lEaO$JgU$!?q_7-5#4g98^b2%|^Es9sa(DBh1RJ~iD
z5;)Sh%z;A3RWw5WLB)j&%0Sh^_AP7lb%MkyQC;+ew74U68c2qsim{M3*d499&BXcM
zU_$f-x8F_$5N=%YC^M07pSO&JlKW1S+q!-Yzif)Hrqe#$ARoLUFyAtOJe7fhz_1zW
zQTWvWO(Z1m5KuZUa}Ug(V9P8yv9RSvz$6~l1ra9%&(0YC#HiOL5fGVyyU4DE(a*El
znl3PZjJGNI3nN1F5d91y8+J)EvT&apJfj<qL@Y5HVCt(xIzat)TUBc}Ib=ez(CTx{
zPbyZd*l&GA=Wk+lrC?k`4X`g7r7~i_z2018I#WmqjU_Um^YU$yUxS8O1}r|<7iy~v
zu&<Eonz?K8y3{!BzgiEoBCKgtx?mlVxPk3eTn@&iNX@=Sb&!tbF5egu;VmajjJbXF
zeBXx+_7o!i)I_UTN#`L!O|%gd6VCSho66Ko4ESVAcOWhfW12h0?LR4=6AHhWX!NtH
z0g<Cju8FfDee!V#$B^T!OQ;j{2g7!lihxoY`15|xwf!R9ad{2k^BbZnx;~Plgo~}n
z;;dH^S&7j`*AkVDSzuqH60TVCBFV_bKUPlb#C=NOO(v4wl?am8SiDD<^38y#J8uTn
zC}3{}5x$8cTU7Ik0_`K)qk*iZvo~50Q-{qp1gA^CY=qZ5-d)BtG8G1yRI`|hW-9Fo
zDgwrt`MN`1PET|!j&!$Vt}B%w`~Z%_;U&e+(8oe|(Ls+5Xv)_!TBT_{Xmb!eJr>zA
zG*rK_R;UqE7%W@7(s*p=Vi31QNSS-vwE-OCUp*1Fk+#bTwHL^2xDzi9L395SWM-nh
zfAptXcv#m%UUAJ3yc*?^*Hr=r2QqZMZ+(^Od6XEaLEJ*4vp{iJ!A21M(~d9LpWPJ~
zEu*sCMb!D$UNhyjR2RFvI0yf%p`AINzxIY9J*2lb%O!$vV^?fX;zEI|Pv=d46gVI?
z6E8iF&Eaqt18mv3)9f`(zxeBVc$wf*B!v~a{Pv!Ek4Ovpf<<{!c!k52?hmLKw(GX?
zUMS{c7{`Vs)_tsN^9i%>;@^sDPsF1X1~M<;Pk;FyHq7oZ_1R-;p*y#+41J4ai)xuo
z<-Q<_bNYK2?{SrP)<)prpMWs5e_IC*j1%_?sC8HaPhI5zZ&3wY&nfXpp+as%#pBK3
z0>A`OdqrjCN@;2l%)5@`<ohOvkT{cRI@UWHW9W$0neM?JyCN$C3Ak;Yj28ux5zs^f
z8||mP?bZYfe`T~Mw?01nB>Kc}JAf*|74#~?b>h9BLewZF$+l@yw-b~mMI#kzN#oQk
zMI#w1fHFM{a9rjfEbMKh-CSe#RTk8e<QbL~X*C_pCTAR>rw17qcdBc{hJ*6w?J1B?
zd3--P$wCb6ygLsZNuHwH(a;~Ll6AslCNzQ$LSgsh?}PF23)n>-w#R|GynNd~2X(}m
zsf_{0v?%euB2`tRWCwZ0oq=0E-OdaruZfDt|JsKIuqVhVo##tE=Q!+RCGgD&dHGIm
z45QYbFsWiqeQM=bb@g6+iTR3y%!-pmdUw49UQ|ntT~j#2wHfd9ahgfJv#@7jX!8el
zN%QpRL0Zr=klWBvgw{KhY3ua#YpOCEh3cW2WD|Bq76)_|ee2l@Ug(F6t{Nqxq2zVG
zl069$Kx!&obFA{De_j}Fvl@~qiysfxMI#n?+x{ZJ2OmO}@r#16fP%@Qi+F+I2kUGo
z$!Th$e&tdr(h1t|z82jIiupY4d~ZNa!&1P3v<%XuW|e<?JUFF0X|3#e2)~jlIZ06W
z7NmN%ezJ?m`9sP=a8BeAd6u~=+DyMI+EM`|0GhU%HUR7ljqD7b^$c%i6Y;KBGcAX`
zT=Elm8h9%f4(4i@9NlVID!lR~!`N+p%{Gr5e0#+_yra0+h1={>@i@IbvA-bOE``_<
zakt$o-wy6iV$P?~Dg`hZuPX^*e{cAz)&<-}iZ<@8NS|K(w8EwdmZPjCQn7~h6%Zc`
z1iZpE9U=E2XY%2!jW7B#CGNqx=~xc*%VW-2(sJ=4G5MveNy2|G&seysj``U;J-2c5
z2Vq}PA$#T2AZn%Pg>gNrQyfWwbXw93>7)MGI)}4+=n(q7jfK4c?yvv3)pU$CWQ74u
zYJmcpj+6=%4r%A`jv2_~i48=pg#j>`+88@JrfVaDW+<&Qpuc#-P7Mne3+B&Hjxxme
z37xbR35`=00w1bJ>`ihSB_uGJg`G_Ni$=ai`8b_Mm7r|7Ww?eKx(Vj;olT|2vd7WZ
zlIxGQw)*SUpY>OBI!%wfyCY^64lJfZf@7;S*GoU@=I^eT_||UsKsm)6nTCL?X{I~F
z+k0(6K<v07mdBdXqZB}ONQ|Ti_qIir@iJTVQCTM8Cq)7WZ!sIIY03qr3+>_9I}}fK
z{P8eZ=tI?oN)@!y+q7{V!RU=I=XizozOvlsZX`G*9Dz!zZho@UO@jj%JJ*!A^4MXY
zWHm1^NivxzRCm}FBny7I!PEk_O-M4cPvsNn_QYcO<u(@S)Te_5GyD_B<Hz;1-;!sl
z7%NkG4ezLe3zR!2-0Jnso=;+C6izv0RGva4Xq;;!WR{<bCTM(&lyz>E4#B2x70<s|
zhptfHhe*~QlfyD7n3CwW=h6J-7U*W4Ka#e!#T#2KD|khhIb53Wn$Zo|-JOPM?;Joz
zFr--t7vIJw;SO6>5Hz6gn5XsnBD)-T_PQ*4U~~b2)tYZy-K{N}8LNe>Xl9Hc-!(Z}
zx0f$fZFNLfZT0KtUv8<Eeh&*3)nny?ufCe4cEbSYP(yLQ+*J`r6MQTPwQj-4w#?%}
zLzLh>$kku*kXI5nMQC6Lj26vrNs3Y0if?9%TQ<Zh^r{(^D;mysaokP~j!D;Yn<!LF
zn|`F2OPjz5>Q0Ywo230ND!)Y(<jR7@8MOH^q~79(3DI{<n__DvTvlt2ic`e``0s=6
z*;@RQ-=-1TnlGgZaLd@1a#<;?^)~Fkf;+c)j10ys_r+(jqWX3^0qj`Q>s?mvg6b5O
zQx5Po?Q}I8d>#(uQj#F7UG`e84l=}P^oZDbBLrrDTtd}`F_`1y)Wz%1e%@wfifn#+
z0u$N6GlMpXA;7BD$m{5me8pZS#aqG%BR4N@N;FHv+Qw+32HTVUez~4AJH(i_#R=Li
zYQAT~($3T}deWi=5m4L;kDauI_bV{Dn=6;k0?OHunH2hKPjKR)a_th~5-y@KZkbXl
zV>TxH=L~|dALYi7#MexS5~874@)dDY$nwW`mZ@a@qU8k{6&e)v25@BW6*!85x%a-r
z+}FddgpQ%kB;B&sYx7ZT%BgrP(uKDA9g0vXH82?Ks8ze?;Q-`nB$Dr!r=a}AeC%(i
zq4=tdRWwiF@rOP|urV^p<i7tzWnyf*$)RfO*^x9xJWEg`Wrot|7AXyiz*=7UG!aI%
zrOAJi)lQjhf;Kv^RK&QPj~EQESU_6eT$A9sz)KCO?wFlEte%_t*=nJ8WN`n7qGU91
zfCyb`%0ywTmIrXO5V64k`E_9uy)qnW_uF9{T11+k4kuo@1VY0uewCt4KWt6c`WEmj
zOoSR79A<<O+IVl71%)s4JM$=pVdR7vTah@qEf3gw#+Y^-=arQZU3$%!F&z#_S88$7
z50VVY_;W=?&=c>u(=!QarB$sJXqZx(UGTj@N$wtvu%Z9~NlG-}T4{Mb4Tjyj)Sha(
zC16a9;|!{M;B@{l6sXtkz77^)=MuA`*@f>Ru+-PTBQDThBz8htSk#6|_p>Pm;wc6P
zZyf~YlJG|T_{Nt*CcaP|S9^6eX}<uM!gq|>`wDd%{AQS{aBF&Lj>w4I(n7IcRX3Iq
zQWuR|Wd{)2P*>Qd|I_RoPNZ}M4{e@FLgag~z=*weGH(6UB6;%2WRX%@PqCWXmC;1V
zz&qwN?r1B;p*<_ZFjE1$@z#xmaPuAQrZU2}VU*eoXxO(uqi+l7<Q(3;$uT=+gltnM
zE*hQ8&_Yc}CcW-OV<-vmm2{oP;aE~~wQ?d@sh9+$JK;>nQ=ZfbgdS%=dA;A$PlO9>
z;q(B4wtq6cnead7ffFX=I)xBeg{Sx!#kWU;_|b=&<9K5QpD0HvDNKqFOtMM}pZ;6v
z8Sybjkmlg7Y(dIf6yAaN>KZ5NH*}FgeVX+5R*{t()|~B8*WkO=rgB^3r&l5VUu7eO
zhPeSO>QQtYZHd_0+?%*XW#7DR&&zl4*Lvrz?|Is_w{&kbBJH-8!7X3YZ{>6KotLmh
zo~(}}PNw6p_5A{0`rax(%&<a{nrIiTZd*<#rc=;mRUM>96fR+kzs4x5gr8iOZJ$cX
z(Nn>EDu7S2?vKAlA9X{%R&nO-)zOb~>Jtedp_KOuMWMYnk0e32T?B>1Epz-v5K2P|
zk-ty8apy7hpC3SiBpBfk8mP9piKAQ<V91o>@QLq8shx(o8dS_>#7YZyFw5}foW8O4
zqU?!p){;K~QiyE~pyFcn;Xe?x<(_Rtw30@4j44@q#YfZJ=SkXKsNxHy_mMfrSb72E
z{l)~S1*zlEJhA1izm5OmAYR{!VITNbB+{$W+NgzXc^_f6DgI7a!%ccGQzAW1BMID|
z?~<itA%iJxz8HZ3`m?$B**BiEroL>qFT^l#wO3dT*{?!yKd9&QId1M_;0rOsztydj
zBA*ohvO1?hsGwVF`hk)Mz1DIQULcVMaE$z#H+)xPtbA$@yIFn1&hlR2cVaiQw2Izv
zEss=G-=uV7<r~~c%1dRaFc;SYv?L5f=y3n^g<8@ahA31lZHt-@wzC8MWp$4T9Ytqy
zIfFBCjP%#G`|Z_CNbQ;*6tCzSJ}}bH-kAG9D-v<0DPLu>(@hqgK*&j&e=MQ)1L%pa
z-h%sDby0Va?)dc=x_N0O5#&U<g%5J(*BDYJ(FqPA)8Y({dyUcvakhya<dg7tp9M^E
zZU%Pp#(sXK`BVE{o%W&<?nm!6v(>elPl#BVn$d_}GHA8#W>#9f)l(!uaD5}Ax%+jF
zro2nFS<`jQy3#$4p<BA><aC}HQ9$k*iBt#JICnl))C|Pygqtzh_E0>~ld3H_AR@b@
z?{K<D>(By_#qhl{Z!^XBX!zIpidU{8pI7JUG=FN5yJs`deJrx!9_s0-AQm7TCzrOx
zfy0+{JIcHc^)uyNpiTV|eO=ps6v9MjWnb1mAPv$osT%4E0DS*?bOXjdhYg@o<RUTo
zzH<r_b2XP8K>neh*d58fCl6+E3+COl8b;2DnYqqREoY{hOS`v4A9GxIjVAX=n=p>l
zY9Y-+-ghN&)%k05so4P+TzE{uo`X`2NlY%N(N<%Msn|V^9?VyR(UK`SvD+}%N%1o5
z8sR<_uV}}{oWcYOI~5@jYf1o)8~jo%&b>JTD+FTX4J<_X+p}Vuw#R$Pc2btu)s*A1
zj$??%&Ksu#ohVZhfg;5X{%3eRwryPzqvFED*}M2>Mhx*@{XY^lBl=zm4o%9frb}k-
zXME`aMmD<*P=JSepCzNvQAMI`a%+t<7&w)mej%0(B7vV0Gs4tT0>}fB58@Yly1rYX
zT=!<rLQ&gol8&;v98vqd&Xk@X$#M~wvT1s+@%bZt?bN|zgb;3?J)?!edNAH>u89py
zJAQ0d>;{Fkdv2X&G30JPWyeRWZ`;u#o$*{0#9??Jic6D7g;A*DNxNrTvjFl_eD_WM
zV_Et$qT&WA<bCWO?hd{H>H@xz-@9iduI@D*Yc_~GB}!^6+7;n90<UTto3=ceeHf{^
zJ#ZNb$d!hH+eD=1pS+|LU<`XTCFE-3`looDNIX&`6tAZtEdyu$xk}5oS*;2akYh*=
zXA;4`3Q00K)g?MygGKU4@{cs4#)WEZv_KsmSka|hBP3a}eu0(-oY>x>i|dI6?+qu_
z)Q+(i-<$6YSlI|gdXo3eSsyfTMJ5RKeN_SpyRkg7+?o6|z84aYj*&}hwhj7yYqUk2
z<CjQ=zozn&qY0)s#_E$IK^A<ZnA(hrMi(T<mtwCNs*QuKSB<b%Y-yd9GR&Qq$SEp6
zijmyz_AeptwK`Sb0O~Reh_d|1QdY_3-f<9p|HY#BP3awB7Ht-in=pS(rp2rW<f=~!
zvR@l%k}0|xG(Yt4ul*7HN(pVKuqM$`sCY1+riN5&xvD)c20BihbmOUJ0WR7F82(kv
zl?dwMLsBf?X2Ka*T0jV0m1@GcDSXKLHWQalK52FLg>RwV!vJeJj=J0io7K87nc{``
zd9_z>IdMnn)7F#_1KdP}(qA8y=@@p-E4?Gh>i)!R#iW*<YUXAPEbKSj#`!!;nA2B<
z(9v7bRQH}rZq}l>K#R#{X?M4W+K^wKK3mS9x%ub4aSD5ifoNWeZhg`IsniACFRPD%
zy};p!Lh53OwNU^^a{UBDuN#rRBF+?-j?%KsKu7wFtT$#}X>p`26{O636z-3#!eU^%
z44DVeWr8p3jwf*6`ydC1xxtFLBQrBPy{&YLxuqg|N`A0mu{4@m{Ml8R#C00W3rl~9
zd(yxssbZ7j#yg^7<J~^5Px8+*0w>50DeiNUeeB=tEBydKA>R!}GdnYi4AU1tK))C>
zvw*B&pR3SlR;BR>;!1zADFVlInf9K^By9{AkT`chX6KE=?;lzl!5Zb?%TOF1Tq@%Y
z@~MRjg<-ABQ4$|QqfAERobQqDf4(_~UyL6Syd=&kjQI$>y*?dd-Tuz-`}Gw?i=GpI
zC<E23kz^D=r}HP$o!DhrBqt&(xqC%?Q*>;L&6@|t#%9<Yl)SElIKR?|F@|%=szwxs
zV^^b($O2N-HrOY^j?hQgBH`dVQ(CKP?m7KOC1;rKVc&vdLL@Sv>sG_eBxk>O)#kg`
ze$0e@`>Q5QM5lj7%}NALp`;egtZ7|VLa6+W*ZE2{U_&|$o&@85(_g6ovhI6!x$iD>
z|CnvB;)m|B(Drv?7yF+yt(lqnA9uUdI$h)t;2TJ}py9nkw(KSmtKKw0&JBhaI2z=9
zW|Y%+?1EkxtVEgons^S*3u~kW8>2T1Azw<8<(NvRYRMyAYP^Y>4*NOH@J9tlc^NeM
zqDwoK0AN|UvhO>D@iZ70RRtM<S)Q#4PJWJ52`fBYXuYAyCME;9u|!xj@|Q>o-YE}R
zKPji*qHzi<zku`h<xntWdw0QBEw)NlH?Q$8ww=^glsFYPR+w+#0AZp$IXzJ!6avPo
zH3qJ57lTDJ)t3FKnmW}mem^eG0W0rF*kvX;CIC@W9$%fAzngIkSIV%$MxiFA!FQi1
z9Ub{biJhfyN~y*ZabbA^x<;~Sq&C(YJBe>Ikj}9iMkjUL&MgAw>vM}Injyf&q$Pyn
zSU)M#1iB!`IQ)ol;ANxo%Q}%*Sc_El0Mkhq4!MUCIah@mY`H{u0JlE{_f8eenb*pn
z2M5@%?Lc_=j~8&?65bKdPhU6r`*gNlVy}VjQsgcvd=h*{Dt*HP4$EnnkNa;Q!-P>N
z1rdChN$Wh`4tu4x`)7H5wwUfPnnTf^-s1$?5^?Y&d}xiyO|Hrp{<;I2%8blvsFJ#e
zsEvEy6V6<yLwc={gtQUzo}&#Kk4dNVdJ52y<L4l@wY&F$GHyT~MutKTNK(LYi<UJW
zcWN4;&2J!ob^{+LpFnNYBI{02j&l?!R!fwc$K9+M-yyo%9X=nAtYYnPE9`i9o;}BY
zM0!ha&j!n_F&H~TC4dvN9=yP6iVK?dlV}4#@_@t!0DpWy|MW;esL=t<(u!zwg95;`
z=@9e2%B)RUl>--p4$H|jiIlqR&b~y%c*WFvFfh7pDAAE)C}xLM3h>XRL{3q-Tg#~f
zyVV!oczfrHNLn=<X7wZVygv+sUXSyb{JK_bM)&Quf$|U5vvJdTcwe&jcC?38J&V&`
zX}qvB0S96#E>aFY?|$9`F|h$oSE_*RECr0wg2i2!veh@@!@7A4gjvV^2pF<cZ(Tgh
z=~!0^435Lh1Rq;XZcvM|S#N#^QcW0wx1LO!+!1(Pfa^<=Y<_x#J?i^bXaBW)#3{h{
z$6?O9#q{$FD8fgnQHoQzH!?N|V42e3r|<-y?D}kFkan?ds!Tg-P!iwQZhkxir2UfC
z_@E1Pp>wZlGYaWDnLHuFZmC8z-R%R|$ESTx-G0n@bkQ2&k(O+IP&%Nho=77@z&t)E
z#08u8PWo0+SX9R1lZLMJ_NK`F6H4X;r<!p1#IIc1J*C=ZsOpb16na_n(2aCgn<=%h
zA4rzeEh~jRUoW+-f5ci+GTxcBloC49KpSh>(}_@$@+4aFwiNQeC9j>&ePCE3_~!0J
zv6L$O$WzPhZwu+U*JAMa--5?aPuxLr)$c!mg3#T8;Qq{j9{|jESUwia$)m@paUZ0m
zb@md`s~2rTAn2MnIF(UF(dlSIvvr87do1j$YevQ-r*w2n>-y$&>u?Sp@FmptlsX5;
zhq)haSL}Y@Z$6R<f}+mNsQGBmhFf<99LFv)E?Rff79R!xk2mkYNP0bGoVsJa#EU~o
zvY*oou>eB=EveORdU3|DClBA#(JmAfR7H%34w&Q7vt=mcU`e7cpXniFN~!l>(0YM0
zQ=aBTFjMXSR6#$wiHl&So<yeb{oHq#0A+yoqqKW7?DYOULS;5xeI??j%Ap$%h&AaP
z*fseLT{p1>FJ1n23SzrKH`Q*J8k-*$#SUiX{q>hBfY_9w@PleztvY8@ds)V4Y0Hes
z@Yk~yIw=9FT@AU%bINjkA~;57Q?+6K5^{{VOY45wD1ya0SmpLJdO9j{fii7*=`M<d
zcoYtDi&JzuLoVtG>l^GT3P36Ulo&`NQaN3=&vkw%GdcS8jLzTaG(LwYNmvt&<r$z&
zcybqU0lIAQXXTm&sIu90-`P*iF<iA~M_!J~h7fTgri5hdD`<Wmvz}AkOb@usYs$i}
zDaj9SE3|Rp*+uKl+K`8rUECN^kQ8+(jc3!CzF4f8q#oh5U_MAdU54>m`f3rm^pgdf
z(g{jcpLTvqfY3z9<M9;giozI_=&JcmwwudZ0<e;Cg!uYSWwy5NOvSi+26}P>hw%HN
z+F6XbW)a+RsY}y)xxM%HZ&YR@{Vd?|ufBd<DVdPvrMBf_Xq%uTT&ezG**Y5jK3_wL
zuR0RjJEFk(?bZ9^h-C%J5ZkT%gp_xh^%dq(DM8tcZ@dssj)Jt)W)eAjPP(G(P2rm+
za8d!3f~Y<gZU?(usOrPEKZs^DW)4jWEToz>1g@q{4gDQ}Q1!)ue*SMt@zp<I+-X;w
znO}ReA6W+oVVHP6o<9mrsekLz=Bq3;o(srgpWBYmuEVa~YPLL$g1LDhw}cKp!-m(V
z-Ve~x-j)*U0{h9`x^Ay|qacvAj`~X4%?Om#(r8{x?`H%}(j9ExTE0%CmvC0$ce3e;
z&>l@9J@}2;c6DJ+>+Px7y>x%{A}T@C=Q9jwp}uiS!pr^*`+~x_aVR0K3Z@$g^k%U2
z{R<rJK?Ew+{Po=%Xd&iQd1UxlFUc-CpP}r@QX_~$%!sXN1fM`_HlK1MY)6EOEp9@<
zjx)Pox{6w)j@kedvn4SK-%1i&n?S;<{7@}B^btf2^C1qmM$DNmbVm;-G`GECmx7)(
zWrHsd{A5{CxYJg|CgEJ5W$H*C#RLbnz=QNCYt~NH_GL0v!z*50J`D%1F5_c#nGj08
z`AmTizW(1b(U&2@Iy2OV#M1V?-z>ucR*T>xv-bV07>j#x5v-OA*GSABhI0~!b&9J5
zZ~XjiE|la<x)>Hqn5x&%;`~Xg1Z?8i&T_I$4U<&0QW(3wNC6ZX(A=_FY;iHaO$|`o
zzg`+5`O2CnF(B4W>Wb#|$&;(OLul|J8~N$OBb<sJifPC>3#l_1LUIay6CWVP!4)mJ
z!+(#lm!_YVYsIgXiHe3xRen{p1b`eCP<)SHFVh&Nim5|+kF{KQl9Ryoq34V5vUKGJ
zIDF4pMdQ2AXmO?sg5TnQ37F_B=zrln3^B32TJ6v{X>$d3iL-X^g41}pu<sDv3#^G0
z1BE(V*>+$T8&Hg4T5eE`xD5c^J#Kh-t+H{F`yWFd@oZ|>StGJTHDFKQ2+GF8=R|G6
zO(ru%ZNhiPMs2*=zr{5VEG^~Pz;KB}FNDg>LwpxXV{<o6qyU;x)Qe+)aGP&|hn)n&
z<SW{is65;m%3kwEXGnnFJTbNOb&(HqL<p|_apd}%UTR}TQ@HK<&AJ-EW@N|X4ONnZ
z7C$9rbl**dYwSoNNpqyW<L#yGyZx~Fqa4%H>)#n2k->I1GsmtaSt#(^F=m+B8k!l-
z&M`75!1a%FGw|r#BBPk_<&!CW#PYzo#*p#CQzS(`Oe)JqO2M%k;H9A0L9TNxLTRCw
z&bZ2E(Uqluj6#65Zp9;ji_Otb_4~bafPbT;!4xYh_gy1~V(^c3*vbB^0XXUnj1$OI
zxZrfs!{T3^V_RviVw#QpPync9)p^L3I%3Pru`fSK+QQrp?+)4?#VddHy1to7H)kA=
z`^t0p+J@P;ZxV0GiJkPL(M(f@4yv~sekRgP(S+Am>I*#C`w(|+faU@yAIXwAsFAxn
zMyK!`&;z=#B`ckT^CT=Yhh4n#c#JcwoTvqA`i|zlZSS1GewgqBZz`*;!jf>5paH;?
z42);>;Gp6lfBAAB*?b=D`N<Z0_f~Ix!xme~&9x8?)gm_1==gh(HGNG4^Q?aACTtOl
zFY9guB8^AL>ysrH0IXXwc3+|^l{!f@u2ytIpNx)t99`jPwWH#g#Oe6rkv!f|Y_Cn|
zMDuL6_zjcj^_Wi|pJ!1A7sf-$(40E57@n3Glc;lek%sLZg$dhlM*-)CfQ+3}&!`Rl
z@%`TrySL%L1&%gDyhiA=$%H1zsQEuK;}GSI|NfIT{4ACBbXBg2EQ5gjN4sbuY~qiK
z5nbarIQr98l*b-TOwce8XhaB%1PrJ+Nk;is9&YEqMd839Fd;#z%AmpZCy`~KT_-#8
z(}&){k}GA9Ehy!-lM~Pdl4b*a0Rs)JJ};o5_dg3N*pWyn==0NXld{}@oc*r_;=cx9
zPZr~UEdEiidtvxg_!IkYQJ};(us_C6mUmCe&kX-v(vyMV1|!C2&`v49gT&6Ctp6-|
zzKq~N@NO(1e;*a;6WAsR?w<|XI0bq=$>;sM<oTk&fIwp4SQo}K$fIK@PYBuvH;`BH
ze<{#=p6}TcsPYU+*qfM<!hwOQqkw^ty@2fCK@brTasd4q<TzGK0ZH(Ijf0Lf`wMUk
z?Ro#+z>xyAdy$^uEvFg`eNfSFK}El;%nZ&mywLqmWl*`cgIYlzRX~c^pi#fSOP;S6
z{xf*gNAc`&_fX5R1hjb>^dkR@Jyqt@>t`^eo8TD~H%!fm0Y!5sfTnzU3BIR#29JAT
zf%5&B&#-=IXw(C!eKpd8fswxO%FFl%#)En~=s?0=T&O%>XW{3y3ca|`<}aoXdtnYI
z_6+_rn;7LY{9-Pu7chpz9~c8z{^tPxXMPSaFqRjvi2O5r(nI^~^@T?M3lR0~GpP6q
zA6U`z&uMv~KmGznRQm%z$&ure{{Lhe|K;<1X$*m9hOdD-14yJVbr`|GK&SEVlII(2
z2n-saf_hd(tQx?DIuhYB0*(w2J$HHF5ok@GuelMBc?=IYZj2A)A4DR3>iGYWO9TVs
z`|IxMT%VeNV3}uVj{^Bz3KVE62Wn=lFChPSKoK)SVC4|SKjnywKb3=L^}M#K8s%>}
ze`V5;{~2%o*GrzS`}=2D$rB0K-2cx`z0m3Tmju1%`HI_vV7eC_`l%LwMRPzM`eiMc
zK7tG=fH9-cK;%iX=i0oG0eRuQ+vyKXO!DOQuhIhO2ZjFySPSg>N(r1Fr+#+$pEPbT
zFv%C(wdb?L!4cMH@I`v=3lQi7{9+>nY#aXP0Q@J}=YLC140`scY)$~Y|8ojo<W;=z
znj8wuuKbVJzcKKjF3bG_42uAPw7`2ORN&FbKfCZExcCJOjDCj8hKZgl^&)8X1sEOs
z4ASHy{XZw{Md08IBfI!#BP~npzq|4xgzE(?`T6;1Fg2t7J#>E~dO-g`g<inP$<HvZ
z8}VQGf1@D&<@0=}(?BpekZ%<IxsreX)1v)v^ChYTrk0Td5l7Jf=>cA2Pd#9)9<-L}
zsX_m<mTcr{?MxGJHH`mnp8$gKC3}Io)jg<N@%&pf=snN3s0BzoA@yAH%PaGLs61cK
PHqdpN6=tOEY32U`G0ikp

delta 45547
zcmZ5{Q;=rS)@0eXZQHhO+qS>5ZQHihW!pxV?W!*H^nYh!Chk0(SUXPa6R{pL^5kBb
z`!NqRtOOK6Nfs0g1_%fW3J8`#O)?3A9R7c*>lg)@AP^9cT9S|o#)bC1%YzFr(Er=|
zMgMPW7ZKQh>MrGfY6=uEBl7>eunIP_DEas8>c59HB~b_?MF;{HM29v-AA%6TcgjyN
z<Ja(Z3{50DG>By);@8fZG3{SPZrt5gx2S=3C9?x=+|Jt7-p_VPl~Y5HMG+e29!*OL
zL+^bhrY}1V0Mx_+iMTLHbjM-r$tp_m;;au*1$3*iI6^%MCc0rG@%vQ}hAxo6iAZ2U
z5Jtoe!@JYt`~Tn8QK5kTr^V5|ur)LgARs3&ARw{-(;{>VEhHOY@u<qEE^TYgN9`oq
zanT3|IxY&DS-x6cPSD;M)Uw{w%rWV);W@^h?E&(=B(_B;jR+X^Zg}pR?`ejQx99En
zZ2b;s%FBi%E*KgX9MqP2hodPz4vj-qYwZ>vRkzcY1YvxzJ;)bs64T(IN<X|)mCsCS
zWvJXptJ*inYndOwjqyk?_)2ZEJ`C}O*!BDzfF@Vjj>%k0_)JQ!@M^w+tl~{Va@T5j
zQ{4`gx_&^D3b%Gegw%ZcM1?Zqt&M0tZ7;p|9JZa(E2`$ncnuyfk(2WTtAUlSD{`aS
zWk8i<nu!SkhpW)^69o9}K$ObMUuAM204mkbsw&%642cTh-8H6~kv3yO9ICgA)XXPP
zJO!b#rp92=D#dX%W2S3QyG-TzGjT^k4A0l76fEm`57~KOV>T|dIV8%rginC$HPrYC
z7&f2y*5C%Noy!Fh^$>dYUT}%<$6ET6AHMqsPFKO7PF$MNN<A77ft4>W{UvGR!6HGT
zre*7@ot6wpi40Zct7iUP(aKeQab=L@ELXc|Xdw)69(k@?BGoC*lT9~3!)TvJ`jk_E
z)7D7|AsRQ=sWS$#(<99hLij-Ll2ML386f`IQ^+;_rLZ-|tzzhO0e4yv<ziB+7oZhC
z2<H$x#ZQTgYi+#T_B$M!lzvP1*DSETdm;c<b8-vkcbW1CdS<5r#^ws+f8#wRp8WJb
z_y();+12|89_4@Fq5mK7B>%zz#Hs2k;s~StNF?d6y{ObuwYA&mg6VGR+^8>)Ojk##
zK@mYKnuS5vGxV5g+kI*Fk=fWRjSD<WvhxqC&`yN(Om@wB_Pd_W%-jhI27qV{RR=52
zOnMa`Q0GfWQbQRTNa(#sAxSh69d-pL0`(#JC`+hV$q&gw%fhAT{(1ca5T-HQnyhy$
zdtMS&m{0duE^rHXy4>JmXPa)U(V26V@9Cam+Kr<%Z@!4lpT(5*^+__eT5iJ4H}(Y|
zwsAQc2wQ)H6=3VM*eZWZDiX}6VglpHgCUPCmCL!~w2j!A#f`wg^ye}kropPG{_<ct
zz|VpY7n^df(OG4u!B`gn^hos0>DyPF5U_RjT&;LbIV)tl+xT~GAzNa_QGU^9$G6+-
z<T5?#Y}$C1{mw1dJv9j;-il$RPF5FV64n#&ZkCSxjVw&otI`yU4)J0E4-AmMziq1Y
z3PDGIL$b&`&;OKIZl&2VhtglJ@rv<WX-I#Dt?^1ggnRPDgLJ<K3`qUC&&=qHSGuh|
ze83qtO7q2DC&sypCB_)=Cr9aXnDk;K%5zRU@AQ`mx0<bIqT7pV<_B^X%0G_4x*hjj
z8Kc|%qwItK9T{z%j6RBGJ(RL52|zpM{30UG;u1|xL0gn!T>^#0G&0mpq?$CM<%)+S
zQzs0h<|D%&Vk2k+q$ui`J+lq_XPh(Meh2%62_;oR^oNFIB=U$3y+decu7{C`!I5Z0
zdcY+}&k==pT@9gNP*J>+FJBJSXHe_<scJ%@GZuzIR{e0V+#^M~!T}=aUWXj6$wges
z)jeMSKP=)M>2HsM0|EW{$K0&{Xx1?$RR|^JFER~)!n)g@Scq834k)ZuDVPdlIXHd8
z#7d_Sz6>0_W0FI^dp9meUe=#T;PTV`{yeXQg_K?katvEiay*3RIOt($6q_+0i;-Yt
zzauBTA0Od^;P2Vp-#;9JKcB1cK#0dFMD0Z_AjqX7ODB?^NCtRs$6`nVZqd`y&X>@I
zn%C9<VQ%vDej<gE{e&Q(IWT3?NOmsV5mqk_Db;y!XN39BA}}T@G*)1<uxuPL`f!@0
zVJ9S<IZYF=Zo-lPtbk0EwbFP>o_TjN)tfUPMRzx{Px4TevovP%a#{(7HCx^6B-<pV
zG^V)VIxLTZVoY^t^mdNwZ1J8NB4HVs%DEgscRrilDvqj~@N=6@xCLRl5`jDg?jJHQ
zREzXzcIsKBo|ux5>NE`qclCEx*66(ot?bT>NCRK3k~FQUR+pySGBbB}4hQOwUYpS^
zMzd!VVO&*SHhuePvlWpdS?1JS8{|qwXDF1dVh6lzY*ZKe+d3;-A39T<tYY)3aC}(+
zRW}1)JKIdmpZ5cAcGKm|0%Bc{oLQ^{<P--B39^;0WC(c6aP(oNm*C?d<Jd^Ks;5I{
zR#@Z6g;bE)mA{BY(7=cD?9F2;v9;Wn5Ld|@^P4x?BdCM26Q?_L!Z}Wisdf69f1|$a
z;0g5bjcs{$T{8a&uZhlX<KTw+FV>s@;6@pAR_<)%$1^Nm?)_Is-IoT{hqjc>O_b!%
zErj{CSJZS1h~9nI@WORv+jA1Q<bq6w`Jh~-tm{ZvX&H@oStPKu8njzk%2?JKcHDi#
znq#RRSqO#{uzMO+gZTtyuo(xF8=W7_@TqNlG}_G2jHanfVsDx>=VK?ZFhi*T3=^4y
zF#)|~$L75x#>+C|83#>c=6WMF0eZ;~I0hL>gQ@|&#K-b-&4#xhx70W$erL_ZMJzY*
zt|NHSP<W2c&m`&9X5p)LW_pWuCUJ0C8fNufq_?@^cC0L7Z_d?yHzEP!37+P?5pUn`
zLSqpVpASi~2}zdu8Ps8+<)7IAXN2LS{A48zboPd+s#j?7XGLq9V)&SddBr3L^VFG_
z#qbjXo`QQvvnZPG)IPNmH6iA@_KRe)YpwQCOe_?99-idY+F;P1nczwvN|<(@sc=U5
z5GsX?@~dpxnF^{2CX^P^etV8&^>DwdYLJ;2d->Abvzs9Fx-^1LZ=q$t@HO&jb#Gw}
z&DB*L0cz5!cuI|Vb@;(H1Z=rM>ndtA{|vT1!@7S<rKS(=c>-cae`l&|!`o@vu+d<8
zb&X7r#2Q1EKg4f7gfA`0chD)MF^_AYeX%`0C=xP?yt70s4@nV|D^4f--}Zql<~z1H
z6~ycgT`-EKyXvX>&Z(XNUK@k@?M??taCpt-djb`bdYtS=Oeck*xZk;<q=@s(*ClAX
zUYGAh8NidQpm&3})T#4>oJ{b72|?6qp}~6PO5E^WJyAQ<YI*5L2Gj-t@T;=|)C5qF
z{gRN3ZT(}6hgoU@-*B_6mDpA=by;Iuot)QsB2)$h<(E8?e{Sai#xxCxzFkUXc8@q5
zdi}hl*KD(e9)(~;tx5S|lhk%FVcrzQvn@vLJ3FrU?kGp-#>G3ASY#CA6o<R6NcHa|
z1bPM(UaSV(ij9vHtRLLv&M{ftVf%UhgaJeNXFnY+8QfU|kv{c3nQv6C8-sG3D$UT4
znGYd+W$&DIgr6S($4g|mB%a{$L`l~Dk&w<%4Y?yE{<cL;5W^Du{X)?FBdUPG<>&P%
zL#sm!?~cjOkY2&b&zN4`-`}G7l`e=Nt$rc-uPwol%%X+~$zw8e8u=BV&ve`s7E@l4
z?;He_b+If1#PJwoy@&%S%fzY2OliNlKPajGl2IF|Tt;b_Jntg6(+@zEVen7y9=D!*
zR@(Ib`%~zJbGnC_F@o1rp0?Z2$AMBx-;nnu<g#tI?L(KQv#joHV^?mMN@CM66J2!j
zy%PSn@|b})kVyI`I6ff$2@ar?hhauQT#CISsxZ>{-|e%t5P{&p;$o5;;@rXmR%k?Z
zW_37pDL>JAr*zVj_#J)r2UTkl=7%uCK}7T1KHb9F?GaAa7S^YN?;E|(&-r;npwoM*
z2-(a@BaRrnSh!nf!SPu>&bKb_!C4WU7;8SWg;#sQ`)du(M*RrmMrW%47Wi=hOl;lk
zO9fom-k<0TUAVH!3R52Y5^44d`nNvT5YX_VJ+-I7Tth88j|8kG!|P)!l!W5F71r&h
z5b|)Zw)WXXE%&#oe8-LWmv-Nk=H54p8q~d;+pIkM<(3a^GSpu|H>@i-_3Ip4`Ca=>
zvGe)fes<nt3coe=&q{W0eJCse#5;c5Fl!9Gy-IbHj`N=`s!cvk5iRLu%8Sc16~_$q
zRo6Ay5!HWRt0g3Rk}btHk*hi^4@m>|RpQkM6$B;c?)b&htU4<rMVD`UeAi%e?gG@>
z4zz!8;L+h04GbL^8rUy;bZ7sZ-qyr%y2FP|u)^gA5dY9Vu%jieD;<>sX5zwu;l=m3
zUJ4A;>Uj*0B(4^=V3~k_B7jsPAEMAk-*1W-p$yUb$^5vVL5*??u9@;YsOBdUt^^04
zRj$FD`%<}tSz=X<bAK?V7*p^ilI_5uqg_&|jZ%x5W0f>wAe1d)`G(Q;&@-@pd(&3|
zBu}q48&i>TV^S=Sob^xvN933B4-Wo+z_MIZ^)mB_W@nv-oL0yw?xkS&r=0LP(TJR}
z%~YUSgpbkxtx6?u`VgW1GJPHC$|RP;v6O&y)j>#45xJIT-GQng5v9l^*1|Oxf_0TZ
zOimFcNI#V#N+}1*Q46cEOt_Luslz8H3#UuBEJ2o%3E9Xbw!$&1Xa=9#{980DWUu=R
zO@Wy4tn7Tl{x@uu{qe0&{%K_Fe<FqHKZmT!VSGTG#+56oI@(|R9J67M=@KOwnJ_32
z>pzi!=yotP3o>PhWJ+|w-SUnpVP>3m9Ifc+1@98yLvZoKngZM*!&rlJ6P|ymUOYLA
zW@EN2d~W;B+~+^?T<5R%|9*X727bS54>QD8dWnjnO0eaQR7P{Mzmq?uLZF*IGBJ3f
z(og`@b2T2)!!=^ToF(d^rRQW^6hh*wh~{j)aF>^^MPT=Sjbi8x^(6OFGV)TE-PtlR
zkxHu!(}k+#+X};2qnAfd!+?mEn|Dj1vq^SWpuNX$w}|`-XI@4@4ZDtYn!{nmcG()c
zE=|f}!BfqjmMh5Nc!Kd6x1&Ut<sP$>7&!&tlV+eQ&^2Xxiodp+J{@F}0G1l5JdR*E
zDnfN>)f-t^JT^NmM&x)oOf1BDd)(+cEhsn~ep_L()rDR`k=78YmGRn~z&J>Yv4;h<
zF-}WTMqnnBoMpF*Yd@hkQMo>pVh_uVT3P5&N3YZ#QY;T?d))3`N2Y2WeCJDz8F2xs
zL^QM<+A=1yrb#YT_RRVVjby_@lr_1+ZDqG#x=!58SIpEbYYWS2n<hfdk!_F{T+jpU
z>yR3Ns97hm864Yi%w4+4qGg||gBecqG29FPY!&%5UUExbIOz|`X@~1Nott{SnAC4p
zq&LDUsH7fT`bfyW$g1M^2%mG-?YIJ#CMvu$qG@?pjF#=JLo<ToEnAbHtu7jqmYvoA
z?Clg*pt;q91(X|gS!k$1@!GWTXfUz1G*5aU^2XnUo-Gf-SlXGUH{Z*+54*;mL?S?X
zOY7l->!kqC(r#oLh98;$N(Hy-OoYct1Qwj}39H|w#>YF0j!^Lng0=m^=iLE#gP1h^
zE6%De{X^?C{fiIu{mT#h0ZPuY;|cH5!frQ+SwSnW10a1UvIv+hI~RBim|D48^@*U8
z6b(k((Up(vvhV;F)3Y*G?0E6rekuPJxAmqesd3xqX-0SU??T%QExRnKJ`(m~c#_J4
zTzTHtUOzd5FZ_A05Wh-k-W<Twy*7DScmn4jcREsiXsb#b9gJ=bmWxBWB@&^3n$M`6
zP0blge``_!60F-{OK%xY{7I2#Bg>y->tX508gOHB@en)>32S_YV@1eD$GKGZ*9yFz
zLGBF#Y<sP+xHi6{WMqvgd0%)=ne60`yYGTOjAzQgxtxJHn~^XGoJ;`26j8qUeTInv
z3Mv<Yq}xO4G4;dC1cA`U9?Csgocqk}rUW%cYNB9=`YR-H#5Sv1zCc9b#~&?`<!4d0
z1o4>rZxF!zH~IS{R4k)#UisO9n4=-`)qBHkh`@PDPU77pe<)>op(0~Z+Sb)J2U=4S
z0|)xz+8a_%L94xY=qn&<kEC5dA|hDWaN-SX8*S$obQf&W$sO!R%sHLOrx6hvRq++V
zYbZ!RNj|Qcs0}jjZE+uE>8ng#o|<2*6YJdm=bQ4pKO1V2|G6c|x7VVsC|9U(s}hND
zrU>r^LU|`DF47pqWklo-gUlOpJORkk{0owgHM)3i?$d8Ql4`*E#RG+4yMy!2?wIh-
zsBEX=EF{-;5D(;s@ruH<z#fJq=8ehDt^_6h+tczD1wTQdd0;<;75^YgsWS}Ya*SfI
zf?|Uc{1N9Kfn}1&JGv;>(2?HJ+nRE(44@$mR%^*8ugBCNDZ$lqXdC`7<bN|_nKx5Q
zxKJ#}f5r%NE?3d$kU&5V2tYs-|Dng*A$S0TshzQ_YnsM~DXu2+&)OQgcM4au>qc9M
z31uAJCWf>sl{D)8s#sma9~y<NPFq`2N1D6to|=(x7gVY@e=v~LPY6sM>XBC9fZquq
z{hRu_?KI1;kbRtY)_XIYtou0~e}Cq`Ie~M>29CI*hX`^<Rq!AjMyUIUM3uu&sN?{f
z?Pg6VqcP4S%8B^8WRwt^rz&{LJE=FiEVU9%7~{fzWbp}80LupzIKr5tV`o2*g4jb<
zXFr^Rq)|)pZv4?RvmZaa@%v^t!^oo;Wk2e0#_`3lhLL-9<)3UgL(H6gq>CJ8KiN~q
z@%ucie%$f5d;ed~l;MOU_oCe1l+l157=&1@7#-&cC%tVgs;+Qz8YS2As_hW*S!XxN
zUrDkl-=d_$PpqoLDNh;Wk`ZSW<&>_b8E9k@4py9PcFL@<o76Z=uxIGk_^oo|t8$(i
zwCQf(pA;111$YFxdpvCoMz$Zt0>|gC=C;~weyrhX{zFukY{=d_Oz>~T!D9fmx7y%^
z!nBI5ALQYcahYk@ZvHxYH1`L_155VpME6E)mkhY#TfC-gku}e>K66`I+U~r(g`Khh
zi8eX;oOpy%k8TXdPuT7rR>G$$pZ5F*O9|gys#H69w|UQjx^+}X>CWGF&OPYh?z1cI
zl|=1@+<!7DqGC_1*D!PJrcD4??E}$MgnHmh=%(Voye{ijeKDQas{C5bFd1#<P{>ag
zG6?FA%We<*rn`@=!2Ktv&f{wehc#WEN0aS4Z8sNh0IGt$ji)fYxb+BBN?6B5_8JkI
zm@jEWg2>~pzlOH{G`p)38o0YJKP=&~^j%ZUgeRNM1y6l)U%@5jbmsu_vSw~jnoC{B
z7#xzkRCC5OwLHL`aqx}8dapfi^W$hfMOBmta+_sdiy3mv{vaT{OhTh$Iw_BO^AU_D
zsKFhN)8r4cqq}<PjH+TCi|;vTk1F0rM}yNn%B&Y-QDKkvI@G*ZoqxdzT1qt21Q6H2
zzL!NCMm^j179Y&?Sat$7-sRB-)R}`Sw7XLjUdd$F^~9O`okR`YO5XFL_m2^K-%CUj
zBpxKu0Ye4qwa4n{fM15_tzMGp7Yw{cXfEY7m|!oq#ZJHtut&|oA?}%lg>~J$+AR8}
z+WW7TpM~l)rzzzp6d6)GrN;HCJEe+w0!{kH5>z|G`)WJm;n9ErS&7@2p3^Oesw4Pb
zX&11(1k9EZi}ei7Ybt`u_XxCekRNFW7}hy*>AuoKGTBqua`zacWXB8>@QS@ddGc;G
zPkMI5wboAH1Sk5cZnOsV{Cg{WWK9bL;XB^$1K@#D{jN1NC*mHPZby94mLG7F;YVf&
zSVB?2Zhvpf_&VUJv2VL(TeT%5IfsgLojxa2^*)Fv$pF9V#OYh$Vd1Z}MZoc-cfu)&
zDPNzjgy&5-^94(QC|p^08M%ZEt@mtMm(%5Cpcu|1<Q_>??tm**S`93R{+)T{tsLX#
z8ojq|9~j32YtX^dpUZc5W^G8`r|xlTdb`)d;VM1<fk%K1*!7Yjowazy*q%jj!*%U)
z_VML(01BmD44Tur2QW*_@z);Dlw*%X>(RFtTrG_z{DhOg!*+Lupohj3^KH|j%NLPm
zf|CYU#4<WngHJW#5!M-;8_~#JOMpyuLnttu3kIlYP!MG$b+<Ef;#_Zhcy*e8C^(t*
z3D;}katpw1V;zAmimVZAgvtJc<FBlu@?6Jq77Gq7R9v|)4OBvzFDts(To?yZUdn(8
z`t_!eUwtq|{R+z~#jCRwyfc+40DSgrD5o3J<DA0d+($+6Mac{l@@%Q@a7_xF{z~_-
zm3WAGRH?g(&>GJ;9da>5-9l5O=Q?B$=7xj8IRT*eOLn3O1D?+vRZ+#}w|0u+mZ{t<
z(TikeFw@QTC{-C0`^OIWWalq{NNz$|RAW=DC^{a2EFSbgP>E|?R#lhM-3ote{d(#x
zo2<u}XxgiyV-e3Ou@ay3J-ZTXkTarsNUvqkeh(id<tK{$+x-Gn%9_C1vaZB9MEq=6
z<OzTuoh(N&)!EPA4OHJX3bl4|5;Fhfn9k!YzV^ixPY9KnErlnK&I5Cr{(X+6A8Ly^
ziaOuQ#G;&8lukd@@*x&eejnqHfZvAbK9M0f@RIEcMsb@N3Sx%yrO2m#DC<?$*ei?5
zYA;!@RlZ4_gq3${7s1;X<#&rNfsWJY6B3|oOr7s)F{gkyh%sl&q$2L)oZtreG`D+0
zID-F*AHV2qT1u0jz{1Q(%~+z8rQBjHh3LmdeXG5<-I!p0SrRLv&|6R0+ka$0Eo`4F
z=x>I%0t-v3G?MT<{>V~8kuiVD`HRM^$eY+czZtF9U3V(^f!`6^MILf}!RGG|QbZw}
zL;=}y0m+7Stq|{AqWH@&{4EilP(LN$U0wkG-ILaML|U64+SK3w>*)M%Lx*dxeHRxM
z2<SRRnVuQ|>xXvICP>+{xk)!ni!?N4D@NiS!HI(eFP*r7lz7iXbZO?99D7ZAJC`h0
zrxPQy+OMR$s8O3>La(kYy+E~L<KO;T)YjIvs$uJRb<@}P_PV$IN%ID<@ZiibLpov{
z__jFp%{}{@d*^3p@cp?g8D&KbKq?fN%NV1KBZ&hTW(R|?0b7qvR^Sw}5H#F_AwJ~H
zgHsKnn%gC_rGV;9sFr5o9FXK=6!LazWnaKRg0iJqPJCs-%s)O|1I-)DA1;Hs;mpI|
zWAiEc$dq!c9)1944<Cc-O_>8%AG>_iCYGyYS3B#?vcoXmKZ%54PR5P`XV1%)0;&o!
zCS3ttk-q7%dH97U^)F8_-t}|`u3qYa^CwRrUNx#-?t$qcm}8e^)`{iHRJF)3XP@46
z&ur9wK|=+Pt}O-Y(vq@)bH^`Bc2M_Wy~>AcKy@b%0efWgvrB5=Ua*ep?<8T{W=rir
zb!RugHit3jd&q?vhucFL?;k23opRYUVJ`rnHs_w9A|U%S55b6UyZ0{9-#2sz3>@M$
z)8D<S`N+r=)lPIm_>E-Q?_9U1w58Hixo`^#4yj|wQPg3c)H|q!4q3Qo2HFdh(FWKD
zHSabby*hgW^a5Qvhqjr)@Nu@69Gs5btwmMt%VXuMIh^cuj$Lk|yX9?iVY3-mJ<ovb
zNP??c>oydNT37Jp_di~A))&mSF$B`WkG5HUNnVx}Nk-X=c#3XoZWPZ>Bb67@=exTS
z#pRm>BQgN4J=B<y7p7&qjwpHf3+Kb7I$eGD$x>wd1gMiP2Uw2ZbH9q0WA~KE(%3w)
zZD%5tF=4PLfAjE{Z#S=YDqHa#f+PZ->ex)n+oCU$ml77Qj@h}pHq3Q1dtV+Jf3Y=f
z#$wY~S@k4sl$t8>At7EQ(fbUg-nmt*U$UggvFdZjIFcYs5kir}?Xuv^l#aT!*Ffmz
zQQ~bGdz7Pen~#~&PT^JLJm54%b&{m=&Z&7!l@=;vU87p~%Jg$mlE|UrJu(A^t2cX_
zpjD$?Dq1}*V$vCG<;AloB*k9BbA`hiL_MD-94OkTF+lGk5lV)bWEE_ly-Om6ki@~P
znNYQ{BjgIVn(bJ7PH@Y??P49Y)79Qt?@=H`tDtK0NdN9E9jZ<31WzuTKeIGN8KUBC
z8>h_2kce1tFQ-UQr7_j@XS)LeDV#QqJaD9CH9VjoqMP}$O?Iha-QfA7mBZEjZmQxD
zgah_oSE2e}1p<XT+{!_i+{uix1!SsMUuhOHH?6hYo9;14jXj=EwrouK5Txj_iuSEu
zB#5iH)>q*rSW=mK@DY86EkG{iTr`aMRF>_wd=zjAfc<x~s1_t<^tl1K+cere(@FgJ
zu`l`(R+cJ$Ev;^?t(2<}&edZ0jDz7m6EYXb+sojSUNp!oc3ugrK0R@X=Ak#pfRP|H
zwdI||#F}bNMY2<3i}r-p98QxFrbNqPYAbeL)9y4GtP*{u<nkEla!UA`Cd|U-k!ajl
zu@yNA@QKLUq?LB4X)^!@>A7d4aVRH_&xUl8G%cQ@wl>jL?fM9+@^14r^d6K7&beC$
zDgPOkyC@06q=)-dELUn{(PHW%s@Vuu_|wbgfo>9bP+u`MM0%7OXKVp4`2ksQ+XK~k
ztf#=`@nR)`Xlj)fvSRJD&#IgQyXi)GVOvG39WGidrLLQ{HWGk?B)oJvG^UJ6S-SlC
z2K4c0n(#8%1R8W9zj>GaeprM`5WQz9^vG4ulzJWcLt;ke+1%fF8(Y>kF$Kq5EEx?i
zX%-lT3!CK1^-oya>=G`AnW<7}J+*cVSA>fx9Xflnv|blW%6qh=tD>lz3Dw?iMoLI#
zwXD8tN{<@Cnh}6LA&x>(j1F_bK4wn0(Fj<z<q9Ev^L8vZ`q2kdszoVVT(lMghW2fi
zWq8W{b9#*nTO=lQVX6srsxFA76{8?`P1;p9d<~^YogG7GI~;>CZ4@(q=&0#*wRdk+
zR4*Mm1Krfa)1lQ&ik`5gy}5H$;SAwu^|{w3t9<F{IT#=_P~@r3Blk`7of}ZJM8sdR
z<o=AER$pYR?h{I&ej(9M5Ie5sG*vub-J0W|bm8--cBn_aKgdz-gJQ4b{_OX$MVjNG
zuKEw(e)P@9h|DZ#t@OFS@CoB%Mxl6pGSvB6o4b0YD%wx;l<x-zn8$5st`j)2kMQBP
zdVk13@gqR<Lm}<$L4Shb);wg$v*wHar+ez{J|OMx#8Jw%VCpRf1+nsr=o=3A*TPX;
zRi?Q_oZXN`_qCrcC4Gm+!f6KCneAa`(u#?*tf;Wfg@xR*sefkrU;u6go<<#eIj7-l
zv@O2W@9f1Gf1afZ`kA?_8i_3C5rF^a$+^Zyjvqh>?lp00|L9weSAj|_+Y^QENas04
zy6|!M%RcRvIP;tcAbBEbgnrvhOV4Unp-;b8)HS(KG%S3$ENepE#4)(yuAp|e-2JQ{
zzUF|%JiAn~+iYpeU%slYkJ2LhET-1d?FJiHH0wz}cxJmB#f72ck3+Xh*^AexUiM2P
zj{p#{mAz7zofYbgQcQ}6nogdbA82(E3K6?;y)@kxFUD7Wk)0+*K5C!<uTCFr-8EVs
z-dwFgE1f>VlBJvytrVVnTRSRx@mRm+fi_{~?h(gfBXlAO9+yz%7fGo34xLtjHcogN
zaJ?p))xwap@JZ%h%_k(N`T-?a_PG4W0R<>n%nAN2)PpSxSu}WtZMQ&K?HvA#K{enk
zqPy66g*g92HlzBB?hctoQe9wdp888aZGh5<jsV}*I$Ed37}z+=Md6B|`m8nHt5_rD
z+}Gd`Q|(7UFg0pRISfyA!Mw&}Of4YE5T(i>{WQ%OV+zBEW?;%!Ni|ZCEZtyQ4i{k1
zSoH;(#qoJ;%TfOL$BPD~U6kJ&1-wbuF%rv1#i@L<OUndBL2@Jup98}8Ig@-ba|rL3
zA&&_MCowYBgPA+rN#2y;?{)N_q$$DEg32$|08mqY1@g+r9JqpkQ9()UOP!y}XX3vi
zhaKuaWrfF@UkYPOB~xr^0C>VDM=$^{t0a%<cjF&>9|xH^d=$Z6S_f~%GQmYjn7<k)
z`wuTP1M{9F9r<3mLLWI7Nr{rP9ah(nC$X0HZzu0?C(Wr<W%BZmxqxU*Fe*IfDLe&$
ziuL9MZ}0^v#R*<ZMS3?uZCi@<nA?Tct(d@KoX8<m)6KA`MqiN$TcG#mbQoZ_pz{&i
zp-oj|u8-{L;^J5??`m^Ig5z~a2?krxVs%B7D{8@b9dGUw2HetbMjv8sMrnVI5hM5q
zR)6l)oU#ip>nOQDG5#J3mZGD9!8TZ;>bB8A`XdAZvb^6(2h7nrOD|cDAV2Hcci36O
z?`FYYTG={<cF&Ki$xTP!0}lYj*wli@WSP2_kYCVeQpML)@38!>!ACkCdWbHN%90Yd
z=m0AzW*Cu|e&aerb-69sGp=4h!a4c7oW<Gz8rA2ZS$S-td)rbk2rU;+n0#14VRg=U
zE9$5F)r>E>87`{gFvpCL2K0R~gr4LL#t5_&n`chJ`68UV`-GN6Qx+i6VC}o{z}0`f
zqDiF53S#wnT4J}7H_gSmnMl1s6ig7#I?wfyhN&eNtnlJPM<7a#>71Iaap?kWbS7IU
zV64lso+#=`m?G&uHCCE~(Qfc*<|=bPxzhxu=;e||>ZxaB9$}&Yhkj;ObEp}+ygUC^
zyqa26^emtB{D&Mb=LT?9m}V++S}99DnX$=>J4t}MR7SI$RbiHlj-AU5Ojf1KP{q+<
z@%Jo=wQ*<;c=mySOaTo?l+Wd?^HE7j7_0A!R{=>u{`Ey`$$8+4Ub&HN9c<XqJX#MD
zNk!ksMW4@@O(K?xg%yaE!QxrxVm=Aig2MtmbFu5<QQVWKqY3bfm@~e+wraBNS7S^i
z>Y;fxE`3!XsWY=p03u6|aD^&i8nUtg_=QY&bY}gSCV_u8%!yarn+Uh<wqkDb4Q2d{
zm%^_d+zX0U-+Om_DzArJO#vbBlMpm3T0G7y0|KHKrZ~n1E;$+R6XVA;P5g4`2s?xV
zQD2;og}G6gxN^V}cA_!CY&lAAo;0Uv=}wV!$3mUhYtF>TYmQW!<v^4k!E-=<e;`59
zDHOQWFIRPOL3zCh3l-Uq6gFVS6x%*wM?v(p(`i$gI>hhekbdFpEe(Qa@F!Z@YKY3p
zf^vSz(S*3f7C4^t5EpW@x?*fK_({wSmwNY3^AkOB!%_gFaIqgxPQRS5Fu9QIImgC&
zNZW}U?=JMLh0wge8>Yo<S(Y2;p5HTj?W@VjdK1K%x+I~4h#?RuCz^tw$S?O0Hyzzk
zpjoR2x+jHvvH5q~r<h*vPiqTxrhx(rh9?Z~JMN#1DWm=hD497Pr>~HyfNXtO`m<K}
zM2#A+^bbJHm+=1Lr`0br9)f4|4@^VXP=yA1D2(T2y}Ld(hDte|1w~6cc$y`4$14Xx
zLarYlrHhJW;+EQ?NvjT#>liDNHej6XgP|L?2!`^HR?zV7&^Z$PQ>eucwDLH!1@jeQ
z3il;+tIq{bdT~2c520VvjeiWVssb4b%bwx86TSe&Zfmui3*SsABoH+Og^<LfVq4<-
zrJzi<#N-#mwfDgiq5a~B!?iVoFWX*Ehh5PKOP&YidZ2<L3FW{~a1vlP^e2tB0kW&A
zZWP0u%aGOqy2e#++BCLLYV8EXg*``D60}J&uN4tB5(vKe#g}|Cpc5&eg|rJ4M6M`>
z^1uLrp2~b5*TB8x)z(o6h;7G&UnJgIUFism$AxcTljf)uzWHK`^$HPHf_2L+je$<~
zwLVFg)3lJ4<!id+m4;53^bkZC4)l7Z8^xNf?cR$`oo)03)ortw&(Sn(9|_ASzm`?*
zkaalFT3qcb^x(tS7r3}gXh@hNwfJC*3nBnmc0iAg?WThf0%;IL0Rk5Jah1JO8ZFE<
z7Nq><XL#PIUuT<+irdb~H7i7Tzo}kO`N-EUA*{I@{nEkSHb1SH3EJq@B{RJFrypaG
z;NOxo)Kdp4*D#-7mZSYkH6Z*I7pM5Px_Jqu0y<nKI9u$4JA~`D4|8}cQ~QG(e`o+;
z{ULK<T3JAh;9GYcA#OD4gWZx%0X$9tGZMRS@6X)5CoxXi;8#ll&mq}fjEq<O6=%}V
ze(M}JZ}-0W22M-V1E37x=YNqRc`OON5#d#wb;S>>fq6XfJK&bQ?fWgO>St9uaq4Mn
zBaROS!q<Rp+#a`aesgx-e)XKgk#Pac6W4~c<ijwZmn%jVy`EKF1?zZ)Y$2-3>=V~I
zCcof8-4225Q{@(;!E<cTnfFiIb^gYv;i<uNa48}F(fzc(()f)o4Taf;S7?o}ZSRGD
z)@!f>vXOSevd^5{1&3h}oFTf<2leoU<PynOAcWvN=mCvhvWs}N4;!-^A%6x4@EtP|
z^QS)wU|(w`9r8swTPN;!6qdV_9N~+k@`8E|z-lEJ{zPqjHvWPKi5~|V@dWDKKbG~|
zhIe`;!WmFx9J*XL{`8JAfEedzi!lI3`#wl7)VyH#>Pq)mLOhSSZ#GL?zmPoVwHx@}
z2!D;xo(DixMxRwI;6AJ3ZixfVy@$g+^7SmrIOpu&Q8o%Rye^Qtubr1ZtNOZ%nN}1J
zdm*XzeHUDraDBo!5=sW=nX@5U<sogvLaY(O*c{U+7IZzdPA0>=v*$w+RT{f`hvFk_
z_+s7j)mvzqpmPlzhHG5bNDgcRdz*udbRY3{Zj!Wqt%Qk+a6SAbfqMp^X!XS!d4W^-
zqElb9lYM1aBd?$pr3dOmTlC2fgl?cB5hO40Yq?T<!yq6fWmwL(<p$X2&?-87F8Az-
zACL(*dM5Ii4P3b;u99DDras#pow$S(d+<0VT$h+EmZ}I8FO(IS2wmWYph1rGY=_6e
zFQ9{_3IQWM%V@Hk;}QX65Au10j`0sFf~T55#~m@tdrFrb2f)9_5rj+d-MEc}-?d*^
z1NFR6^ErRXaK>$r><^u9vqAen7JcxYYeCb`7riAi??aaDhpZ7&Df|VJ0SGyKlUn(Q
z@>~%LUy!OH0p=)*yf<w2OZJD_c^hYc5NgOr?`F508T}LYxLyIl)q@TwmnDe8tDxAg
zfy0Evz7!qp#$SpD2fx>J7buaav#!PE7gdzQbc*e>-W;-(w9Pe9_#xx}VjG={qg6;?
zI0J+~9hF`isLX#*Pj>c+E&=92K*id~vW08Fx+5r5ul;=;vrV3Mh(;=Mf6dO8Ya>&>
zp63g1BR3+s3HShMk1%#tKSe4dmZ-VLtSh<H&y3dLFyFRY6fk0`vur&bf$xSF`^&^C
zAr&)I86&?HblfSpN}JvV3$M;c`&D(nII$+Q^>P$I1bV)l3~#`?7;Dnz7h&9fa(>3+
z;@=LiF1{GQ4Yy`+jqs(}12VB+8qX4G$t$cLEU7<)CpUFwzZ+Xxay~EahCN;Hx#xag
z&hdG25Z=x8xa>gJGP&mGFmL3&LdObw)A2oR#PA3`IuPvs60d}Hs%<`7{0sWurq%AC
zT-3-v8$S*D|HNHW41n<f+Pd2sNc=<1;MFLDcFbT-AZR(G3aT==g>2AajabP>={%(|
zjf@gv>6LV-=jjaApSXXvGWt0f!yEkM_dgl`tN<20>ditpA6F4Qv$A+y=Vtm$zdz<3
z8G(C)2+iM}H6<7=$a)!#H6&<H&31-+WB*wQ#?s-C%-GXfhr{0hAHIX+h!?Fiqzopq
z5@cJHHFG;7)gj0iDJRZ^_r}qP@t1d{G0AtWA<7q}4;Nht%w!Z55I@!IqRnLxzM}hZ
zAm=eTX5cvHStHu68IG2<75hB0pUf<^7x>ks_kJR@8-03OB0SbQH#Yk!>OAoRoy#AA
zmSRu&<+-g^Z4Gt+sY6ZrY^^l#9-Se~IimgO>k24)b&UiMP6z$0lwvo^Z0wvhPmbGt
zrA9VM>k1PFQ4jIiESz!IzYMZaNR7T4y+{EYd=CB=Yj^hSm>m146qb`B)=YeT!<dZP
zms7YBFA4B0c@sV|;_S=x%pN;+L>@T=#`dE2QhYa0vmGNqac41r*}E>yp(4Dz>uhtF
zY`cSfc|zu(Y-2H2O>P!@Qs08x%tr*>yV{K5)=I%$ZTgZDQdiw454#iz18l{*HSySD
zPNtdrOzq$Fj$|h!n5drG3$g>uO)rrLSf)zi7s3*X2fEcp%Dq@nd@M)^qHre4E4m+y
ztT2WfrO!D4M|`JR{2AnUg5Pq!iE837aN%hMwJ!Ra+ACTVSpMwjbK6%98d?%YVE9bj
zER1a-Y`x7s{s<P_@Q4<C{+|88WjFz2I6)$u0M%P|h!duN)Kl&H38;p9c#Y+{)(FJH
zawaz)2B#c<rRtgkcB_Z(Tm=fl9|H5P7J|KmO2HbCYH!aw&JP9&*&KolKL5ZU@fs5N
z>+eVFd0Z|it?=)**%x&hH&rS<pIuCfY1%fW##nXjv5Dq7lJ!xYj`A#g!Kp1e)t|;_
z0vbiGhU85|wHR!*JEtZ{G*W%1XwKl|?)n=YxiU*n>a3Q|lB51Mx?0+kgO-{6s)sLL
z(FQ2Mdf{^S{STzb>TE@{QIJj(`A)sFMa`w$yL#O5lsJ#gR<^T|KoPHB4O^`5{`3%<
z*r82QV1G1+N=Ru6RCm7KJgza7-l{AaNni0JgkJtn3&pM)bqOo>YI%eZ!M07=D>Cv9
zGd)W+krrtJJ5;`S{e>Us`uX2A#Gfaj1Nu0?*i~!H65YZzK2P|4Foyei$>JFl?}B2<
z5snd1!?IigDsl5s#9s>DsMFb^B-53;+@TaCKt$$!?CIg`Fs5Kos^m8_4#f!S1Tb^L
zI!LkM<ndA{=fR61#no771-SeJUpA#5aDfmCV2D-jGkq2lK?k8?92&LIDX;Zzh^Zc6
z0=N4-yC6yk)Q2$RjVS|6VHn2zTWFu`6FK;LSTuGi`V&tyv@?e7?GVC0&1+H<)!|6K
z8HYB}!`(5-A(xCqdXIwfSy5?Xms$LIvDYnnZKQGF2J6P#jV_@#_cb=g-sElm9N!w%
z(WTm3?*a1h{0q82@NNC9_<ni-kXLL;dpMv&<`;Zx`uydr5##{_3xis^ONHDkeC0gF
zU%?}990KMUJmKY>b@|UB;aQjay-!{jArM%9%&!xLx2G+Wo-1}Ayzg<e^MUx^bSJge
zLALxau|$dm1Vr^eVLQAOs}Tf1nx?lAo;vnl`Q}Lnj^$8?<aTOmI&%A^S@G%JbW&+m
zoQYMtrR?Ih$y+w<jqA|OO#&zwDk_>{JQ6f9@wyJ-3y8?TVvJGTyHA0KAyCKrw^=!k
zmTh}@z;(`B-&^0^yZ^ZF=Wka;K^UVxl*eQGfF0yP-4Lo@c>z1<V%P`(h@t}r?XK~J
z4sfRiLPx|Sd@oBR^iIY|8NBCXePOj@BXI70`e9!)F0x_Yljlz}uYpECqCmu{H__%t
z<1Bx&K<tk_#$id&_e?*+#G7H3X$U6TeMoaJs=$a7UdrL|Z!fYy$<gTX&~H@X+<3+4
zyoBj%RhCaTpaNvV`1c1u=sjLi-ly5Cwx9s!$R-!oV9MjSACMu`K@6}Tbs!_;eHu_d
z&9vgjLmN?d=*`vRcQ~A)`cck%y3|KI;XZUR<~}<4KJ3xwdr;=<Fi}7#A>;$<7h7Nf
zb>;pNE<X0{4G#VVKHdgD&rXN0m6ubcrI(qUaOE9~eZyMPiV7+KUwK-tl!Aj=YstQJ
zDLuW}!)h|N-pD*Zuzt=eK~m)BROxJjWBxR{clNw}ZWnis&(_ne)$rG&exGPh32DeM
ze;5isFZfaLayfHdj)sULt=4H~eiO=Me9;ciY=h3hR<_jA4^0HCu^SXU!tL@5nm_)G
z)-pCN<&;E`tB(#qakR}jr-{#^^p%VPt@es_CMq6UHHPvf-oIReqQ$i0>89QLpB+XX
zi-x#*%`AuGmPOFgP9_&0?k)6dboN67P1Bo?pa1hkD}1POXx)C~Ld)Hdqzuule9YZd
zEMAr`E;D_nC=0r1S3GF8Eu6T>y?(F=BzKCFQU&_T5Bv;(-qwb6Vd~W=8YE)uo_~}7
z&FsG=K5i*bfz>xQ%H3_ZwNk;Zx}Pk?$~(?VVzwej#Z}~;S3*>#i(fL_hf>>`#B2)t
zV6Xvw3McjX;5xRy($-18gvFjRbI9itqfqv5$al=k4pAQ*C~uu!mcw0PN7g>as46V(
zC#<Euv~UCv%@?!RLCX%-B}y_uzT8q%K%IXs&n%gHq!0}FRjGKMj)@rjE3KDKZDHw4
zL}jgEI}x=<HiwbFn;b1=g_fQqi>`a!91G)Sx%`v;L5dZe+<BoQ3stPNJQ4vX$w`dH
ziYs3PyzN;0H(`lHO!iQ$(?&bC>T_4}eOHoE?>Yy7(0-@e<h9zNfSai>D%CYQSGTsb
zvtM$W?CkTVD<-+Mrm`}y$}q`zJ*ox9lbUM#DzerT8@qh9K&oQ0<G_x|W<6H*ZyWf_
zI>RG+?a$vd8O&bl`ogZjed2AsX8$75n#>W#s%|a$iM<9hsmgcufMFheCois)W)xMQ
z`bKm>Yd1$2W@yCQLZ;Jlwwo%KL!unEhSvW4lC|Y5-2@I^#_jpIqdH&Qe$>!@iw&kW
zKaIz+In7w3>}Z)+Q*_2b84bdL3_3Ly%}=19iuR6bgT9WA<^v^P$&q`f^k{*&KEZgR
zg?#mUjMJAo$5n66qI6t_6&q{Wkz;&pjyfNJ*6uPb>Vm4Ih!^LFq37?!wiDQ2RgNEW
zTy}9EwxnwgmdVbz^ylXLev-lLu~c}wp1~JK^z`>Xgveipd=*FDb7+G`9noiPx20HL
ze?I)2bz7rj8yOg9&g$hzurrokEoXi+(Q2!sm4#;QDg$Mz2Fc*^KQi1c%(mVvvfSAK
zJXK85ucaf640(%`(^U9a5hVf~HSgb@m!t1MW8%p1<Ifo48uN>3T-duLINQQ=VB+ZY
zT<Ps$Y^%I}=7QVgZw`~B`RgLy$df1UI|(>ms7)Es%i&2^2?%5^;e5GLJmgaxrflo{
z;Z>ilN6$2;!1`R!J79jM`(7@)Ot2IHqYX5`WkU^M>SZc0_vlPt(bY7vsWbyBbu^Sz
zvgmFISjIhF3wX9Heq8~B$~pOKrX~)#5NNZx-q%_ols+j$K7mTNZ>7faw-9*GwfR2R
zo-2MaC*rDGbf#VU*VZ{ZX_}7+wA{JVeO~h~dnyVERD1nb(Ysh`hItIVl^Gm>GeP;#
zn(_mlj3aYVJBI3N3jNqFrO?!m#ooEgXplWU-b0N)nYzOHTWOgdE8xopLz~W_J-i6W
z+&}CbEY>)mE{bC?(NSX*?p4R+E`(2u8O^!VWN&M_Ucc5)HcAxwN4)}#>0029raEn2
zW7LGViyd4$7AL-~v7fq{KETTWBg&3LTPE|S;1%9w9*Q;=shI8g(HGtpC*QEzI*E_3
zvNAlZqHB83c~)oYN$?<OvN$O1Y2yLL%(2WYy00bM^|7M@WC<{;O|q>UF|i(H^t^#_
z;`;^Qx5sEdpLJkJV*Kr<nQEzO&}%6K4-2$X2|ni#OT2u~lck<M=c>|xfeFzDaVZCn
zIZ>CcZNt60*Nk<60rkqjaOeEUBpe}bMPS;q!r0j&GddKSyf8-ubJG?o$E+~GSUT>R
z)*P!4t6ThZuIh&ARbrNvvAPinB`@&6>?+12i4&&AOpys4+B5&Z!{U<Evv6gL)??;*
z9Gbdjm`Z#d+L8no51$QSTW{U$v@)!>3$Ja;BcJMc%FYZ!9Zg?;krHogN$Sctl!QJ)
z8P%FMb_)Z?ozlV9+8@b139^$v#$21OqoN4?ak4l7gSLfhQQOvOO=HuRlG~P&*Vfp?
zLk6QJZ&WpJR3gVYuBClV+qQW<8?nf^WImkqXmF9lY30*m@o@w2?PdypJH)Sb2GaB|
z%IgrAaJ9;X-^LZ9EQm^ZNLQa50yRh8hTOLy#>Fu_;@t^+rYb>MrWfezOx%3l4$K#_
zuoH9A374TtAS{BS%8}Z_Q5nsj0!Pzi3F1h7=7;T)S~=#e@QMSiWlN}R=L_=Uamp8%
zO}Evx^b2n4s5J|a9%dA7XRllJO;XwF#?J5n*1FhM9Q(l^M{5-(JvHu_{i&hw=HUyE
zv>{sbqHV_&T;|G^r`;2PVL5X&gRSGPVT=H;eBx1l9$Ba2F4jrY7tO*gKF_jw@*7@e
zA8*bABo7rjPZnO=4$l4v3EJMH>dEf%i|-O7qdQR)BM%L*D2}}QT~|bJuJDRleV)nK
zDv&Kcub|Rar)}pCg_&k_My&R_eQUQ(o!=Iz+S(ABZs9`RlpY3w5daOkI*jzv(s@kh
zm|_}!(wAYNC+|4A5A}UzS$sVz@OWqLE_Dz7imL}Fb8mCqkuw2;Bm5zGQ2ZccLVT#p
z9<j#^;^zziz~1zQ4)lvcAxw0{dFzUlR4Yl2@r<=GV1}lFsdfv4uWBe8M{cT(JAxi!
zfDUu4)VPTEP0a~jkhghp*Ej2X&U9xB_TTLMGzS?%n-5mi{R}CjJ%sWebXPBA+3q~y
z-+r)g8+yId%pW%I9NIeP#YiVh$Ywyd@oYhI{MiENTxPw7ykVN{vyVLLq~E)Dfuy=*
zGWH-Dh(DwIdhnB~n9Li5tUuZ%TI@?H`Edi0{d{pA@icDIj|!EF8{cu2Eks=LlVeO+
z!yUkT)QT_3*O%6%s$ELi&{JGUC>F-2leKWVXqZg*Zl-y|R<ZObH)?I7bJ#tve#RH}
z?r{Q^eZb7?SZi*@#6v&&>?O1pI<lLEdV*86<h6-=vj}#EVjegsW^Q%{hC@tE=hDY=
z>Er6@S$t6yVdH73jW;B&*6@5pZ(ml7IFE{0I*=1St}ophDnRgVUx~I7mv;{?HLObR
z_kRTcTMUQdl-4x=6T>24|I{$e|Gw)Ak<x;L3V`%N8%O_vRM=X!QRjj#9Zm&>T}hk^
zjB6T1(ncXlL@KlhvhU5sxVXR2*tt<YN;j$4h+39vO5x&HI6}+iqTGy@zeb}}@btNx
zz3Aipu=I52*`*gT>_?ov>Gl5Z^S*;u6nMHX0a}ZRqiH{6K*zmj>FU*EXi&PBK?g_C
z0|aVPa~+S@e0#<1^l6M<Idu@ey+8PXJ1QwtG)>)0czZQOa~{sZ>=hR;0S~B;BJ|2X
z`t|7T5odT-cOu@Y+&h5ZJsbx>`!qzKcohV{)o6twR%(T}zz`@YlXmSyAkw@i5+YVt
zjz*}LG7}F_oIED#5xkmCB_vedA0u}G0BXOu(FsRQX$Z#0)%@@Zlpdt{iVjp^1nNv!
z^VJ@({nirZrL*ThAHcy4Qwt1}BNQix8D%B@>0|WC^O^uZ`Csd0^q!L^xB)v1fPstg
z4mCgAedT+7!G6l9frcZ<_aeQ3(xdVBsOW+tOPGNAV#EQY$}R80w!WHUCxGKPAZWP9
zr<)hy?fUBKdXpCEoTt2CVVId;0Ohs~W$}FiBPf}JHNW+_lf7_UC0vLqp|`K3p{=E+
zgnzhVNPKgDe{(S-h#?1jmXu}(Cr+}?9t8I45)#bM{*<XK&0YL>Y;R=)nRKy&FbZ2m
znzeWw;-Bk#t6w;e6Gs8Q=8+WzNV=C2A&kd9Oo8_I+mQ<O+}aklT(6TnW}D(1GYlek
zk9d@CFT09Deyq9Y!cfwm>v;(kstQ47ALcD)4yh<RhE9plSdo&63`}N{ui=;38FJ=N
zVta4m(Vdr~!*O68AA5dpWb-J96O|B0W(^3ACHrOG1=d%QlFr=DNJ<j}5Z-3P_NF@R
zL^uE96WekLZ#j=N$e%Hm#pHf1tF@xz1I_T@>HSl6&EOjAfiX6dgj{tkZlHYL{J*$*
z$LL6-u3I}D+qP}HJGRY^ZM!<Em=)W$-LY+3osN@^aq_(98{>PQ^P|St|LVTS-lO)a
zIp?|-ij3B=D8C|JLXtW9?_mUh6L*T6??`z#o4sPFuwd3-h`?m`#zHn<8i-1M6T%p+
z!@QM~VV8tTg_h{s4na;4!wDjz&ANWTI}E?C(g@SLx}@>`lc~JkbG8f~jz-5k7KagK
zBDdsGQ*>6PSHFnUC4`0yt_(+VIBvDfKJH6e?|!sH_RUSw(Jz?_A{hzO0hs7;G@@2^
zEACf2CZ0tDUWMDq9buM&b{El$<|(JkiNr314Mr%NHs}=_+&(6JhhYW$*ga~1W+8$B
zCDQM~1viZv0X(jcWPu_DIuq^~b~?^C_}`k>1W3P!uEJgQ^LD-HZDuVAKI0h5_8y;t
zf#3I);6JMNSe_U_HpikD^Ps}5mp0(<y(|1LB!G?dJ~C42jU5v9rTR4s(&sP$GR3E@
zR&Du6I~r&Dpl(YLFE0Is)%F*_)kSsS&N=gbpQCY$TcKX5RZ<TmV;YUcMRxNs5z73d
z8s=7`%33Ch058{2t~CZrl+mcdycA~2oi@{Qyuhqe8BJILGh9@GHoELujY}nDLtC=O
zxDA5~d}xhQ6l*9^(X>5HDMm{?f?8H0oqU|DUK$cpB|k#8UK>r0Q-ump@u!LJlHpwl
z!~&!0%)oD9hFpv<BEh&cD53guM<t^?!rY|2w}o4Xn5TNSPQ){s4NWv5Ek{0fp)tSE
zg8Z<8z~ls$NFmKMA2xFnO~^XLW`)u=)3VrlCc#v4aDEWJUR4&++9Vkh2XTX^oo-M6
zNJm(giP^&HF@ubN>aYM1Qc?-2Aw3jES3F-?WLqFvH8-fM!cZ3>xT%W~xiLhYM94!v
zSEypjiy8A}2sM(QajL}G>f{KGBT%eZlt}Yzh%E>^A92Z<5@61iMYtD4tf<7>Yh$GD
za!XXDJ|1B6?{y7{t2)MCkYRHuJ&ZVp-{IfO^TcFyygYMmi!K0`9$jW`jF7Q~7Tn!p
z8x{}PS%{ZF)e#AcX=ts?MY_P+EVx)nDOEVbDlTtxo*mq^Tln*G)1GCoSSTGck2zBY
ze736d8f~Gi`db*Np=?vgnhdGJ(f$7MwqjvRmawv<CHhLkJZ7BK;hLUnS`l+^92i%D
zPPJ+eUq#fGKh=Q2IFt$Rh0e?)CC0{!sXso?_1DA_I7i5IAqG4&rnQ=ETgZY+mKp(i
zzf4v&XUW348iv(E7GeZvx;jFcPWJCQ1ty@7h#6fwub8Qo<&h<@CMOY;fY09MmQ6Xk
z_HOL?w2i4ui**lYE@q49!(Q^Kg|g&h!Bg&c@P#X^S^|LYsu@4IA?!gHgY^l^I(Dd4
z2p1)H89GA#Fra7ya+_@AlYQm$$aXfu@1w1$9Emq;DI@O3NpBT1p2P4`iU#TBJRCd%
zOs%#P_eHyxI%SNYYF-pI#nGj;=`#X_G@5K*Ue-*RQjC`E(K6%T($NQWLXrTcX=+dW
zzbP-l;zj^6+y%T52Eicb(coc*_$VQ(3js5lc&@XMzdyFi46h_Sb8fayqFt8Ub52xs
zZ{$UUr^2qEy=OFg`h!U*&?3?s%sD5s3mYL4Htue11cC>0c(y(Tw}#W~{;9u<c5x87
zT)eS9lNJtae$HRxJ9$p~Y<Z*~Bb7T3=U*DVgJ}YcAzHp&lZAifsl|ITI-zLy188k)
zT>z}MKl|VFtNiKcLj0DUx?|&658IG1Ipu!{8Wj>A>smo*?fTSY1cMPtJ?VwO0wW|$
zoPqn1aK3)%2p#w|^>vw1j#rrQKx*aHeT0{JW$56ZAgNsvU0m8TqFboNZO+JrS&Lq(
zultw2FIbJ1!rWU<r0&N&GyDtwJZuxDVnKlf9DNA3VtyiR)Pi=Rq((f=64OWCZ)<ds
zcAa(ACT4BUh$!8~ymi)4bFsbxI>r-xZMKMH3|Ix@CFR-gflC-|UhrIp&D1f?94S|l
zzy9L$`!Ly87Z04NghDe)Q7{kjpNn!lEZ76IOoh4|(V+87>)={VI2@!941=n9gBfmc
zb?vWW1c=GERRsLvZu$6R<FNP0#Gk3eZb?Z}3bm#A9uJ@g!<$J)*nqs<0YcpliE?Co
z`f^s_@aE0Vv_zq~^V~OcDdepji+>>%*~v@o_`tW`jw`2;+(NpruUk`kvP3VG#qt0S
z;Qv5*!Ik>Trr1`)WX0-;R#H&>r-?)@DsqIHZ3(iyAN&>s#p5^)4A<;DjgezDbI+dK
zG{5;9Z!1?H5JvZp5u-G5YR5HsW8B|t;W=UYt@YUh|FxfYG_GoxuipH-Z0Jm_0r_0j
z^a44#OPsCoQ;X}ZXZ&gZWb_~B55ocUonzT`!S&`>eNZZ>Se=Tm(Ci3wS7!wxE-<{7
z`LxoP;q={?Q#2HJ^e=51g4ll<_Cv#7h*7<y^9RcpRC)tYEV{JD;<qAC;(M}W?(_xY
zoPPT;b#@3(p<-Wq{_22UpSRjsxQ3Lq^XDg|@?drM^x#qj8N>umb9#8zW)1^ZDcF`T
zj#RW3*08<9I)Zv!ea{=ayH15pM*XQ;X8Y#H>>pU_vd4C&uC^X(O=qBAFy813j;R>G
zX~-8P%Mam~xKj8Nl%&=gEw-}SdvX{*vg#DaASKO8%Q==_G{`pZLwS+yF~IqwfwWN@
z(}=z5i3%w%oi4U5OPSwSQEByMO?S4++!B*B->nJbg>%KP<PWpYn`p^Gi{(Gl5w(qf
z5{zy2XEQ%eF+a}J-6vSXQOW0h=ZSNe+*dtwLF=+X|6Bb38eMDCXkK|=E!It-Kxzhn
zttY_}*47HXPNbj=;kR!pVUVn(46Cw;aFmLo7y`dU*vJ(3hZXdO=Skx@a#W-!X!23=
zy80<*!Hd&8Nl>li2z0A>i;&_xs%w@4&ZPpN0D0ylF=i7D`_%t*g&(&$PI4Nr_+EwY
zXFmO0h<hd9{P8-RwFf=L{j>%j#RW+L{o(mArf6oS;p8}hcw&gA>|V+~&$PqE&Egzn
z`{A&9gJy_@P6bZp%JF@Vh1Y`}xWRFWRwe6Bm?ML`ZHOc`11Q%6+;6bov2UC(<HBF&
za07xyOuY2>qxU0dbE5a@{^X$EG))4iC7Wg>uk|5mD7*~w{m1JB?0IZg3pMuuiWA&e
znr76|bQJdO)_9L}O%V#y^e+%8rA|8bhdQQIJ1*G}IYK;RZ14Ah{=r#IvXc!pcX`Py
z-oRBlH*<ZK+-YCQY3>Cnp+aTW?tAIkhm}m1fC9G3>$bU0>pLfFRWf48MkJbC;*vnn
zNr)z3litHY`P2&Ae3tG7XdeaG;-08~BZ7~kNoChh3$Z9%*JbfhiBj<-QlEX<B5dqo
zH|0B4wsx7ke;_bb4fB#5cbUCr#M4U7s8am~|B`pW8f1?dMa{MH)oME(qu(lN$*Atz
zP+8x@254Z_dRJDA+%$2g*C)nhfA#R0<!Ogs!MKwd5HRrxe0CY(bR7bGdn_~UlvEUn
zK~KNJW<O4{2C;}Q8=g=P1i@p^xci4LA!vDZDeE0|0O>ZcMYqXlJxC@ppvG+3f^cA4
zT54nit_U(&8_})T>XJPXe;>~MogRXAcm8q-#_r@tlpZ<Mz>9QNjav`Rr;KiVxPA+n
z45MFqG_>fM89%0dv`qk9cT4#LfH>}UeVRlBbt+P|;d)M$u?nkI2i%)Ag(xg@TK=>|
zET*mf$uS{o8V%=JfBro28P44xbdCG`Ym;)5pJ+p={o_UCc<QA#s8`@ia77#93lBW`
z`&3*82>r>STW#Xjp(yxH9pvfW6{g0&JpzOFra5wT?Mp<mkHQc52wy<+D>_hma)l)M
zn}+t?{QSh2)o8thMNyi7dhuWE!WQ17q?6_d4KGgLPq#O$lk|3oX)(=w(iX~I{+;5z
z(kJ<mlPA%Uox!7Dj2)(Q#2|$jE_LljGc-7tfN?@=%$go2!k{UilD$lb!<_z<5*UdE
zrXDND(8Pw3)Dr~&pq8u-d|#ZGn4Nk`a($Y_Vt->V;7pO5j|;oJqHA}s><XGb^e<>i
zv3mHRbc!B%QC2H(0%_9*3nGgl!u3RZu34_9edT&29hV}LD@xFk=elT0{}yiD>`PIz
znSx87d?qEJlD<1%3F7QlWp@z%IW`=0uF?9Yx+bSTi>C%K?UX;mnmTiKB6g|$vF-6E
z9>$iS;R;;9=p#Jl__)IsgrqeW6b)ZPD<f5K;pt7mb1gz|5bQtk3EX1!zRB+~$p_X~
zpB49kgx8kd*dth$U3{YnhRE)44XhN4%lo=Cj68nA%h%kLL~V9`+k!dEA#`s&dK-|e
zC7BW1pqvF<{)V;sH`$(sq>E6e1AhO$<Cx;3)oS2^e}sq-J4kj{R#q2_GDa*cHg9F`
znA(YCw4rD3J)og$=#rfBs9$^}F?!+_{^`Fuytc8n5rr+jx}B!`9U{5I8=9&75-&s*
z&K_Eq9xX?NH`yv%#P$r4oMf&6N`O|6k0ja;rq~ehXD8gTfaI2UUqO_?$MFWOglbXm
z1XU>M1((U3Q6OwJpTi14(g$zifPr>g+Zz~%Wg})@l`)+0&wQ}7J_DX=e0RXSvF*)`
zmE!}Se4WlJ|AJ^CO?&<m%k?9yV?tYqT-egte2Fyx>$_TUazdU4o)*l`Z?cZd##7jQ
z0jCy#MG?>fdj;`kK{vEoS5yGOuwr4Ax!V>?Sj^3~jcnLGIsw-8+qWc}cyTZ6mAI^z
zt5S{MoTrQj&=JF*%Q~9o`I(vEWlVvEUhKF){C7<vR0}PGkG5WdwBOabR88Dbn66y`
zl=;~;b)psgkxNP4(urbvqXmfVu4&ycqgfaLvniR|V=>JK!RpVz>?a<NJ%;;AUTAfg
z9TZ#V)DEIx8}P@ngV8e3YN26Yyic|uM#=d>Z63z?mP`qd*H!4!ge96~EWMKrR-sMx
zNJUj)k2pYsx5{JB(8Suf3t)@_L@hYcXp8&F<%5ii>(`kZ@TgL#!m-%{3V4LkKQt6o
z!O8)unQ!{}z>$Ylf*o%v6PK-$3`!TjV<T(y#O!a#gFU$>2;e9GuKo7knvD(V7ntE2
z7?>uAL`(#rCr9u_C7ZU`T5_v&Zf;rEYw`}a{ky)eCntgqN!ApKP2xu@pGc<Iv4#Xv
zi29W6Q@+ms-b<n($N`)$L-kutcYS4cU7h%i0|4t9s^ptAs)j{TQn;Taobm6vSD}8g
z=NgSu&t=^?jm#z2)aj~4e-7BJU{JWeHRUQhN96|Kr(X^dF|9{L1FYw+<cI)h&o|pf
zq`p()HpAW|>J_(fA>C*9H!^c$c6af+%MC4*jGXH9-;sP3%74Q_qxVZLqmSj!jvpQr
z*hZsc+t*G%G}|D%CKre7k}4F}Pz4oxn|W3=k29eM=&dF^e^PbksJh=BUq%X!=yBoE
z{A>i|JB<CM%tBq`ZUd7Lghe$H>Ls-JGC}{<i+Fhg;?9S4WyIGbzVmc8BxAs9G>+eL
za#!8u?%jM>`(Y*M^c9NzQEtY#j_inz@|<;YE<o7k$0DUip?puEc<&P;dT#;w82uL+
zn=ve1WpdGc5rvUVB!a=*!juvFIXEUd#gsz1(4mRg*t`nsPQh<R{Dd~^gW}OnMX!I?
z$4Fk<%a3NY8&0?#;(RwkNNbJh>0&S&=MB9B{J%Fe(NvZI4;Bne4h0O1?0*`?^Wabc
z5dcg}ya0>FP7VP?K5TSt+V~PAyGwHT#HK~cc#jRvK1MhLW#<NgHO8$;J4*{Vb^Gp$
ze-6#W8byX!dT}W&cC@qm8tQ_&)tY*5IBz(MCz)I4XquBO&#{lM+Xue6C%z{W$$(q{
zRIkUInz?Cc9R%OpCJVlv`2nqy#-TGnez*W0YD6Qe7lK|m1SRU2!el0xp15Di+)sXZ
zM1%7HgFfS01`Fjt&E$Cjo>=8e64T_&RlD)_6B)v}p_&uKFSr=N^wSyAx^9cErGLtZ
zoO<#B+ny2c400^<0^d=;VaigkQ<Lvuiq1k$RD;h^zb1m((YO|Z+R?g(fKmdCJ>^F(
zJS9YznhR1KjG&W>M5UJ)$62_Kuo1!$-C)GpGM=|qXBl_m4eXshMeKD6IHoyJmv^Qx
z<vV{a9uld&?%z-pdMYYyGKoaWXbah-$5v)uezEZgkjQ1>DkV!sh94A&B1Vue3a#`S
zLyVSXOObTfcpcXM1U6NdHVgxL3#v~}osBm22oq-qy)}6!wU0x3jHF@XNS5OMK<I4A
zqYN4dn3l9N={MUC*AaQRIol3Tw)s*<i`O0;=(?`Rc34n8NmXNR@x)llo09)#wOxg|
zU#r52PhM=~=*UL9OPsx$woDsQ_(yovj6GFVT#EaMBr}mUQFPZ*&)x^vhQlxDZ%m}8
zlU_w<g0{rJ?7dg7!n7I2$DJ@kVv*NTDz+QQzZzbz7AG_3br@z`bEsNM&bt)I;dC*X
zOSr*+o0@PiEwNoK$uSr77U=B1=H()|i#0|mjX^)1e6tI1Q2g~*K(If4@~uCKtlx2b
zO;cB#$L1(hMfI3jxA_)O6Vl=$2=eAh^-T8>`<dtd-F47wWyOnXLY{&y=m_~I@Nc#G
zdzwx)F*Wa)pQdNbpCekTsu+)@!UWl0<M%2<K)eBYxSCpeMOitf<YM>@#!~6o_#<_M
zu!}>%n4#*fY)<hCZ>bc#S(bCF)hK7A)&n7YAX|a4I;W>;Rzx<yb4wqfs4ND_a!`sN
z0JNk!Z%3|n`1thHYV%VZ#zUGpfWl+3;f)FcQe`c$#=zmRSo6jq9G<u+N(ugmQRm_w
zEXojFlI!o2nCoIZz(PvBc15DQKCR%D$_)#O{%Q3@6;Qml;-xWcj`X|F(fmzu0PD?g
zfJB^?q?aW9HF_5inLX1kDLb6Y*#%sos-hbZ(xI*i8Fj&4$8j(1maYFOF2+^<b2yjl
z4a#x!sq#x;Q$PZY{KfwuL%;0X1XMwGXl5k$+R-cG(4()pyeOc!B^Tn?U-tFXFW{ZJ
ztruob$3Jdpa2+C5Dm%G6(EedOU_x>{pvS6(U^Omp#IFP}I(85Xw6K&;-{~cHR9HnK
zn()s9_4eoB;PeXJ=}o(B7gbufHOa5xHT0hOYoDshV)rh&j_>_aaNJEb`YP8>)@Cc7
zM|`RJm+UX;rZZC=y^BYoa4zM{?M4`?!%~ovWQ#(6+19tH(`nl1%iXW*5=1Q5>Lky~
zzI2Vr7w7=!bkVu1oK)0i*UxI}(%5*^hTpxhZ{e9Y&URHl36@78H8iB){#LN7>v69v
zqBUY~7!sj~qr|xl+0eQg^|Uqdr?*0ZPu#7`>Lty;oke3*>QA4Yb?444!xhTPfAX;v
zY6?lh8-1Ld<RGG|ftVf3HHouVF50B4(m8FUh0XyN*d*?fjV;8Rh?aBHZHJkYO@k)n
zzo2^@Xq7COM#{Q%4CA9srW<hFh>bn7DF}&w>foMjacqu09(eR@ZAXA{8}UH%5$|`-
zhUxMBuD0ocF~0HN<7E_PGyHz`@7v{Cl)v2wuWS3tOo0C*deLQ0<F)%^j)a)!j?NPu
zeAW%1YOBu!BFK)%`OzYz4l2fK1YfcVnWzoKuq7c7zQ=r3-LZYg;!S}TI71MDi_d#J
zQiIutdt$P(?sQFfIAPTVMn%R%=7wxD<V)fCE!)q<v3RBIM1|ojSx~kO24j=SPSLe>
zb!Snpw*tH=cuS~TPP=<v|0@mXvU!qj%TfVILYWPbIe*mW-0My&u*fp~P6fl8W9UKs
z9z|y`m0UR=!ijrIm*>pt^-UoH!Afz~b^^U0Bf;pKEwqH>3i3D_ppA<hXBPVgr_O<O
zwxRmDfW0ilqdeh<IGvHdiRI`cCG`xMYA=vx_C=5z=tyg{0A;5b(#n|su9~@y@1qUa
zDQ+pZbv_V1y-~Be2tez(R)E^{o5jHIT<i&-pT(!oySoSEJZQFJ*D;~DAyT2!lCFE=
zZTUmFWe+O^>%P0|R7o|-S$ZvkDc**HeHh%on2?i@5)1<5h1ofNc^YGRm{52mU|dnl
zcDA#R&Y`wD5hUykglxw`dgp^M9uoja$n8(0YfrFh&$Pz8G8Tdo4uWEwxl~{*$_Ikx
zwW=PW4J)+1!40i&Krkk$xXNo>3#a(E=){@F`8au&tI}LCNUy9;6pl#Lqp)k?agA@9
zc*m9IX|*Xv4|`0)VzKeaL|$+tW>o<>7YdW)V?7y=e!EH9jM8~^E9ugoUTuI(^&Xnd
z0T1%c36EKlOAG_jO_mNLuODtMPbn5h=5|V)%9Ug}*N=l3fzqTou#!PHA%qDBaK$`1
zR>%+aWcK?f*Rdz#<yY5))3Z0-@*?0&g4;gC?g%LD$s^|nWa5z}k%7s`gu7>iYJEyV
z?hD&PcE;ex-BENkjzEg<)zQMcw4dNjT;gStY1_isIaR5KB-mZN@}f+#QE{_ZU>R61
z>mt2NpZ`xOkz^^lrToPURRVqgNpGb#J*7l9C8HrNqcAZ!!8kTKbD)Y$r=W4I#H_-~
zuFT5X%+A)z&ZXw$frR`G9yh}U3-idbm^u}6qXdVl<gn<B`ozoyEBQFt?6_q8zxdEs
zUyNm&<6!!kukXVD2Fm?O4B(3EbQoYol<@qJMGN$KN)VB20hdU@Hb4-<l?tT7OSHSc
z`^yQ}>N`3ix6U>B(IqJ-QJMvNPUIIV-JITL71(t^i&}hU{t5IAoL~b!TsCi|lf+W+
zhZ@qAzBpVvh+}5s@(a*Y#8N&()wH*mky|SfSgNrFP^U~l<_AzW8ZO#8yqFxzI&ow^
zm#B&<W;6!wp}>#+^Wy=8G<{s|FQrDy0mBRlsb$rJf{PCc+Dk~_lsE4<v>B2=Au>2#
zoet`RQnKW!m{y<Wl?D_){uh7XKQ9XsH)4SN&!W-QC=49!KP&d1=5Zxo?|=IBp#{|g
zDM7(b=-|2tpj0OkfbiXS5{vD>?_S`es9~^T;vuJY4lTR()oFF33LCNpm$p+h)<hfb
z6jzB~rL`!Y*59+<t)(O~i;&{_<gzM8tSHf?{S)tGv>)M~x{XuGZm~pUe-cDx3?dGS
z_X;SAKBZ;O_#pf&PoZ|eqy3<9eRE%8-jMz=rThKg=SKe@;P-!?QdJa=sO*a^_z0>7
zDg*wS<&pNV<0N&Hnuh=SMIFS#rpVc66r_bxmCm)LHjll-(seUT@J?zdT|jZukFp!a
zo>R)?N+36!LVdxf^aWyDX##wFyddR;U}3QxY7DA`gE*;{D(TVFQY<Ctro`C@hPa@I
z*4>fh#Mwqz?^i*&P8)L<NU5Ft!4E%Rw*ZD5?FXmG1Nv(Xl|vO%3?+t}Y%%*88kNo}
zbOfT0@6@qBQs~Ab$q*m02Si&)emH>08Z0zub49G%dbBo{FG~G3ia>h}%>z>k4g{(w
z$P||d!Sh7kX1uXv6~ebI21pgU=Q$EmO7v732ac`o^L8r$DV2t!)Hf`a41M(|0zi#|
z!$dn1khQgv{Wk>*USf)sh@JZnw_gt{?;%vnOwPFUbL=}yitU~#3;3kw5!9g00?}qm
z*Gv_COR#~v9^m#?=^>Nk=~Q%AGA?!OL4Tfuw(mo1z)XA;yU(D7?t|C>sp>6vt;i4@
z5(4f*T{r>$^j;T`Dq2dU>iOd#9AI3Lip??ku>Aul|LDOgPi)E?P-qHtZ4;~Dxi(Ns
zHMVFFVu?O$HmNN^NG02v!n1z)HAJRmt*sbL2}Q<7#*asSA#6?NLw$P=mhZPm)Bjoo
z93?a(rk?S{HM+`gK;f0KEbQS^On_8M)RtVaj)s~o2CFzka2N04@`6891pw^!X^~=s
zIC%d$Tgib>i$yBok*0qJIuSvHmh&fF*|#YXGhYyJJB@+SP$d_kj^VHp|8j(e8>UKg
ziEa`5&U1w8_~RgkaG?z|4_i>^hf3_sN2^lu<vD`Md1cswpBPChxPmeHuT8Rvx}7?R
zy7v|{LmrLQ&AJK0gJL%*5U-(x&J2eX7X+TT6)%+)+A{`&G2|_dX1~Nd$GtfH!~crv
z{^#s=RVlFlhl?2u1*(r=0&PrS1G3d;zPOl}9~K?v#`gKQg+|Rmy7|gxbfjNab5R6b
zJsJjL#CFL=38Ie2*k#I7ZSPnnjPDJ21odzuAn9hxqgvF~hSzO7^RdVKYQu5+eq@Ga
z2MqIOvKRFj3D;(>KF@US7m%tsjXy;r!%k%+GFAf^$n<B_D3dHD_q)+7VBBHL1h-sz
z#AivcMt7S)rJ0Uh*V(pT7&S-zm9`8jY~E7(DjRa%{Q*LWKc>Ogk6aL~jabZN#hJ0z
z4q>MiwpGWu8@P5YzST0B!KBbnj8IyW(T$zs=-s}ZEQ{#Fw5hVt?sp`e1;2o;IABL1
zx0Ud0z<&T-ij4Hf$paYz$k5)zRuEuEw%@m_^lh88gc@u_$^{DWZyqPKe8u^a$%<ES
zQB(fDJ`W{!glv9-;Q=4a2hc>+A{zd&R80L?KPI7S?Fd~hQ628txVKqGD0kr6T5^yf
zk|hl^16QiAF%91H{uyh&r`H+l$k&5-SiU4gyx@;oaZm_J9d98GFgTg2a~`nnP_1IZ
z9`Ism#wC9E4VQtt;ey|1`~<YZw|L3!V;2$)mfXh{(m~RPlj}5IPdBsHMg7?Z`6-V)
z0$UA1KdL63kZT3uL~x+&Dsd|w_MJ@9*{Ia%D>(eE;{i?A&iCeOt0P4ym@Pk>Vp?y_
z^(cp|rnyJdcY+xWz=G<Nw`A>?`ytjV#Wpz-e{_&`gfV(2gZYf9=}k@9wCsS7rn*g8
zBAO`BCPqx-QaQTIJU2le=6h&ePDGv)6aKqMKHAPD|C;E9{GFL~_3Zf{hrLm$P9m*h
z*i>RtrY0*Fm&%?(gJ2@)Ukb+-v>W_zxl!ybn;`N{V;X`zC9$a)2PTQ=x57gq(x^q!
zEu(Kr@y}5I|Nr^_xgruQ6Tcz<XZ0P&>T~1^0T+hxb%1F=)?<W#Ep1yb%p<IT-)0~k
zY6xH`SfFNUM!cCT%D1T5CbEJe;12@%=%#gJPkCq_j*av+$nzmty^AfwS#C|=df0WJ
zKv{Iru0_MTf`7{eN}mtjFM|FrJGs?DmKGk3nOk)c-(OEM@3OBpdt6_qFNZ#J0N;KH
zY$w-4dDi4nkriS9Owr}>$h4znZg0H}?F<PG^-Gjwa8XP}`_b@LcFPc<JlXC;S$nht
zS@tI6-CE`MfA??rQu=8O`}he(`<mMg__Kd;6mG{_&A#$1#{E~o8=>LNpMh5gFkNrT
z{c%rEyd>XA4{(W-u1)dW>-wMI05sm-w9&b@kH&a$yO#2R*E{$(@JG2Ps!DJ5{@O3)
zM!BlUR{QvuEx~bk2q<JNH8kJ8*80ptNz|2a3(e}H@jPJ}O)rY(ep$QU>Y{#ln3H4M
zGVLW`%EPUbIuj7~qrFyS_w1`dRZ!djEmI2H=th085jUcE(wR#u)hV*g9|IbfY*ux1
znbC*aU0)7R^puk9AJ*(#&2@wyu`E2`{KszS7n_NV!#H&x7ecJ(%WH^5Y!me3rHS)p
z+1_H4!N+kAlzjIBD^jc6uBgBBt+`}=+ewswkN314E+*_hZRgu%Ecy9de1W13m?kl}
ze({&8v=rP$yWq!f?1S6r+MXb5g|r@xFLA|i^H)Eh>QHZuz4PMB$9L!e?>xI3SgPAp
zhqJ}=PVjREuUvi1xOn(0rLW2~tNGiGs8Z6+Gwyg&&ro;AsnQc~U!L0SK{h?L0h~%Q
zrgy!n>)hR4&y{Jq3VwoU>B3(Gk6wnQ>5si(!;ysWC@NeW!jIjZPn178Sshz)dx;eG
zT}^j@`MwEkLw@hIaepH?6Ivq(&GFbjJh)lMe{ZdHd9C0d^0fMp+7j|<AeSe@8a7&*
z3pXvFPFLVP@}>GT?X;YTJZM)V;^<CATZ2Rp;W(Kc)c8RjBoTi^o?0PCrr`Ls-ZiV2
zm-yXnHs^_!n)H{JE*CYX)EDq}MBkl-4<3mC{8b~P4LiFs+*fo^N(Xp>*;^$Qaa3D{
zc--!yu8T$XF$B&+HQUB(Hg;%BOz4UXyumy4ZBRT6Uf5#r(<ajWNxdxv%saNc$mYqp
zd~Qd10ClXv#;FC$=A9Q(AbnaNA6z5+w5ejBtCwW|9lT+06nwx)-|2d$Y#a2FjbsO)
zQ1P^-$LyJ9?-BhYZ#V8d`1_t{?A80N$~AlE`;3=FpF|gZT>#loO;SSmU+#aa5QQBT
zyIgOfsVh+2MN4?G_$#0mVv5|sB@1#Nh+1hcwLU$@H~Tk@{vF6gljMqB^lh}Z2Z#ro
zz*wr5Si+JeD5t53GZAow32V~(5*!wQe_+RcH@g+*;<`0csU7Y@*@7d>wItEGp0@kF
z9hR3*1$?(7qhNj}#bsG(WvXH7CLVBBSFq=oKsC@X8&*hiD<Xs|!8`7>J_XT|2j|%w
zW8imbZyyye#pjJ-1q4Hrw!CLn#=|tX&6<$haxxwmyqC*f@vR{dKEjywpVE6k3wSKc
zN7GRZRFqJ!dQYq~&Y#ULPH6U66K>q-ri2&ZTfT=Wb=e=`WUS3Pv}n|Ot0Pv+80-W;
zM)RSv<LgZ^=*(?Pdw;P2Rp-(Do9DffNV|4nD-pBzc#BL!gJX6}6HvsXX6)kw6(Ut2
z?tsmf68k1u=G91WYl{3Cb#VZ|wXe@9!J@<T+j{{PpAv~jwOgZ(S}&%HexfHF@%$(r
z&$=c(pPAE8&GgOZujy^Q^k7nKJ(9*@j{4f}EUEc&9@yl7M2~r;Z5MH`B2wCZwa~}n
zzW&#FyFGvF%e?0+pCGxq&W6M=thmMyOC0`Z$_rv~I^$m@RtK1}1t!pd;yJz$prtZ*
z=&jWPW|7q$X8+vTET*P-B^*QU4du4@-{g3!LBVf2f|2w$xZIJTHrXuEYA?c=eYkrx
z1)6bf;Rh3vT@gFa2$=e#V&cJ;Fv0L@7K*<Q2Wof(RB=7u`C}r(>a3B+oy^Qny{qt<
zV{$?{oshLA^KOTRt*aCPBvQ9=aLkTbLmB9Z313(rj@H#tVpJs&bS2Qg(t4dNkyJ12
z?)@syVE3MfNu-w>Ys7eaa2O|7qXSeOr2}po896U}4N#edf1@@HYecfE_V>x@Ehm1h
zfAl>)MiqC;L#{deLpYdaUoGd*viyR@c~(!dIg_JwmR(+SQQxxwd%vmdi@bgj$|z!+
zpO4Bcn(LhUR(IsBXkLF1a=+;E{Cl<|DVTG|Cwcfa6RKF`7+}s1u7wrb%eaN%n`v=_
zrl}{<yA)(mYx_cwS*qfC_6~S9v0=#z&P#M%6%6B-9eI%+;4EOY$B#*%Cb19=DiP^o
z`si`Tw%38@F2ZU8Jl-jU*BmUqeo`vup!B<ALWd)0Qy7+1bxYR+uv(*5Sjh}WoNu71
zhcdmiyFx+x_WJ0l*EwD=pJ-RAj31YLT~V8WEEkWoh62n-BMgTjk;Hdms67rt;Ab%X
z&`82vaIf1O?vu_Yv<h5>6ccQ{LIWkTNmG4!JHNUCH-xjjg-9C7P1EJgA9kJcUDT!4
z>pX2`WB7fMP`cS*cr~XmEn~zOqs6~4z|uWd;WH{7zLq`Qn$YODg+~ms4}x=CbALF8
zQWp9FZKa*sz)x!d;E3q$|Ay85=h`Q<#jc<Fs#`Ze`O)728um&H%9sHTD|0IRxQ=Sq
zP~wOLj^@8e5z(?tuyI(^$!<*XrWpU|&U*~z?xE~O{p^)Cc{-0H&)ML1t&`mo^PLeo
z;hSlH>}mqk1iV8l_r^wZ9-H0YYN33^Ek;r6X-(lK&<$m^6B71cF%4z353b$eB;W|p
z4LRKGaZ~mH_Ux1{&;HQ$W+Z2b{#XO^o|!QaThCQQX+?Ntt6Wo?D}=#UV#TNaT>8Mt
z?Rv{q%`pc;+t}kZ<Y3hn#x1(^jK60g+7+vc2Gs)V`Q?>d3(9aCvsGfm$Drf34i0Zn
z;V9|S8xhn?d}k=>HRCYFt@(bFe|s-0+SP0j%e(=A0QwQXjL@1U!^TF_pxP(acqu9{
zhE%Pc`(V2-!SF6J8$SU4i!bM1F+0oz1*eYu<W{f4fa$$NeFbiIT7&N{cb6epnEXl9
z{0Fb(r52IkMrWPUrrm}oJEO<+x@FWOB==+yp8Zto8d?v%1yA#86<s7{Ba?x^e)mlc
zeVZOYyGP`HG$qPrHw0v~t}$%U-*Q2k;hhsOjT<7xjNTO*@X}xAbx6v0x@vFpsLyjj
z6jLcK#Ex@Bpf@mh3?k($dvEvCBT#qWPHf$zGBU<>h;z(vEBVDN5-egpqfu}^hom(r
z6*JU42Y*td24XP{>~ZYo6!gD$$0WN>Dck~pU8w6?*TiQDhg}Cleha?8+?VwTB}+^O
z`(-Q$nfrrY<@7CkG_k2>GK<Xl+YN$%)GbX1Gug$oN7?caLeW!?uY<T?u-|&*aug&E
z8|`d1WM5ndA#0dQ`#o&jJE&?GPG<9tFUKU>uk_U9fHET8o`0+H+KpsPv`boPM!&$y
zG9`zDwlqPD5an03k+nQ3-(9gxVhG|BZs?$G6TI=Xw%c^Ww>*h7%6`H%jM3L8>&d6T
zjKs72BHr?9bPY*sI8Edr@)+6g4Jt1p<=R81KmWVhJv3RO+50-|4xqYpIe-YJkkA;V
zG5Zf#)SJ+7+A&nvy?pX;^5S9*Ox@51qZLZEgHtnLhJ4b`>!144SaI|?0lz+XhgbSz
z2zWZ`x`fi<(L|}7_l~zOHy*Qk{4b{t->+J)zz&`DL=X?)`B~>gDzjKY{f9$+NkP_=
z;?7)=wumlk2RXz;gko=Ko`8vtPHJ$(Gl-4lE%T_<37>RhlOgArti9WU;uH9kbUhDQ
zDhC`bdA-_w$+O)%M6yeK#Ia<{H>eq%O>P(49NTqhq9KGZZQx$vq_9$bY%Xa6)B<<6
z1hkNURz07H?~vs(UjKw*LgZg;y2|AFl1t&^%oJwBL(I13X#=(MV1Uu8uT7#fgwpv*
z%iVlH+fjP#dukR_k`sDb&W`!%w!fjFON^{ctB@*B_F7(@soIx|a<;LZ81KuTZQZIA
zX-YD`ZJp<^5zS_JK;bgJ-QdP%!h_p;efFKR&f8<#v7t$bPTnw$&bS0mQuo`!#Bx@o
z-t1L+!F#zWAI5$RJ-}y<X0j{Nfl~dRv|LmqHPRSSvOaI08oRJ<i1l%1p^tS5a|3K~
zfi%Tl%Isy28z<73bIXPUn1S?7jD`jK%E6cU=ZR+M!+Xqd^S7mX1~ze$e&iQzU_2&L
zzJ_Yk=;I>QEt+(JKWF`W6T=*{e9uo)nE0l8p^&C?;{Np~V!$C0e|$W7W{^C`2O9e;
zWT?L+&uftI16Jv&d?mUOm?ap1irMT#R-f*fK}9~iz|xtyjbF~tOlEJT*_WKWzvpW%
z&p*yxbKbZ<uylm@hL*U|Op4trccXUbo*(1teXfVapx*C(P8Au-z6sG$A5m$zSHCP0
zTn4e=>{A!N$Q)KADlWHVh2+|+N`q^)9f{}~nrG51%rN={MWlbC(zsKIzJqP>sV>2g
zd{>()*T5P`{&9jU36X6o{mLJuF?<yr!j{VvrFc7l8DWZTqy1(&z0axP9U+KrVrStj
zRQ2}1y!ik8(v$m)=_Y>7X-Y=|1Ec=Z0YRxYv;aNV1x?hCB;1L533SB4Jz~;drWl*p
z;7LWwu&qC&e-+7y<w?|QNU102>m1L&cE2NZ-B%wKqco}Y7frgo42oI4(7cGP2S{m}
ztu@G%fFh=ImU6ZnJ%0<`k^nwm2!5sB*b@q{Qkn9{a?86L32dMCB3gvrmv~K5IYHdP
zZ2|_FZoK4%H{dpb^rj+`!m-n5<w5bBWZe`+1zwE9c_U6zv^z0<s1;Ps%a|x~k}|`-
z=w_9Nrztuqvs?jE-Id4mu?~kNoR-?6BT0sw8l@(-=nu=kiOL<2mKcvq2=#cP257uR
zRW3}-WjM0`z)%sdqt@YbExM#rXX3k4-~pW3Rc6P%^*sBerGZ;&I<vAZDO#apRW_N6
zvf+O%dK!LYuS)a4c39~p&sSYC%JOc)t~W%r7gS>-GNtm|Z<aMT6=j4vZ!J=9jXI#u
zp=~W@gV0s~fJL)OH7-Gk5fG;(pyD;dXVBs)DXOPnbNcFbVf0pa*-VzTFhAt5+W@?+
zoBzBAeA8F1Q5$K%<JxCDJMYiIF|Df2kCPKs@^@<Kg_vcG!zP-nS<_r3GhECX(*U=Z
zMhT&9s#RGbw=+>;%6({~Fs3CUpYGK?a}jh?jJH*gdR?$(R|DrwccHoaPC$8CvgG%-
zoS?bcWyr`vPt<Wn-K{VW4%%(rGaJxY_@}OxD_<Uc*?OSv5~{wX6o!{r?_Em^R+<G*
zx0kYq-&j|q--4(0dXR4MXW7)Ma@&AyMuS;LAY+h{)WYXLs@x!5rO8S2T}Pg;(&$<I
zb;T~J-Fy@FUV*Nm877oKy_}>@U~o75L%5Wr6+Qgreopi&Jh72{-|N#4QBQ!Wl9^xG
zE`{GD^0I#1U-K4$rGgFk2jkyCO4sE<5TY-LxltE5_iR6HMR$xySeo_V=W&hpPHa7i
z+<%&=_h~)p_VJK=>_pLPg!#Gb#in@bt4>z!d;FZ#=JzE@&*}7u6@vc>g>KT}X<a|-
z-i@MfF;<t7i+}4Y+Bs8(wqO7_3oC|?2wPcE`Gva_lxNCs#{f&DAxAY;)MvC{Z7t-W
zBE}IF)K}G)7IN`t?z175Pg8@692=gH4B0ilx-i8U6_i(mFtMCc)rs$Mch?!b^Fo^#
zWNuX0W?R^!fI7AFc$b^ybOf<IUgN3&&-~({6EIAL?j3(iW)mPKK&}s9G0zbl7Zlsr
zRBQS!LV3rrEF{uYlF-NyF4N}X1Vw~SY(fy)Hh32iG075+So6br;Jgs<@e;AUo^arb
zV&ZpM^oiLq8%2EFkf{xfI1(&o)9n(ELSzCa>|Uk63#K1uYB{Ang~Lm+LblB-5>nlo
zCSlcROgVqA)uPMJOSJ)L@?C~Z@qfFhw~cp=qD^|;%+sLx+XbdUL$TNm1m%Ei^`T(-
zKv>CM=O<X6OAvxt&IbR~r~IlKR?_h`^Zz{7=eP`XO_##DM&lbVB&>xG+T^wT$P*LH
zK`^?!2AAR8S{!?^P(<#0%HZP*R+$;gHSAyKaBKKua8PCV=t>LFsb@AFU|czLEoz)t
zeInXlyX-Ny%b23(iSq2H{R2NnJj4ADwL7MzyJn2NWf3fgl&Vj2cy*BZ(q}EqfN?g!
z!z3P$*f^&a?O5l-V3<#z#{1YQ;kPIY)Of8o+>le0$B908)(8|!vs#~_M_2_%pP^#Q
zX>l6;-Z}ZRuDb`IpTUF2HQGh7CydZLMEW%jNjwvNv2&yLvG_P(wUtEoDc%0;#O3ZV
zG5_#5eRB$XjOaR1?o}TD_QzQIC`OU!w8KI=elNwV*RVe^R4L0EufHzn4@3<okwN=S
z-L{Jx&8Dx}yla6smJA$CS6j=i4Z4X1)CTQxO_^d%FFFf1323PvTtoJGRdstvkH9j2
z?B&2Od7ewF<AdeDOP4G={h89QBvlCn7#Q#WI5@}?IDlkTga2fzgc@}kJroq0GWI>A
z=_KhKFn>~#Tm8Tcf=>{9;+6qkj9O?~&`^CA{w`7q6@G$vDU9^w{)UEN?Lj=9-FcET
zA>{e-_Wq8zi~7^gtnSaiP)S%~m_6{kTzx)^&8))L9=a9n5mKy&F1ZcwUO;r`PEkC4
z$YS$I1(0cLeRWV|+cOqoy!S9Rs=ei$4ZFp@Ia|BgtSZVwo<kW#J2IsmCQ|0jf-b_7
zC_-`h*nYMqT-Y%#kib9SS4F#cEQvVPjx3afcf5UHuJK4M_Z#b<sf2EDk1}wtVBPO<
z#~ald3!16082+ys!*p1`{>`CA@}!?Mfy$8@B_R5`ZU79pb!K)k(6JT5QN^bI5vCBM
zd-KC{sJKavuIGSo70xy7Ybaglp4E#6E2g1A$Aw@dGt#p=ek$%bNXnR2fxMl{r=R&e
zHPqCSTuZ0}D#VP<;sMb2EE5>KmSpDt8Hj>;A_@8Q1l!ic%~;eHu0+Rd%r{gpg~RA-
zF3K1ndKx{n_IoIbqF-7tMzcO8rMmPD$p&TI{M62P`d<PKBWeJ(xbegPBfIK(Iiw|h
ziLE1OpadH%kkZuGR%)#Q2(++1BsWIq#p^XjVz;O@7I;(4`GAzOUgc2-)Cz<fbj~tP
zy6_mb<Vx|DNpqtSda`o)v!TVsP#G!y98rNqoN(0NQ+S?krU@LouC-8m1UT^JmfP4^
zI8L_t9tBSPEZgV5h9{1Ehj?P$R?5QwB60+xMq?kUq&U+70?Rt<1`Ejt6!V6*%Bkx^
zCS>&c8oa*pOgebEa(P&i;2Ssk=(!{2cr!FN;611#QS3cwyY(zov$3gWetdxrxXykO
zT|Z+Fux<i0th%Tb1Gpk;_ZqYV48Z)vhW|QuCHz3?NgvGgk~{U26YOCkb{u<(4Y{yb
zTUID^G4oyqw73<HW|v2uCGu-G|C`@!(j`uqWv|3RTB^~_2m!_Xl-e?v;ff4q?j23C
z#)64T(WSKxzN7NLc3!Hm3WalZR^ftI>&VY`VT_GN<I`wqinLh0)GVHRs<Kc!>Ko1m
z3r3DFX3CJ$?SqlE*0Pf$YK>fy*mo^#Mz)l#g+1*C5VUaj#m1Zg9pYq8Czt86>bT^D
ze$Gq2OiPE$r$H%r&0JelM4fQ`g}YG@^%>97lCxBo!?AU296HLP4iN<@z>)dahCJ|J
z5t_DG-(;$KJh?$6$8XVZMGxFhpRajQOADB=oF;>9QTv^ZTf{s(kOC>)IOps1YgC+h
ze*o?QmzNPu(U9h*a+VUq`z<;QPY-rKmC=*rG!~YJWBQBA5ekAqByQ}QH}U3LWw4i(
z9_==Ar#AdfMHQ*=8Pe5NTCsmLLv`o*64vsr!5Q4#COQH?S{Tccb%icQxoz*~GMAy2
zD%%$vN)t$l33yU$X*wI+p#+RmWY@a}T6wzx-DcROO;pu~kCsw(4I%owVG7_Ruq}9m
zFYQR;Uzf5EOfweO>nX53u|`Ab-E3{8sa*zaV^OqEM6fWWVx9WFQNK{`@)7%N1s1^n
z<MHz76A)6_Cf00GTWY-wnYXYqSf$f^+-%xmbsbCn^xkg`6?Vf7XF&6(O;=|(w7>`e
z_L?c|bj{G^h(gO70)c+1^U3d^bJjqr-6wUef~SSm73^v5r`7j0qXp`FFA9~}<uMOO
z3zsJ5S6e~K4F>n1<fZwWdf&{oD;!L>GjG<P@<WaooP^F5FTIFv=w7uGmWFt&$=#$N
zthXSo8EUm)PYL0|-P9+nFv;2=I(Y^_8rbtYm!|ofWFHM%>2B*2k(BpVv{5PMlIm1t
zq1G{1Tv&FEQu=m|tm822g}g{-?<vBo#4z({+ZTvI6RRt%6!VR^a_W$qjfN}>%RRv%
zM<r{Z!?U?w9Y3Swa$Jt*%0=7dWinn5CcB!5Elc8n)iZ)pJSh9`Oil~5*w?VaXnQ0A
zBwJ0Y7~X|frxv^}Z<^WQRj37B^$0f1*%qY$*3p-#f|Q926>So~m|(lRN-AMT{FaKS
zQ%}f2Qdm2bj3UG?+S64WH(J_B^@G&|Z$-vEuY6WRdKD)*5|nE#8ybMPR6I5j3S6*$
z=rvi*+Uds&=}H)P)qfUblz?a9XtMEvU!1>K%`UqVJE7=23G&<ZV0V6mm?W8;Lm#@c
zDb|OY>_aEM+bUDapRCj=^lM}l#V1~C+2yv!Xr478NkKc1cLRMX5v4i{attM<V@+P2
z7$1en4eDz~@jXJEJ&vY-YhHGFW>1H(^`CsB_4D93Bzmjf5h(|Kp8|NYANsOIys}0a
z)YTKP><4s(AR1E36bd?LeOr^>Gma($md-^<U9)|Rq*3kj#-chVK4Ewzc@X!HWY?03
ze2d-3-Ib0*ljw&Vhu^uJE>hZ;k<B9XOBD4B(hN}qbWl9dxJ`$;M$7etW;eQ`kx>(|
z(GRwve*UVlMUIA@7Xqvw@Lpz|J#NBAI3HWUeeMYiKmOS`rEYyxlp5Cm2%`uR3R@Es
zy-ka`^nr=+d+Etsb?46AzUb;GaId^x9nb!K;<*1|E4=lZJ$@=i$VYi9k%E<KSxsa%
zJ3#55<?fM%spw*v!9^{I4QW{q6Q>s0FfU2SPSLNHJGoG#9S^`e8C#GS4L=>ZfwV?g
zL1S#1euB&`9uzr8^9vFn7qM^u$Q;eWI%j`@5!L=@Ezb+zpDjf=!oLa8gJD1Uh`UFb
z^$ND?#d=O@th5dFAR~Bmbf(Y)1>q05p|(P{)r@SNJ66v@+!bkM=Ki%01C;^r{L%$w
zr4Fj~VU*{^wSew>?X+pMrc7kG-~w}wfUSq;%lkdGs>hcOEP>ny>vu#dLl46@tb&lx
zSSvC9P9E_S-O@Y2!1Tsxy4+P1@6sj<`~$YnXX4M=^(GACK!p;Oo*y(ggftw?M%iM_
z-|1Sath!N;?$RF9@ZHiN3JPSnTg1z2s0xVl2qXfPVgQm`w8Z}!%3x6?6U_hV@5J}A
z%e|@^fMe~5KuL^<u!3!gadtsoI_#QDCK+s}TlsUc)m=J{!|BRr(U;CA<}#5#d3Xpc
zNV^oljhtZW63Gs(MLktnz9P*$C<E+0UjBiqD@i)o>wx;<8+0nI`uAajknblxrw(jF
z17y#PTWsF3t-W_yuPjfO7yGpSt8^uhzP~l)#d;>hVhhQ|s9;=g0RLT)HSV|1{$J~q
z-A=1T_DfcRgaV=XsRKCt7<Ww)TAp-<B2!p8i(gDgV`NQ4DQ!d-9=}0nS*+Q6q<&4j
z0_+Z@W;_}BJxJkQF%rllKx2rd`JPO-pG*sRKAhA#?tJ6C7KDIMVwe6y6)4o5grx4)
zW|QZzTOQ~SG?U|_=QRmWW}rd5X%R?5BrrG{^<0qo=`&K`s0N_iafj&_M$4IhrNu=N
zrqA6I(R*q*c$&Y_$eT82xlZD6=mc@>MfCprV*DLQ*V-fOq$XW={Pi)lJ&(v|st&AX
z>{kroSk(9qJCkZ?jbsk$!wnJW7&dJ8rJoKpN3gV;N|-v5E*9gv)XCE?&41MaXN*ND
zZ_LM!!PP#2e+9gLloLWu9fez*<RUX;NLjuV8TXp}kZx^xmQ<T5xM%qRbW@5ULX&Ss
zul{Y|j!(PsLh;kK{gt9%{C=~XC*CoM*ul7bvqzCVp^pm##wv{$k}kbd*4zX`4?2gf
z>urbar%5i)U|n+s1#s)14V#^0-0|u~G|>vELwMjJ5(ZENlVO;L7y0*820d7qXS@J~
z6}iT}AX`QtiV=w<;!NwB<<QB@TH%aTX`lc3nD7_UVSX;03@%k1ED=p+?Gg*B!1{Ca
z;I#bf%~}v$Et+5`r4q#e2WvZCgXT#(TIEBF3M|8sGe}U;lhqla6>XxsAj7jD!x62J
zB))n%fYeZ>^b;zvF&T$tIxq@dXLG2#P8?g{@P<%2!bJQnh%qk7s4|&$@*6@wB${y1
z9j=Gi8%2`nD=tsJFz=Y5SnOp$E~88N&VL`a(BdW>%de!=F#T7-ND5-{gZ}@fvt{cb
zc&RTn8#3JSf<O?I31Gp3<S1jNiD06?uGz)alOS1Pfni?Kiiv?^@@eT{DrE(W^#4>U
z3yl1=%BwXcWWrUds;^A!EB&{G?XE8VZR>6LI{I$-*y{cH{g9qMDUVG3aBy%g<XhXl
zy#Dv*s@Ze<?Wr9@oHGibbUcsz0(gFt5GENrsl|V1O8rnI`FohJ#(!ZnUml@zK$z`j
zZNQIrzPvVIn7+*UV4amY!hiBdy%(tXEGT-Az>jrPCOCZ(B*=Woamb;2K%R|!jY|@@
zWGxuCuv)u7Nqlv{ar6lJERPu}!*4JE^4DjiupG0DjF$g*!)XN=Tk!X58Rl?<XN@{U
zkCAh)FnMrJZ#ue#8;yj2R)-I!-xE+1ZWLE)cJLt19dJEV%e&Ff#&-QbjeP}BT+6mL
z?(S~ECAbH72oQp60)fE^7Mu+3gun!M2oT)e83u>o?(T%(B*2?+?mg#mUe#ZJSMAy}
zyS`q%x_kBRnbk{bd(K=92G00RvYevT20gOXYFiY;h-_PA3(g>DDj%9&0f^2T$!7Ll
zE4hq%Tzrg}bcEFb3BRlg6ouc26Yu)amVaKBBYTquR5<X+i#gzT_<YQY+c@8AD|@2i
zv&h^&W8+h(ri-%i!HA~yVm-p|9FFYG_6FnJ3{tv*XYRScjYqZKj&pkb4?>aDmZ{$1
z9Ms=qIn|I-aR*SpTXf*dZu1h9&{8Yoz9>iu$wZQN`srKxMUogKu>FVFPink2J<l|v
z>$z3SfV}UfBOHg&dIL^Z)!0(QSXNBZ+Z;qE8dSgw;8<f*Z|7RlX#KIC2GV*yEU9%!
zLGr;{R!0&nUcxElcidrhmbSU}HfY|3_R)qK-hBB^LDn^7!V)CW5c1|a>2fUIML49v
zl4-@s0kW9}UJJi@W5DFV=g1d*gCrdvqg`#ef$5bt7xRS0WOaO#)0`_+O>Rf?TZw#J
zH@XhI?kU>Fr*FTp+SKYd7we=tSrMA_@v)k*HJ6C?ztbZ7&^m{jve@(1a5l<at`fYJ
zTpf9sNz1#aW5KJ}z=LOBY!jKnL0eoTOi-eHXm7z~H#hLy2rdH=z)UcwO}%JeOFsnZ
z29j66^JlDa4iVJprE3(=X|?$gFk_R?R|Uqh^4Exyb#v)ua;r+S6eVO3M<pA|5V0Q{
z6JQ{3s3aLN<Q*g}euyPf5kRjcYZ9q57^{^=(O`Qv46sTk#T+>4&Jtaw3L?`KH+^4c
zDeI%8TppxM$0_0cxqpI1C22d}j=~Ny4z$yV0IH-&I`-L8U88nl*}<d_x(gci`*l-o
zCw|o^^<%68uZ8n|=|Tl^50j3QO(0odH+YmfqVpgfoA{4L&~NCnpJcW91p)AfyXF<8
z>jnw1ggdSKDr&;Ceo0MpzQnY2z;~KSZskU<7qK_dMaTCv5k8;h6%=FSEou@40b`-z
zl0v`6ebE=Tn>Y1z`6-D6=Z_alP>hMaxlt1*6_o~Oq8p_{+iDm}KBQ*12;f6=Z<5g=
zQI&ELu=8=gWyoS6WQQXQ)a&LMD;<k?*D0L*EHWhYjaR|jkv#5dOttd@@BF%Id|U@h
zLcEnQbDHyA#TrNiBdCvxuomWhDR6+WKlV3Ytq#(=oI=~?Da_ef>yRdz$#=mU8aJ(r
z4v{>uo+)Gr+OcH~2wAxyeUfQ1l>0(`=1w1-N%)@eehG2Tz$x*co-#cKq@>tOK~pd$
z)Mih7=5U=4nc&`N@H!st1#O62)hXiO)_tS5_cf*`s7i_NO_!dBEqNit*bVI8Q>?Q&
z5a7aH)C5(2VXLy}AmnD#?(?X3tF4Pr@4>{Yc{v=`pu<AV^Zg1oByzy~ol3epJqWxw
zSunDz#kvo0sV0n6O%-)voH&ommdYYPlpHxuhG*Lu9B>J#c78P$XI?3(x5@Bv=yef0
zi8xpa68s)__efg$eUz(Qss<2@`YDFAJLfeCi7WAv{isyaL>A|$J<^htJ5RLwPm?La
zlfwvbe!`q-<fxFtD0ahO7PtkU+Uu406$}otfJZi|Z7-wKy67%5y1RAD!m2~tcvk2h
zcm8_zr$DL0*dDSs7C)$#*)SxYWfmtFg}%6?I55!njqdq{(Uwp?;n5E4%-lM_yr)=!
zNgMpc5%_)+J}fW-El}dSAT;MT3t#I#k-p#t$+vH_9yja5TSzNi$QW($?QehB|CS4U
zzat7`#h~&o4>bZ3Z-KPZj~u-FJn&>&2F9MBbAm@DwA<P<yfR`q-a>JZPe@fKbuf2K
zadH)$b3WUtPmWQm2#tFH{D2MYU-iBb4?H23dC}oc@|#A&{0G>lZ<TXG3`wFZ#>S_6
zwH&414jF4eAdq^aoDrT5zn$S@Tl(5+t;S$LU@`!++K;?JE&M|}V`eYr$AI>XMN7Cz
z@Iq;Vmg5LH<JqA~TBrI?O;W?cX!&6WVIIDZWd69!0=tRlY=JQmK-kPROHA<|b?e1<
zqw0+_s~h@*ngwB<zIaZ@dzE`@Q61IX^Q$}8NP)j@JW-O%TF&9%Sagio(J{nnt%Z6>
zqxnB-?6&*UF_g-~&(|f>5;PlA3YBOE3)ygbA3%8XdjSN<?;rpal+khH#Q-`QyIQRX
zBF^yScIzMY^yD`Cz#&H=r~=Q>AmW*|t!fD-lR}Dpir!*WPoz8I#u0><6`)1tioR5I
zI*8QXRc`Y;#k~9CC3$Fnr4Sz02Vy~mE+<}+keu`*0Lel)Qfg%C!dfLDNDt$brAn*X
zLVk-0spQBf`i<Z<riQt6e}0~~zy}j;a=4XNa?REVj?_VAAm&F9Zi{9}6oV1g2xXjA
z-%cQ+OqI}*N|)pM(oMR*^<_c30w!{V`k6epyN9F5ZogT>P1>DfC&4veV&2-S?{==j
z&E6j6YtFlty-$$RPg2;ZmrgB?StZ{^zG>@Ac#U!Z1Dm!jvxx@8%1QAL<It=&R+}nZ
z9g`*K;F~%mfrP(T`O3bYyXNIS@C6s|@=f3L#3UbqnS(;wl(Bq?GxEL?Vok$cXmL4N
zAlCrwIFDH02zd}REIRa%l`J`3WCb>jQR+y@Cw>tjT)CkHT<J8nDs1#Gm}`W~=r>C(
zGr74YXX_D3jT_VGarfCgw5al>jSU~IFD~lMOzY9*03(%kgc8=D(eF;wRdkx7KMWl$
zoTdZJrISeXTW5wSdR!!@t3!z}>h+qpj60$^N^z*m9hXzeXp|Y)CU}@;d<^D1!+F`<
zDi>2)^PA4$j43=b^9?`&5>!e{ODYuF)N=rc#s$W=@&!W8K0Lm&kP=737UN(RjL*cV
zg0fvoK;&(<flYyg$d6?Lg+n855n=@$YVhdV<Bg6P&ywbIV#`J@q+$(|urPma(mDyg
z+Z|GuwIZsb|E|ox6I?O>Y8QVMc`xUkOkrqXKomti^;>xWU6%dmS&5ztUy{$!!55~e
z8!Q3R{P>oIQU{BSSa{GyzFzM$Sk(6GN!y5=Q=rsukzdh}$TCXtOSb+FbSW<s4A_G`
zP8R$$9&ei27p2){BsFA5=BgB5!BI=yzd8cc^K1dHM01`Ql@;&v077*PPBTy4g9*yy
zp!Rrv8kDR(@~g#!4s|?s=A7mA#2l`xMwy#}tkJ2zhf$Ko%^(39#S9;?@ey{rf~KP!
zwSo0#>WW^W?GdB;HGwH%eJUGy9`c+D4kz8`a#QV;4^FYVcY#G5U%bUN?u8oJ)~}#G
zp7Wnh5`WloH;#d=^d&q~KE>51)|mVhD<xTsEdP{X#S;D1Wl#JZBQ@=~06C1H7#Y7r
z0HiRc#(t1zR56k2#d1Q@ILe<gu++-8P69lI*^pLbGzd9?t0>Mzb<M!z>H);z(6l!1
z(uU0{U{54+TiT}Qesdlih?(f4BD>IvDAnDoXN}f&h|qp6CLLpTk8)deRKEHEJ|}4m
zDm<V${|-;?F0mzep(&*~SG~EPE1hp5lA9<$bET=Fsqg1){Zhu0IvO(7d*psKCIrlv
z@p<j_G5`JOHJN(w%7lz1)jHGfj4o6$zEhm7tBJ3S`XY^MC@Ya`>r^5KIML7y0`TiB
zVtlnd2UnM)d^m@&ovw1P_O3QLkF%?bTLmm|nE@!J+cUqfx7wsjIXZLDE52!Qh^UM;
ziJ`u(xbSXaY3f%fJmezuZ=#qCWhn<{!u`;KMC!rikd@mloE+s2P{<CEtZk_(YR!)|
zqb~EO<V@my`Neu$h!zDP8rjdDlYY@0Iuh$<6aD?<AX_-}+vtgk198zPENRBVYT*dS
z03k?QLiVhZ?RT8-@V7Bu{e9E~uZXS15U5Sb=H#G)6^m=XlCB^(G~5(+ULp=~Z@}V=
z?32%n>YUJRWcmyv){IZDVOFB~J_(Fzb$f6as}YY88K~%f4hJq+vwhIyHCE+t#n)G?
z)REOE7gISp$3xs}u8IDLRCL8GOZ^%-J%=kM3z}0^EkjYXAt}d5*(pQ8cu`T*^V!k5
z{p4`EE5k`%@iolRnu0Z_#HW>B=<&IP`pju@P3B5I`89k~EKptWjCxP!o^7dzdg4ep
z?jG-#m|}&4Iaqhk_Ig<fwCCgn*Q)T@jwfG=7n~9NTp%6ET66c{oPLi&W<(;GuyNF;
zIORgh!68RixqM<GYa%PKbviWt4tClLuif@W*b7MvJN`_xqMKXkg2J5#h&|?waJx3$
z(JtpesgR(y^+tnQ3_10RiCbPnEHk!Lpu5%Y9@UH6U&Mu*j<h_!kv88B2E}f*iCmdN
z8U8s3q7ibs{w9W*6Q|zdPKOzF+#N$IVsmz5NTq53d23BpTTAx3Z0&;f5z9}4Mrvtg
zB2U1K2YmlxQGcf!@%HE~@Q$kcgcHuUCaf^K3kjdhFt#HO62Rq8W#GIy`O5;HTNrVg
zktP|tE*YVDNY)UOv&5fz8vLDnRdCE5|2IFX(_3#j1$rRV*RkU#-Yt>UqL$>uS|(Ek
zm_N%S*`#yUOtS2HC{KvK(gnY@sA3|t4~V(^UCDER%2S5)RQ0wFXpcL?`U5`Yr{P^q
zO<_yo2%^t4oK7M?EaHLJUQ0*>LEGh+b5c&`Na)`4Z%(?*wv#Ymyh|aL)*z`CfmHP1
zVYCVj#jvP$=Kf7HF8%PKX}jl*_lpRLAI4QAYo61*KKkgFf9<PAGNEws)-8w;`=vU`
z3*UW>_VS7~q0#_?Z@>zJ**0a*h%3`^w3)XZN8c|Fd|ks;b}i{>HnXh0h()@Ypd#fh
z(eE+TOhmj0P@n3xwy#BAqg8oM+47aQ);wJ=J7&6gOZht4ziV)j^OYtD&T6tLTC4__
z+yF=M*b=|)HNxnEkw;@Ii#n1gNVIdz#ABZ^Xf2^Ylh%U)P6a5*NQ`=@fR-rTJg2xi
zg@TT6O)j5uES;j9u!LQzMst3T2z%)gH1-Q6afLQWTzb^!C6j(ZJxut@nvYlN&Zzs1
z(Jj@?*i~cn@|yAa^A%-@P2Jtz-y(NG>H#Wv%UC&PLM(6PW?+&S%w1@IaeJY+@GG{b
zx5>PJ_F|>L8m1Y@#QjS&=<;eZVruk)xob&<-(2Pkaup`xM>6%-)=n6svq%jO;;oUD
z{Hx!3=)Zxi{g<KHVo+|3J|=&Zm5|4~zR|x$<#QafYeSx2mUlQjM7%9j=2c1&wz3xk
zCXAo$z-Svzb8-RBJf1-|#J=V|=Nt^b-AS~{MmC;Q*X>9K0$RP5ZfrL>jH;_jV(RjV
z8TrICk|sSEsqz<LMt*N!zzQE4eBFVo`i+uNi`0?#dR*t+pOMam{wvXFIV{x!R+cBV
z<XI*&;sbj8!h0)W->jBOgn5Kl4tH#K<d@qD60o;Itib3GU%gJib#TOkyAmDGkQal$
zr|)Hz?*ap-fg!ipFjWeB^{AiiLoLi_m<A5unGza`mgJ7ZvB%0JW4+y?6=;i@G$OBm
z71kD3aKyr7^lVHnt4L`H#ceLcoh?-F#JpBypBR%_1EZ!W3JiY~g!$F;(O{82&yw@Q
zG%~^U*Nv;M5n8Ox@g~QTc(BXp7!;gSd~hogV^+7kG{8HV6m_7#y?D;x?t5msdo^z^
zcaA7$bY8I$A?{hZ?;GEgq<>j`AyJs(P7TDsvHC6rEDvxaKJ>{8a1+D|!euR662dIV
z%es?An^&jLx+A*Qb*5ul34M8U0u9I>49yTn<R+1!ZK+$39!YgeZ5jr7P-%D9I~;gE
zo=*JGsR48z`9c3ceK%&xjV;4-cu_D}`psY%Ct4!V?feyi-m$o}!wj#M4vDDRsU`Dy
zO%W|pM3Bv9-;4A65_;dT5~3&yIpc=%a5LhZrD#z@!Fi~Ol#DmwyqMKhK(FPfN$Kx~
zz{|!DO+-f@NHT-mB<8>8v{IePSxJOmBGm{sx$JVl%zqEOXRHwnbf6qPr+j}b@h>;T
zH`wCixlpYr3-p|m_wmG<wGR(i8vkfw+WSyXez1!~&K&j~JwOuuOLk5ew}uZ&zbw9M
zcni0?E#*`hzq{P&vuk4?+HmEZaOw_hix>69xmB?N+^SyRg|8M@gm;!*7Bbu0?qFW^
zL?97PkX0q^F)8VC7t=<2VlonGebHv;+1&qF-7i+W?jZp7fDmI=(*hf|<^f9|hM0_M
z>})@*SO(L&44$T~3V=6VtA4$Vr)}LgMBr2e-?~);A`4o!<18B1XBrK+x?;V|Um_c-
zMbZLyEZ#=;zK83*`r5SZS*Q2Gv)BS;Lls34Ny<pexPHKLU<PV0pCgAQmRjiJ;xYDw
ztT<0>nSd8jf;RYd06+oK*G7Ei&c+}N_%>phZw*~slL-qN);w8c0^Xm!yOp2kL~>lM
z#Qgkzv)puYSIBs!i{$P-l|aEsr3BGN;wqtBO9J(8RS<qjN4#O>eMw<~8d$gXKC<bq
zBes-#ev6kga_CuTi;wYOE_F%-L&%owE$>O~PWzcx+VZTaCJ(UZ1EJtgy&lz&#&;Jq
z;6tanOw-frB`HB6PhHadCbjd5GggKhZlB$$gNJO>_0sF|JvT@m`4Gp!y&8>2eDlI3
zEww+Z@;PKky6&OkkR|Rmt55vdAdEG(lBU(ro*j0CgO8L=q84J{IhAaL&h%*S{%BG#
z+?@QvG4nbCjxrE$a921y7Ntox_x$y1YS9vmO@_q??k`v}w1b78xkIXPH*ia{cA0$?
zZX2_K^2&hOt38+sQaBa+8LSE%*gV%y^ue2F4J6qo^8B`OHa>FlD+M;rA*km1Yzalv
zw6^xn8bsn$r^m4|QJG`WViim9q-|jqNqdew4FnFUUl?V$NCB?GM#6GTh`X+8tQZ)v
zGuC9^ziwfVb|8|e@Z}`s0kiytt=j)(JEt%PIE;hJavIcr?k`y$iKPU7sWl!*WKIdt
zp69S&S!W9CA;W(Li;scyfO({sVCSB?1li5KM!1icr5Wo+{*fK!p3f$|fN<@yvn=Xz
zEVeT;bRr?~5%$~q98Fo)7shw_u~PaWE-YH(NuhbBw3wI{)<xs&`Hs37#^a7}!0;hL
zSE(3{wPN?NhFI>Y(|}#zf`d!4X@_lS-A-J!S+iTi0GHvR*i0&mJvY6Li42$djGb=D
zNxfUpL&AxWwA;`9#kuu1jt%By6!#-Psg+llq87|PTTNZ%!Y@z|jtp!wR%%kj-wSmW
ziPmYK8E_m6m`4gOVh6nuie`dM&PRDOE48qeIpZ058%3mY7nCmzEZ?y8=z|HFAs+V>
z&n!xjJDdpM)3zoeMI-Ly#yIsdMv%&Gs*(I*a2mJ&3r+RC*RPMpEj3%Cz22-tDq){Y
zNkp7UVz*;Iv16E-6k2&eb0n}~;4kH6o-C-zT#ID9)$YZ7$z2ig=^$zR$CqqpmVJyK
zs7axycMcWLP?`j<7jRHc*daHSat}-TIJ8q#bkTz3z@;(o>U_YnnPU-Y?8rTfiO@Q~
zaQpj4$cwuMjJs(P)h|6tCTeQQ(_aUoM^nl3tWtA?O7+i3oT`1of`r{s+_JLXp(SKp
z2?rreaQA&<9(<ej^9Bn8zX6F^z0Pz16m7OSVJ~Yh{*6SByB+u}R)xxR6+Qo>^n$p&
za!BA8%Nh#WJ3`QdK*)%lkLVg7jcuhVMCN2N+JozcASZ*U)S1(oO6mkDCKHZH^sP+9
zu)->4oI+Q2@>b)!Zmg!&lz`OqXH2}KT$IC-;HVV;bBAodhS)Cq#XVE`^`>NN%Ous}
zaqb~j!|tz5aU@Jj$6`iuWP;YgvA5_?j|)5)*R|e4^JI~s!@!7w{N9p*jv@3wXm}lW
zGHrr;ER2^t$=d<h{EVea7=&<`rFGUEe99A(Z~Ns6!>!re{7{n#0FHn#*@wWBvMuj7
z2k7=jD!Q3>l=oO4GW}`HEAsTa){QRbEKlA8f2H|eZ<N0QB0C~VC<=ux&?PXWK`56?
z6dNMd8A|Ae3o=i~#862~l=OOmJvaiVH#lvQ34&M1Kk^W;>yRqMf}DIHOrkBGH0!i0
z4~pG0bj}#}U-NA*@d5=Y=FD&sqH_kg;>KJ*wCeO1Z~HR5VN{}dNATrmf|-raG9KDx
z27ue>I|+crgeTriKbm;J;6;4BohHj{YQBcHs-b47Meb{jb2`ChyIo{@pw=(~SWihz
zM`ZEad`dQNROqv0-z~}TM8Z~r@ALWjiHaY(^1Kvk2}?_eNb|i)^bs{}^(oj%Zp(Cv
zk`aUn#8K<u=kv`Bf+F$P%0=FV%*`Bt>c*TeSdSQa#);5X(MTMcM}-(8DVy<Bd2H%*
zK9#df$!>P1@#yk1qq3_i0ljjl99XtenqHTu6j=y=hHITYw{q!r4K3tjkgdd|ikijf
z*~g70rwr7xw@ju^1MQBuQKy0TPuCi!OH*9It||!)?eShx_H+cNm==P?@vacJs$U!A
zXLAJ$eJq`2mzaHXjj=1b=x%iDL>dG8iJmTbqPa&~>p<f!6J1VEV38xmWwrb;`!{#~
zj4mr6v9JF^95hlpiM;xJ{OR+2i=np$-S0?GWN>2>H6%59*xzVWvgLH^UdmeWT%O9x
z>dPZGp~%P+t_*N>mUnQF3fN$LcJezhpLFU=Js}-&g|Iyf@D%YcU^OJTB<DJsJ|0z0
z&NF~&7cRpANgs`Cf!WUFA9qL8zGgzb-8OosbeA<t-s#Ei88vW%!8OIjo6kcYn8L~q
zx;`KF*4e&U07LHi3M)p7*R?d)X>pEAU`U78bsZWEySTDyi<skE%P=XY_*WBN_cPp2
zPeJXvz}UN{Q|U@qnzL>DIr+p>w>{5gDu@ZK@98J4ennS!1Kl$rfYG8;8P!V<<~`T%
zOu{6`48(xl2Z->G7?hs(Vznou>}q05s@L0@fp^mI*o=i2qFprk9Vex^erF9ZC~%yZ
zY7!IsmY(V&C#Gc<HOliQ`<(K=?VZ&d>F+yImvFz~S7BaHn_*thnDG&klg!@F*uuco
zf)HFI+IDd1fH4%Et`i3M{=8^oF|o@i+F4vjfEJI>L|6Aro>!Wgk<RUy7y>kureUUc
z<GAJ_nHAE3ycnEojVv!w{MV4=iF~D2zLP|bxt^oEGqIC^&=0pry@B^frQOA+68xcK
zyLUodX}Q^XkkuynC14f>7azU5E3{iC;>QtAl|oRY0<c0hj0h+1ebi{MBVnS|^S2mR
z%!rBU*Um@R&gbvX;6pDc^qZAWjcs@QRfv?F(|h2Q99Ex&wx{N@{EW}S-FX|&?wmUA
z!*_|dfr*fLF=P+YFFewhuG-S?;*eh2>z(*{&MoeAJNduj_W!Xv2c@?Vwm|nzn(D2(
z8#v5AkLo%qT#}%Via-_N^1vfCd<`72dZ=lhTP0!k$5muA+$I7v{=Nb<JZ^f-lu5o$
zVEvH+aeedl@pO#BDeCVHY*pE4dT~E&i!{RogYgu(^~{lxp=6hQ_wD2R-xqhtex4;v
zpSv+JMXG*UOXp^$k}-1U(IU%0YLEz_dRcyYt^zX?xma3#msHi`NuWx?JD#XSqcLVa
zgz^PIHo!2r*T@6ldxi~&r`?vQZ#gugb|o$|W~TQVc4mKg4h9!GdNlZyb!FK#eXtQ=
zfEO(VOcAJiOy&2z>MwO_?h0nOqxsh7M#>Xoa+`2q*RoCbitX28K}*|_Q2uO9<4$sr
zA=VMkLT32AZBze>4(L3B78u?A!OdtVjK;HM?$_OJm#Fx1zK)w=4!}YGrw5PNu6|+G
zv*4Of)q11cVZ0&^@3bH}pBUJS^~NeA_(OtUZADwQvDC4z-E8UbEAnDop{vx2V(>C;
zym&!Pmb84Nj5S{i(H!|q`@m^gxK0I6!U)zC6<sk|YS^O0bYr)hAyq~4Y`tHN=JW_&
z;5g$P)Y{A2*C<FnGZ;Q^Iqae^UJS=Kl570Rc|RC0wl`;Y^({Ta_60>j)EN2e0(VOU
zurtKp)!@09T+S=2m=LQf&`Km5ke;8e+Y>bx_6+R?kB~RNUGiphEmEpXyE2k#dM$j7
zr|eb68fy<+h8RYThTH~kjx4`qg0IXWB@gl|_dF)vNzdP6uaOlGk;*PBa|@M_>cWH!
z_s2QhTqFG*5M~zmHyR|TX}0Kn-;A)~iVRYevHWBM$z<T5Rw1sp$`S2dW50j8BUUq6
z8~tUiAu~p_y$`jb^+5-fg)o64`^bS19eYiDU8vt%m7`O&l_F+*-K=7uqzQ^tu_O*U
z?q|Gk`!52s^{RRkQ|2>sc16H!iR_22k($7S!b?NT+q{QdiJS=+_jf3a6`fA`Z;l5W
zp>A-E-!r@~?=Mc?bHaRedefsnl%4}HktcDXASJ~kvS42|fKh1}ISo%@cPRm)%wm%A
z=m<|ERg5@k_8^JJbBC#ZN{hm&6Z%O}PkMWFa^d9~V#;o55U&M!?Otq9WHhCzU#+7V
zy_Du)Rj*xKrcWx(2{m2h<StS70>4oZ+FlYc0@$QV4Wu-afk{ngZ6=jdJ}7W#_u~yD
zThum{8Z;#dM#p6h;+TvbrzXhO<r{uz9%bhD<zXfd$=07MGAOr2NIjz`J=zabBV(qP
zYz~|7Bnpw5V4f|q*rA?lvUc<t;oAJPq*r4FDo^iUgug%rz4BxNVykMlA~^_C*??GA
zqMVEb8j~;-{9!S$SCm;jtJOsJw!L|trPNpfNOM{b-+e|0fLS$D!YC+?J6@tU5~hK}
z0!&*5okD3n=|~~l&1iL}h`otu5woUY9!lR<soKnvuA*FLJgkypqM!GB9Did#B<5n&
z^Bu&I5b3DWww~kzf=zs1Pp4$wOHWvQO(yDRU88dtkz?#Rz@NbA4E#NmNM&V_x*>|l
zs!V5=yjHXmD-a_z>Uf2?mbed&7c53@#c_t3D(P?>ab@Qc0n|Ts?wNQN98`vH1ds@L
zvr4y`u<COp)_RGF2+AZLyvDxr9EhH(xUktzxK$+hE`!7hG$$MeG|Z|^41dw}UQk8G
z*hUOIH6b~4{G8!0vwuIU8ejj)Yu?tiJO$~Er8HsM>+1YC_A_ITWl@ttomwpSIkxq?
zGbD@IjhWRu?CbV!)wFIly7Mfw3DGFTz?_zeKJ3hIm*-brF#tj9;{ua#2r!tFNd2($
zfp^%~BXfQNXclcOLv1MSXWWZyPM*)-_3n!gm{g;dfgG&RFnfM0h%~CuT8CXoqFy0(
zZV&nBe?oeT|Gm@q8Xg{fJnWolyzFLD9U7YZd5<+&7_NzDQ%tAXZq2#q2*F){7casU
z*SRxwcFt@pMXU+!isyWeH&xm$AbcM)s!BVmlAnGSD8geGxEv`QdT)`a7ugnq`V!Bc
zJ0&L;8}^VU1cB1`%chbU*=rnn{U*<b7p01mE(#oOSvu{GV4`#`ZsKt?Ft^G+ucd4M
zm`c?1jdwfVMovCPkkHBU&u*4`!af=78vDHrr$#1{X(kYseOwAZkLQ-ORABT5xdyI_
zOeJw20@XXgxZl+OTKRR&-(erO9S%aP0A%R4(+o0Blm~V!YVqL<Qg8|E`|y&e(x)VS
zwnqhEdpApho4y#jEO6XP+^k13ieDpNE0BJ-pED0cupZB#zDhgs*-2Yi0e-xPbA;)Y
zCtDEUnH|Zo*&uaepXA^}N!HCc&zT9*YITz4673viC~*_pqcVy5Rd&mKEAFkl^p@r~
ze)bD{^)w*Bbvrm{vGP@Ru~%%^Z1Mw5Ua?3UicBK5;gV!@S}dN-$_J#j9oK+Uy}s<S
z&zsr>;|oDudOmy2c7?mUnwyAm6(%Pckt%D~(x1{yzP=E)5mZCf=WIb!LggQ4w_HbI
z^G}nmu25lSyv1BDaETaVX>Ld-wcGxTzG+HR-q!|9pZPxSg0`vECn{VsO7Hiom@`Dg
z>cE~nGZVk)0bjMkyEB-q;Y6(UIyyNi!GReYT|Yn@h%azysEY3Gd6;XJEjMeJFLr#q
z;`ixx=a`1BMepO!pi;>25_5uGpf^dRm191qqXlk&{#rX5{GA@xIf@6W`>eCxPx;Tw
zcd#2kayBHpdq53npszAR9Zs(dj*(Z28;P~@rR02?h1D*A<$`j1#*izOdq^HHuA_UN
z?AV{gkrLZ%HI!NA%_oJK!<5S56MKND<`A<#yH($?(z;4Q&)3rA&7TCB=lq#`8CiG*
zV$mD*j)@keEaHWxkQ(9KkYDW7)v~m|h+nCY!XrSF38A3C{P{s5Ux#uf2Hg_|pm~Kw
zA9YpsP87g{*AuUB?$r!YzQQUac8i)>WO39W;#PRDXg`0=tS2}2CcB%A85M+dO6UW#
z0&nU1D%t7xPE^dgjL@+X8i7h`7uQB+wYS@qkEMHcvvB*p&o3;R5INl8Furj-!m)rb
z#VRSz5J#1c3cm#-URLRjBtKEO9yt#u^`Nj{a8xKjMXt%z_mk2z1EcBV(MI%^eZ`&(
zal^&2U)w5aZHrm7HHpk~vq+q(sC4<KT6(#r4(#sBgBeUXDkHBrxIN--i@HX;5YG(B
z*&<H0O!`6Hnd8;YAC&~O+Bng~7L7ydx@|SN8MSlY0_t=kK4XkW<+I51a1x`T=|>CQ
zk_ce|L)Xs%*c>rRs-E;1s!a*p7T}lfQ;Nz^6?tmrTYL#wRJ*+9QVl>W1F<b7TXduo
zuWF52jK+5kJxK*_RuiHr)Qw1~e1(^)m<p7oRfsL7+FI@LiGO^C#W=A1xt0!&)Q7Bj
z5pStPaRy@e8;o#=k@^nyv4U93lRojJ!e&qbQ9q`ER%MF)6z~|i8QvOnVNmh93R?u4
z4vocH&Nt=1x9$BRX~_^Dq|z`%nVLKQq2+BIoR0#7959;SVg}=b=3YWG|Mx^b@Q=dz
zqJ*SFa{Ps=Y>Mc@II|y{zS3LAMsnJb9RfKbplbcRS13{Ph038eR#D>3y!9{nsgps1
zz?(@Sx-6^_7DgHMz0Zo}B`o?b4|au$9dOY_&$3%399q((L=#4m4N~3f@-=kX=1(*+
zGWH2ghFgR#?sfOOn55*0@3stg#X5Y%#Ye+jz>ppC;RAtr)rn<QEwm7EFd;^;``W#t
zH}Sl+{kBM5n8+o9NrDt|zlfs3rBF;H&<`?ZPDctRY#Nro^F#6oV+_b#y@gZ1X4^Nq
z_P@Qk&-`&BrH2)pPuu4<)=-V?l)P}%*-U{3QrutB6*!`3Sl{tG6gHScuc@{`m}MJG
z&+;Af7ezHv5NzyhB=2ry-erbsK&_9-Jts1LscH55>s!bW*1NKu&^c+;21l6Z##u3|
zNf5-+Z^FdVvjaBm!Q6i6vP{hI!{_V!^!?g7GcV}8!n$T8naoIFfi@5vrq;w=;~xqJ
z82D7gfbjem>u;XEh<hYhHszs?r*hDX8V1xnLaX!t7xhm->;Fdmdm8Hx7LEY^uhoqH
z9Qu!Av6UC|&j*(tMtTWoYg!<RHh$o5=t75nfr0J-j|Hk9`A@-txsytPetz$433a>r
zhuFVsK(#6Vt47;@YFIj(n%i0YKP%!xp`g(=6!<%-y+2Wt+5g>&Re(7l7Ydq!UeBP{
ze@l%&1uQ65k`N?`gab-%$DsMc5@b1engH4hM`#aZ|BHm)Yy4s0{sTq@u^}^qusi;$
zuyd&AQUnDoKrgx{72FUWD^z!qKT<|0^jb24Qr3V{=6C{pi}(i^*U9*ZqgXdyfIxMj
zx6nc7eS$+qc_f(G!Ttyw!ZeZp6Bg|Tn#<xTK}sxWK4Z~GkcKa%^%k^6QYba9C)93m
z9;tl;vmpHGILNV!1fj;Coe27r7F62xSMNrg4<ZPmhYSu_e>pb)mqLwyJIQ19<1S24
zE(GtfEurPQC35I=9I`<Fk^UD6z1R4Y&^&@|IWR$Q|3mpny7?zyC*DV}2`m}t<$q@7
zX|m>j&^7*kLjOtKO!mma--+!0<gxn)2W25y<`31l&Od4GaQ}~t{GAg7+Rvx62vU3G
zCY2HU|5W-r0y}hf6ME8^i}qus<1X$;uAW5peggE>eFVPhAfx^>34h1!go2)m>J%uu
zn}_Dle)><mO&AzxFaItz{(!fjvu?)6@RT4*2noWSl&vX97()42?Q`FG!V9RhXhKDc
z`|nDBCMU%d<o}iz6f=VH2z(OH@(GZ^98}r=3}oAj{|Nj$q$E`SUOWNfT0nuykDz~I
z_rbu3Jpticfiwm=K}}z9K<xv6HNE=`^QQvT5mN=q=TjaZY@ie=K+TrKAd23<!2bkQ
z`#0ryyGK5)`<WkE_&W>>luyAYEY!O~SzrN`4^TV;{|;dR75G1|w*QtI|2g+ZidjRf
z)PJVn-|qhZ0Et0keUu=aUXn+GPaI4C3xeKj{Ez$|Tb_-<1+@+R)t`U-7XQ7}_5(oT
z!+d|u>*(;GRoWE+`qB8}pDFv>NdgAu&o1!aQsbWx^~kt@55wPs{ExZ&zuS?Gfr9Bk
z7{hpv+&?*F{4Yu9y~h6}`;jVZAJrr9$qCLA;Ko;IH>DmyPt@j5Ks^Oe`6GpD(YYRh
zf9tfMg3A5`2rPk)1C+md3{c1LUxW6ywhKD9PsJ;^{BeYr!-@Wk@Lz-H-}7hiJgT7F
zQ-D$+<d5zBqqF$87|&Keb~Cb%=`Y4$M3a4>()k-Iox)ETqi6tWjVL^V{{9~XedqE#
y0i85HQj;9|Ydt>sS^NYj-|`5wcOnBV{72TGZtwq~Yy216p_@H7(wmMy5B~?J)P_3%

diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 942995950..e3f1f1c25 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,27 +1,5 @@
-#
-# QuasselDroid - Quassel client for Android
-# Copyright (C) 2016 Janne Koschinski
-# Copyright (C) 2016 Ken Børge Viktil
-# Copyright (C) 2016 Magnus Fjell
-# Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-
-#Sat Sep 03 00:05:21 CEST 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://repo.gradle.org/gradle/dist-snapshots/gradle-kotlin-dsl-4.1-20170712173431+0000-all.zip
diff --git a/gradlew b/gradlew
index 9d82f7891..cccdd3d51 100755
--- a/gradlew
+++ b/gradlew
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
 
 ##############################################################################
 ##
@@ -6,20 +6,38 @@
 ##
 ##############################################################################
 
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
 
 APP_NAME="Gradle"
 APP_BASE_NAME=`basename "$0"`
 
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD="maximum"
 
-warn ( ) {
+warn () {
     echo "$*"
 }
 
-die ( ) {
+die () {
     echo
     echo "$*"
     echo
@@ -30,6 +48,7 @@ die ( ) {
 cygwin=false
 msys=false
 darwin=false
+nonstop=false
 case "`uname`" in
   CYGWIN* )
     cygwin=true
@@ -40,26 +59,11 @@ case "`uname`" in
   MINGW* )
     msys=true
     ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
 esac
 
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
 CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 
 # Determine the Java command to use to start the JVM.
@@ -85,7 +89,7 @@ location of your Java installation."
 fi
 
 # Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
     MAX_FD_LIMIT=`ulimit -H -n`
     if [ $? -eq 0 ] ; then
         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -150,11 +154,19 @@ if $cygwin ; then
     esac
 fi
 
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
 }
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+  cd "$(dirname "$0")"
+fi
 
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index 8a0b282aa..f9553162f 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -8,14 +8,14 @@
 @rem Set local scope for the variables with windows NT shell
 if "%OS%"=="Windows_NT" setlocal
 
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
 set DIRNAME=%~dp0
 if "%DIRNAME%" == "" set DIRNAME=.
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
 @rem Find java.exe
 if defined JAVA_HOME goto findJavaFromJavaHome
 
@@ -46,10 +46,9 @@ echo location of your Java installation.
 goto fail
 
 :init
-@rem Get command-line arguments, handling Windowz variants
+@rem Get command-line arguments, handling Windows variants
 
 if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
 
 :win9xME_args
 @rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2
 if "x%~1" == "x" goto execute
 
 set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
 
 :execute
 @rem Setup the command line
diff --git a/install.sh b/install.sh
deleted file mode 100755
index 2f12876bc..000000000
--- a/install.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Update submodules
-git submodule update --init  
-
-# Create directories
-mkdir -p app/libs/
-
-# Build AndroidSlidingUpPanel
-echo sdk.dir=$ANDROID_HOME > AndroidSlidingUpPanel/local.properties
-cd AndroidSlidingUpPanel
-gradle clean build
-cd ..
-cp AndroidSlidingUpPanel/library/build/outputs/aar/library-release.aar app/libs/library-release.aar
-rm AndroidSlidingUpPanel/local.properties
-
-# Build QuasselDroidNG
-echo sdk.dir=$ANDROID_HOME > local.properties
-gradle clean assembleRelease -x lintVitalRelease
-rm local.properties
\ No newline at end of file
diff --git a/invokerannotations/build.gradle.kts b/invokerannotations/build.gradle.kts
new file mode 100644
index 000000000..414c80434
--- /dev/null
+++ b/invokerannotations/build.gradle.kts
@@ -0,0 +1,3 @@
+plugins {
+  java
+}
diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
new file mode 100644
index 000000000..93cdaf5d3
--- /dev/null
+++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Slot.java
@@ -0,0 +1,12 @@
+package de.kuschku.libquassel.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target(value = ElementType.METHOD)
+public @interface Slot {
+    String value() default "";
+}
diff --git a/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
new file mode 100644
index 000000000..46a4dd822
--- /dev/null
+++ b/invokerannotations/src/main/java/de/kuschku/libquassel/annotations/Syncable.java
@@ -0,0 +1,12 @@
+package de.kuschku.libquassel.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(value = ElementType.TYPE)
+public @interface Syncable {
+    String name();
+}
diff --git a/invokergenerator/build.gradle.kts b/invokergenerator/build.gradle.kts
new file mode 100644
index 000000000..de61f4ff8
--- /dev/null
+++ b/invokergenerator/build.gradle.kts
@@ -0,0 +1,18 @@
+
+import org.gradle.kotlin.dsl.DependencyHandlerScope
+import org.gradle.kotlin.dsl.dependencies
+import org.gradle.kotlin.dsl.java
+import org.gradle.kotlin.dsl.project
+
+plugins {
+  java
+}
+
+dependencies {
+  implementation(project(":invokerannotations"))
+  implementation("com.google.auto.service:auto-service:1.0-rc3")
+  implementation("com.squareup:javapoet:1.9.0")
+}
+
+fun DependencyHandlerScope.implementation(dependencyNotation: Any)
+  = "implementation"(dependencyNotation)
diff --git a/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java
new file mode 100644
index 000000000..bbde9f7b3
--- /dev/null
+++ b/invokergenerator/src/main/java/de/kuschku/libquassel/annotations/InvokerProcessor.java
@@ -0,0 +1,241 @@
+package de.kuschku.libquassel.annotations;
+
+import com.google.auto.service.AutoService;
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.FieldSpec;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.ParameterSpec;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeName;
+import com.squareup.javapoet.TypeSpec;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.Filer;
+import javax.annotation.processing.Messager;
+import javax.annotation.processing.ProcessingEnvironment;
+import javax.annotation.processing.Processor;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.annotation.processing.SupportedSourceVersion;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.ExecutableType;
+import javax.lang.model.type.TypeMirror;
+
+@AutoService(Processor.class)
+@SupportedAnnotationTypes("de.kuschku.libquassel.annotations.Syncable")
+@SupportedSourceVersion(SourceVersion.RELEASE_8)
+public class InvokerProcessor extends AbstractProcessor {
+
+    private Filer filer;
+    private Messager messager;
+
+    @Override
+    public synchronized void init(ProcessingEnvironment processingEnv) {
+        filer = processingEnv.getFiler();
+        messager = processingEnv.getMessager();
+    }
+
+    private class SlotElement {
+        final ExecutableElement element;
+        final ExecutableType type;
+
+        final String slotName;
+
+        final Slot slot;
+
+        public SlotElement(ExecutableElement element, ExecutableType type, String slotName, Slot slot) {
+            this.element = element;
+            this.type = type;
+            this.slotName = slotName;
+            this.slot = slot;
+        }
+    }
+
+    private class SyncableElement {
+        PackageElement packageElement;
+        TypeElement typeElement;
+
+        Syncable annotation;
+
+        List<SlotElement> slots;
+
+        public SyncableElement(PackageElement packageElement, TypeElement typeElement, Syncable annotation, List<SlotElement> slots) {
+            this.packageElement = packageElement;
+            this.typeElement = typeElement;
+            this.annotation = annotation;
+            this.slots = slots;
+        }
+    }
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        List<SyncableElement> syncableElements = new ArrayList<>();
+        for (Element element : roundEnv.getElementsAnnotatedWith(Syncable.class)) {
+            if (element.getKind() == ElementKind.INTERFACE) {
+                List<SlotElement> slotElements = new ArrayList<>();
+                for (Element element1 : element.getEnclosedElements()) {
+                    if (element1.getKind() == ElementKind.METHOD) {
+                        ExecutableElement it = (ExecutableElement) element1;
+                        ExecutableType methodType = (ExecutableType) it.asType();
+
+                        Slot slotAnnotation = element1.getAnnotation(Slot.class);
+                        if (slotAnnotation != null) {
+                            String slotName = slotAnnotation.value().isEmpty() ? it.getSimpleName().toString() : slotAnnotation.value();
+                            slotElements.add(new SlotElement(it, methodType, slotName, slotAnnotation));
+                        }
+                    }
+                }
+
+                PackageElement packageElement = (PackageElement) element.getEnclosingElement();
+                TypeElement typeElement = (TypeElement) element;
+                Syncable annotation = typeElement.getAnnotation(Syncable.class);
+
+                syncableElements.add(new SyncableElement(packageElement, typeElement, annotation, slotElements));
+            }
+        }
+
+        try {
+            for (SyncableElement syncableElement : syncableElements) {
+                generateInvoker(syncableElement);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    private void generateInvoker(SyncableElement element) throws IOException {
+        String packageName = element.packageElement.getQualifiedName().toString() + ".invokers";
+        String invokerName = element.annotation.name() + "Invoker";
+
+        ClassName type = ClassName.get(packageName, invokerName);
+        ClassName wrongObjectTypeException = ClassName.get("de.kuschku.quasseldroid_ng", "WrongObjectTypeException");
+        ClassName unknownMethodException = ClassName.get("de.kuschku.quasseldroid_ng", "UnknownMethodException");
+        ClassName nonNullAnnotation = ClassName.get("android.support.annotation", "NonNull");
+
+        MethodSpec methodSpecConstructor = MethodSpec
+                .constructorBuilder()
+                .addModifiers(Modifier.PRIVATE)
+                .build();
+
+        FieldSpec fieldSpecInstance = FieldSpec
+                .builder(type, "INSTANCE", Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
+                .initializer("new $T()", type)
+                .build();
+
+        MethodSpec methodSpecClassName = MethodSpec
+                .methodBuilder("getClassName")
+                .addModifiers(Modifier.PUBLIC)
+                .addAnnotation(nonNullAnnotation)
+                .addAnnotation(Override.class)
+                .returns(String.class)
+                .addStatement("return $S", element.annotation.name())
+                .build();
+
+        ParameterSpec parameterSpecOn = ParameterSpec
+                .builder(
+                        Object.class,
+                        "on"
+                )
+                .addAnnotation(nonNullAnnotation)
+                .build();
+
+        ParameterSpec parameterSpecMethod = ParameterSpec
+                .builder(
+                        String.class,
+                        "method"
+                )
+                .addAnnotation(nonNullAnnotation).build();
+
+        ParameterSpec parameterSpecParams = ParameterSpec
+                .builder(
+                        ParameterizedTypeName.get(
+                                ClassName.get(List.class),
+                                ParameterizedTypeName.get(
+                                        ClassName.get("de.kuschku.quasseldroid_ng.protocol", "QVariant"),
+                                        TypeName.get(Object.class)
+                                )
+                        ),
+                        "params"
+                )
+                .addAnnotation(nonNullAnnotation)
+                .build();
+
+        MethodSpec.Builder invokeSpec = MethodSpec
+                .methodBuilder("invoke")
+                .addModifiers(Modifier.PUBLIC)
+                .addAnnotation(Override.class)
+                .addException(wrongObjectTypeException)
+                .addException(unknownMethodException)
+                .addParameter(parameterSpecOn)
+                .addParameter(parameterSpecMethod)
+                .addParameter(parameterSpecParams)
+                .beginControlFlow("if (on instanceof $T)", element.typeElement)
+                .addStatement("$T it = ($T) $N", element.typeElement, element.typeElement, parameterSpecOn)
+                .beginControlFlow("switch ($N)", parameterSpecMethod);
+
+        for (SlotElement slot : element.slots) {
+            invokeSpec = invokeSpec.beginControlFlow("case $S:", slot.slotName);
+            invokeSpec = invokeSpec.addCode("it.$N(\n$>", slot.element.getSimpleName());
+            for (int i = 0; i < slot.type.getParameterTypes().size(); i++) {
+                TypeMirror parameterType = slot.type.getParameterTypes().get(i);
+                boolean isLast = i + 1 == slot.type.getParameterTypes().size();
+
+                invokeSpec = invokeSpec.addCode("($T) $N.get($L).getData()", parameterType, parameterSpecParams, i);
+                if (!isLast)
+                    invokeSpec = invokeSpec.addCode(",");
+                invokeSpec = invokeSpec.addCode("\n");
+            }
+            invokeSpec = invokeSpec.addCode("$<);\n");
+            invokeSpec = invokeSpec.endControlFlow("return");
+        }
+
+        invokeSpec = invokeSpec
+                .beginControlFlow("default:")
+                .addStatement("throw new $T($N(), $N)",
+                        unknownMethodException,
+                        methodSpecClassName,
+                        parameterSpecMethod
+                )
+                .endControlFlow()
+                .endControlFlow()
+                .addCode("$<} else{\n$>")
+                .addStatement("throw new $T($N, $N())",
+                        wrongObjectTypeException,
+                        parameterSpecOn,
+                        methodSpecClassName
+                )
+                .endControlFlow();
+
+        TypeSpec typeSpec = TypeSpec
+                .classBuilder(type)
+                .addSuperinterface(ParameterizedTypeName.get(
+                        ClassName.get(packageName, "Invoker"),
+                        TypeName.get(element.typeElement.asType())
+                ))
+                .addModifiers(Modifier.PUBLIC)
+                .addField(fieldSpecInstance)
+                .addMethod(methodSpecConstructor)
+                .addMethod(methodSpecClassName)
+                .addMethod(invokeSpec.build())
+                .build();
+
+        JavaFile javaFile = JavaFile
+                .builder(packageName, typeSpec)
+                .build();
+
+        javaFile.writeTo(filer);
+    }
+}
diff --git a/settings.gradle b/settings.gradle
index 2a9cb1a0c..fa3c2ef0f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,22 +1 @@
-/*
- * QuasselDroid - Quassel client for Android
- * Copyright (C) 2016 Janne Koschinski
- * Copyright (C) 2016 Ken Børge Viktil
- * Copyright (C) 2016 Magnus Fjell
- * Copyright (C) 2016 Martin Sandsmark <martin.sandsmark@kde.org>
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-include ':app'
+include ':invokerannotations', ':invokergenerator', ':app'
-- 
GitLab