public void AddSignature(string name, int level, Action<Stream> action)
		{
			using (var update = new Update(session, Signatures, JET_prep.Insert))
			{
				Api.SetColumn(session, Signatures, tableColumnsCache.SignaturesColumns["name"], name, Encoding.Unicode);
				Api.SetColumn(session, Signatures, tableColumnsCache.SignaturesColumns["level"], level);
				Api.SetColumn(session, Signatures, tableColumnsCache.SignaturesColumns["created_at"], DateTime.UtcNow);

				using (var stream = new ColumnStream(session, Signatures, tableColumnsCache.SignaturesColumns["data"]))
				using (var buffer = new BufferedStream(stream))
				{
					action(buffer);
					buffer.Flush();
					stream.Flush();
				}

				update.Save();
			}
		}
		public void GetSignatureStream(int id, int level, Action<Stream> action)
		{
			Api.JetSetCurrentIndex(session, Signatures, "by_id");
			Api.MakeKey(session, Signatures, id, MakeKeyGrbit.NewKey);
			Api.MakeKey(session, Signatures, level, MakeKeyGrbit.None);
			if (Api.TrySeek(session, Signatures, SeekGrbit.SeekEQ) == false)
				throw new InvalidOperationException("Could not find signature with id " + id + " and level " + level);


			using (var stream = new ColumnStream(session, Signatures, tableColumnsCache.SignaturesColumns["data"]))
			using (var buffer = new BufferedStream(stream))
			{
				action(buffer);
				buffer.Flush();
				stream.Flush();
			}
		}