diff --git a/Bitmessage.uml b/Bitmessage.uml
index 997ab34..598f220 100644
--- a/Bitmessage.uml
+++ b/Bitmessage.uml
@@ -3,325 +3,1306 @@
JAVA
- ch.dissem.bitmessage.entity.Encrypted
- ch.dissem.bitmessage.ports.Inventory
- ch.dissem.bitmessage.entity.payload.V4Pubkey
- ch.dissem.bitmessage.entity.Addr
- ch.dissem.bitmessage.entity.payload.Broadcast
- ch.dissem.bitmessage.factory.Factory
- ch.dissem.bitmessage.entity.valueobject.NetworkAddress
- ch.dissem.bitmessage.entity.payload.V2Pubkey
- ch.dissem.bitmessage.ports.AddressRepository
- ch.dissem.bitmessage.entity.payload.V3Pubkey
- ch.dissem.bitmessage.entity.payload.ObjectPayload
- ch.dissem.bitmessage.entity.MessagePayload
- ch.dissem.bitmessage.entity.NetworkMessage
- ch.dissem.bitmessage.entity.Version
- ch.dissem.bitmessage.BitmessageContext
- ch.dissem.bitmessage.ports.ProofOfWorkEngine
- ch.dissem.bitmessage.entity.BitmessageAddress
- ch.dissem.bitmessage.entity.payload.UnencryptedMessage
- ch.dissem.bitmessage.factory.V3MessageFactory
- ch.dissem.bitmessage.entity.payload.CryptoBox
- ch.dissem.bitmessage.entity.valueobject.InventoryVector
- ch.dissem.bitmessage.entity.payload.V5Broadcast
- ch.dissem.bitmessage.entity.valueobject.PrivateKey
- ch.dissem.bitmessage.ports.MultiThreadedPOWEngine
- ch.dissem.bitmessage.entity.Inv
- ch.dissem.bitmessage.entity.payload.Pubkey
- ch.dissem.bitmessage.entity.payload.GetPubkey
- ch.dissem.bitmessage.entity.Streamable
- ch.dissem.bitmessage.entity.payload.ObjectType
- ch.dissem.bitmessage.entity.ObjectMessage
- ch.dissem.bitmessage.entity.payload.GenericPayload
- ch.dissem.bitmessage.ports.NetworkHandler
- ch.dissem.bitmessage.entity.VerAck
- ch.dissem.bitmessage.entity.GetData
- ch.dissem.bitmessage.entity.payload.Msg
- ch.dissem.bitmessage.ports.NodeRegistry
- ch.dissem.bitmessage.entity.payload.V4Broadcast
+ ch.dissem.bitmessage.entity.valueobject.Label.Type
+ ch.dissem.bitmessage.networking.Connection.WriterRunnable
+ ch.dissem.bitmessage.entity.valueobject.NetworkAddress
+ ch.dissem.bitmessage.factory.V3MessageFactory
+ ch.dissem.bitmessage.ProofOfWorkService
+ ch.dissem.bitmessage.cryptography.bc.BouncyCryptography
+ ch.dissem.bitmessage.entity.ObjectMessage
+ ch.dissem.bitmessage.repository.JdbcHelper
+ ch.dissem.bitmessage.exception.InsufficientProofOfWorkException
+ ch.dissem.bitmessage.utils.AccessCounter
+ ch.dissem.bitmessage.MessageCallback
+ ch.dissem.bitmessage.networking.Connection.ReaderRunnable
+ ch.dissem.bitmessage.entity.payload.V2Pubkey
+ ch.dissem.bitmessage.extensions.CryptoCustomMessage.SignatureCheckingInputStream
+ ch.dissem.bitmessage.entity.Plaintext
+ ch.dissem.bitmessage.InternalContext
+ ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest
+ ch.dissem.bitmessage.ports.NetworkHandler.MessageListener
+ ch.dissem.bitmessage.entity.payload.Msg
+ ch.dissem.bitmessage.networking.Connection.Mode
+ ch.dissem.bitmessage.utils.Singleton
+ ch.dissem.bitmessage.ports.Cryptography
+ ch.dissem.bitmessage.ports.ProofOfWorkRepository
+ ch.dissem.bitmessage.repository.JdbcMessageRepository
+ ch.dissem.bitmessage.repository.JdbcInventory
+ ch.dissem.bitmessage.exception.NodeException
+ ch.dissem.bitmessage.entity.payload.GetPubkey
+ ch.dissem.bitmessage.entity.GetData
+ ch.dissem.bitmessage.entity.Addr
+ ch.dissem.bitmessage.InternalContext.ContextHolder
+ ch.dissem.bitmessage.entity.CustomMessage
+ ch.dissem.bitmessage.DefaultMessageListener
+ ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.Worker
+ ch.dissem.bitmessage.ports.MultiThreadedPOWEngine.CallbackWrapper
+ ch.dissem.bitmessage.ports.CustomCommandHandler
+ ch.dissem.bitmessage.utils.Property
+ ch.dissem.bitmessage.repository.JdbcAddressRepository
+ ch.dissem.bitmessage.BitmessageContext
+ ch.dissem.bitmessage.entity.VerAck
+ ch.dissem.bitmessage.repository.JdbcConfig
+ ch.dissem.bitmessage.ports.MemoryNodeRegistry
+ ch.dissem.bitmessage.entity.valueobject.InventoryVector
+ ch.dissem.bitmessage.entity.payload.V4Pubkey
+ ch.dissem.bitmessage.entity.payload.V5Broadcast
+ ch.dissem.bitmessage.entity.Inv
+ ch.dissem.bitmessage.ports.AddressRepository
+ ch.dissem.bitmessage.entity.payload.Pubkey
+ ch.dissem.bitmessage.extensions.pow.ProofOfWorkRequest.Request
+ ch.dissem.bitmessage.ports.MessageRepository
+ ch.dissem.bitmessage.wif.WifExporter
+ ch.dissem.bitmessage.entity.valueobject.PrivateKey
+ ch.dissem.bitmessage.ports.MultiThreadedPOWEngine
+ ch.dissem.bitmessage.extensions.CryptoCustomMessage.Reader
+ ch.dissem.bitmessage.entity.payload.V3Pubkey
+ ch.dissem.bitmessage.entity.payload.Pubkey.Feature
+ ch.dissem.bitmessage.ports.NetworkHandler
+ ch.dissem.bitmessage.ports.AbstractCryptography
+ ch.dissem.bitmessage.cryptography.sc.SpongyCryptography
+ ch.dissem.bitmessage.ports.SimplePOWEngine
+ ch.dissem.bitmessage.ports.NodeRegistry
+ ch.dissem.bitmessage.wif.WifImporter
+ ch.dissem.bitmessage.entity.MessagePayload.Command
+ ch.dissem.bitmessage.entity.NetworkMessage
+ ch.dissem.bitmessage.entity.Plaintext.Encoding
+ ch.dissem.bitmessage.entity.Plaintext.Type
+ ch.dissem.bitmessage.entity.payload.CryptoBox
+ ch.dissem.bitmessage.factory.Factory
+ ch.dissem.bitmessage.networking.DefaultNetworkHandler
+ ch.dissem.bitmessage.repository.JdbcProofOfWorkRepository
+ ch.dissem.bitmessage.entity.BitmessageAddress
+ ch.dissem.bitmessage.networking.Connection.State
+ ch.dissem.bitmessage.entity.payload.V4Broadcast
+ ch.dissem.bitmessage.entity.Encrypted
+ ch.dissem.bitmessage.networking.Connection
+ ch.dissem.bitmessage.ports.ProofOfWorkEngine
+ ch.dissem.bitmessage.entity.MessagePayload
+ ch.dissem.bitmessage.entity.Streamable
+ ch.dissem.bitmessage.BitmessageContext.Listener
+ ch.dissem.bitmessage.ports.Inventory
+ ch.dissem.bitmessage.ports.ProofOfWorkEngine.Callback
+ ch.dissem.bitmessage.entity.payload.GenericPayload
+ ch.dissem.bitmessage.entity.Version
+ ch.dissem.bitmessage.entity.payload.ObjectPayload
+ ch.dissem.bitmessage.entity.payload.Broadcast
+ ch.dissem.bitmessage.extensions.CryptoCustomMessage
+ ch.dissem.bitmessage.exception.DecryptionFailedException
+ ch.dissem.bitmessage.entity.Plaintext.Status
+ ch.dissem.bitmessage.entity.PlaintextHolder
+ ch.dissem.bitmessage.entity.valueobject.Label
+ ch.dissem.bitmessage.ports.ProofOfWorkRepository.Item
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
- Fields
- Methods
- Properties
+ Inner Classes
- All
+ Production
protected