       if @isEncrypted()
         return this
       else
-        chunkingStrategyUri   = @body.data.chunkingStrategy
-        chunkingStrategyClass = ChunkingStrategyRegistry.get(chunkingStrategyUri)
-        chunkingStrategy      = new chunkingStrategyClass()
-        chunks                = chunkingStrategy.split(@body.data)
-        data                  = @blockEncryptionService.encrypt(chunks, cryptoService)
-        raw                   = _.extend({}, _.cloneDeep(this), {body: {data}})
+        blockEncryptionService = new BlockEncryptionService()
+        chunkingStrategyUri    = @body.data.chunkingStrategy
+        chunkingStrategyClass  = ChunkingStrategyRegistry.get(chunkingStrategyUri)
+        chunkingStrategy       = new chunkingStrategyClass()
+        chunks                 = chunkingStrategy.split(@body.data)
+        data                   = blockEncryptionService.encrypt(chunks, cryptoService)
+        raw                    = _.extend({}, _.cloneDeep(this), {body: {data}})
         return new KryptnosticObject(raw)
 
   return KryptnosticObject

      if @isDecrypted()
        return this
      else
        chunks                = @blockEncryptionService.decrypt(@body.data, cryptoService)
        chunkingStrategyUri   = @body.data.chunkingStrategy
        chunkingStrategyClass = ChunkingStrategyRegistry.get(chunkingStrategyUri)
        chunkingStrategy      = new chunkingStrategyClass()
        data                  = chunkingStrategy.join(chunks)
        raw                   = _.extend({}, _.cloneDeep(this), {body: {data}})
        return new KryptnosticObject(raw)

    # chunk and encrypt using a cryptoService

    # construct using a raw json object
    constructor : (raw) ->
      _.extend(this, raw)
      @validate()

    # validate json properies
