[1mdiff --git a/Cargo.lock b/Cargo.lock[m
[1mindex e690e18..32c1d4b 100644[m
[1m--- a/Cargo.lock[m
[1m+++ b/Cargo.lock[m
[36m@@ -1,3 +1,5 @@[m
[32m+[m[32m# This file is automatically @generated by Cargo.[m
[32m+[m[32m# It is not intended for manual editing.[m
 [[package]][m
 name = "ansi_term"[m
 version = "0.11.0"[m
[1mdiff --git a/src/bin/hal-elements/cmd/tx/mod.rs b/src/bin/hal-elements/cmd/tx/mod.rs[m
[1mindex 80c1714..37e8478 100644[m
[1m--- a/src/bin/hal-elements/cmd/tx/mod.rs[m
[1m+++ b/src/bin/hal-elements/cmd/tx/mod.rs[m
[36m@@ -2,18 +2,18 @@[m [muse clap;[m
 [m
 use cmd;[m
 [m
[31m-//mod create;[m
[32m+[m[32mmod create;[m
 mod decode;[m
 [m
 pub fn subcommand<'a>() -> clap::App<'a, 'a> {[m
 	cmd::subcommand_group("tx", "manipulate transactions")[m
[31m-		//.subcommand(create::subcommand())[m
[32m+[m		[32m.subcommand(create::subcommand())[m
 		.subcommand(decode::subcommand())[m
 }[m
 [m
 pub fn execute<'a>(matches: &clap::ArgMatches<'a>) {[m
 	match matches.subcommand() {[m
[31m-		//("create", Some(ref m)) => create::execute(&m),[m
[32m+[m		[32m("create", Some(ref m)) => create::execute(&m),[m
 		("decode", Some(ref m)) => decode::execute(&m),[m
 		(_, _) => unreachable!("clap prints help"),[m
 	};[m
[1mdiff --git a/src/confidential.rs b/src/confidential.rs[m
[1mindex 5acd49b..0bcf742 100644[m
[1m--- a/src/confidential.rs[m
[1m+++ b/src/confidential.rs[m
[36m@@ -1,4 +1,5 @@[m
 use bitcoin::Network;[m
[32m+[m[32muse bitcoin_hashes::sha256d;[m
 use elements::confidential::{Asset, Nonce, Value};[m
 [m
 use hal::{GetInfo, HexBytes};[m
[36m@@ -51,7 +52,7 @@[m [mpub struct ConfidentialAssetInfo {[m
 	#[serde(rename = "type")][m
 	pub type_: ConfidentialType,[m
 	#[serde(skip_serializing_if = "Option::is_none")][m
[31m-	pub asset: Option<HexBytes>,[m
[32m+[m	[32mpub asset: Option<sha256d::Hash>,[m
 	#[serde(skip_serializing_if = "Option::is_none")][m
 	pub commitment: Option<HexBytes>,[m
 }[m
[36m@@ -65,7 +66,7 @@[m [mimpl GetInfo<ConfidentialAssetInfo> for Asset {[m
 				Asset::Confidential(_, _) => ConfidentialType::Confidential,[m
 			},[m
 			asset: match self {[m
[31m-				Asset::Explicit(a) => Some(a[..].into()),[m
[32m+[m				[32mAsset::Explicit(a) => Some(*a),[m
 				_ => None,[m
 			},[m
 			commitment: match self {[m
[36m@@ -86,7 +87,7 @@[m [mpub struct ConfidentialNonceInfo {[m
 	#[serde(rename = "type")][m
 	pub type_: ConfidentialType,[m
 	#[serde(skip_serializing_if = "Option::is_none")][m
[31m-	pub nonce: Option<HexBytes>,[m
[32m+[m	[32mpub nonce: Option<sha256d::Hash>,[m
 	#[serde(skip_serializing_if = "Option::is_none")][m
 	pub commitment: Option<HexBytes>,[m
 }[m
[36m@@ -100,7 +101,7 @@[m [mimpl GetInfo<ConfidentialNonceInfo> for Nonce {[m
 				Nonce::Confidential(_, _) => ConfidentialType::Confidential,[m
 			},[m
 			nonce: match self {[m
[31m-				Nonce::Explicit(n) => Some(n[..].into()),[m
[32m+[m				[32mNonce::Explicit(n) => Some(*n),[m
 				_ => None,[m
 			},[m
 			commitment: match self {[m
[1mdiff --git a/src/tx.rs b/src/tx.rs[m
[1mindex 48c2663..cd105cb 100644[m
[1m--- a/src/tx.rs[m
[1m+++ b/src/tx.rs[m
[36m@@ -35,12 +35,12 @@[m [mpub struct PeginDataInfo {[m
 	pub outpoint: String,[m
 	pub value: u64,[m
 	pub asset: ConfidentialAssetInfo,[m
[31m-	pub genesis_hash: HexBytes,[m
[32m+[m	[32mpub genesis_hash: sha256d::Hash,[m
 	pub claim_script: HexBytes,[m
 	pub mainchain_tx_hex: HexBytes,[m
 	pub mainchain_tx: Option<hal::tx::TransactionInfo>,[m
 	pub merkle_proof: HexBytes,[m
[31m-	pub referenced_block: HexBytes,[m
[32m+[m	[32mpub referenced_block: sha256d::Hash,[m
 }[m
 [m
 impl<'tx> GetInfo<PeginDataInfo> for PeginData<'tx> {[m
[36m@@ -49,7 +49,7 @@[m [mimpl<'tx> GetInfo<PeginDataInfo> for PeginData<'tx> {[m
 			outpoint: self.outpoint.to_string(),[m
 			value: self.value,[m
 			asset: self.asset.get_info(network),[m
[31m-			genesis_hash: self.genesis_hash[..].into(),[m
[32m+[m			[32mgenesis_hash: self.genesis_hash,[m
 			claim_script: self.claim_script.into(),[m
 			mainchain_tx_hex: self.tx.into(),[m
 			mainchain_tx: match deserialize(&self.tx) {[m
[36m@@ -57,7 +57,7 @@[m [mimpl<'tx> GetInfo<PeginDataInfo> for PeginData<'tx> {[m
 				Err(_) => None,[m
 			},[m
 			merkle_proof: self.merkle_proof.into(),[m
[31m-			referenced_block: self.referenced_block[..].into(),[m
[32m+[m			[32mreferenced_block: self.referenced_block,[m
 		}[m
 	}[m
 }[m
[36m@@ -141,7 +141,7 @@[m [mimpl GetInfo<InputInfo> for TxIn {[m
 pub struct PegoutDataInfo {[m
 	pub value: u64,[m
 	pub asset: ConfidentialAssetInfo,[m
[31m-	pub genesis_hash: HexBytes,[m
[32m+[m	[32mpub genesis_hash: sha256d::Hash,[m
 	pub script_pub_key: OutputScriptInfo,[m
 	pub extra_data: Vec<HexBytes>,[m
 }[m
[36m@@ -151,7 +151,7 @@[m [mimpl<'tx> GetInfo<PegoutDataInfo> for PegoutData<'tx> {[m
 		PegoutDataInfo {[m
 			value: self.value,[m
 			asset: self.asset.get_info(network),[m
[31m-			genesis_hash: self.genesis_hash[..].into(),[m
[32m+[m			[32mgenesis_hash: self.genesis_hash,[m
 			script_pub_key: OutputScript(&self.script_pubkey).get_info(network),[m
 			extra_data: self.extra_data.iter().map(|w| w.clone().into()).collect(),[m
 		}[m
