Repository: onflow/flow-cli
Pull request #183 (2021-04-15 16:30:54)

Sign transaction refactor
Closes #132 

## Description

Refactored version of signing transaction.

<!--
Add a description of the changes that this PR introduces and the files that
are the most critical to review.
-->

______

For contributor use:

- [ ] Targeted PR against `master` branch
- [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work
- [ ] Code follows the [standards mentioned here](https://github.com/onflow/flow-cli/blob/master/CONTRIBUTING.md#styleguides)
- [ ] Updated relevant documentation
- [ ] Re-reviewed `Files changed` in the Github PR explorer
- [ ] Added appropriate labels



Patch:
diff --git a/docs/account-add-contract.md b/docs/account-add-contract.md
index e8065cbd..ccdfaa8c 100644
--- a/docs/account-add-contract.md
+++ b/docs/account-add-contract.md
@@ -17,16 +17,13 @@ flow accounts add-contract <name> <filename>
 Contract 'FungibleToken' deployed to the account 0xf8d6e0586b0a20c7
 
 Address	 0xf8d6e0586b0a20c7
-Balance	 99999999999.70000000
+Balance	 9999999999970000000
 Keys	 1
 
 Key 0	Public Key		 640a5a359bf3536d15192f18d872d57c98a96cb871b92b70cecb0739c2d5c37b4be12548d3526933c2cda9b0b9c69412f45ffb6b85b6840d8569d969fe84e5b7
 	Weight			 1000
 	Signature Algorithm	 ECDSA_P256
 	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 6
-	Index 			 0
 
 Contracts Deployed: 1
 Contract: 'FungibleToken'
@@ -72,7 +69,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`).
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/account-remove-contract.md b/docs/account-remove-contract.md
index b38bc9d1..0d3b68fb 100644
--- a/docs/account-remove-contract.md
+++ b/docs/account-remove-contract.md
@@ -17,16 +17,13 @@ flow accounts remove-contract <name>
 Contract 'FungibleToken' removed from account '0xf8d6e0586b0a20c7'
 
 Address	 0xf8d6e0586b0a20c7
-Balance	 99999999999.70000000
+Balance	 0
 Keys	 1
 
 Key 0	Public Key		 640a5a359bf3536d15192f18d872d57c98a96cb871b92b70cecb0739c2d5c37b4be12548d3526933c2cda9b0b9c69412f45ffb6b85b6840d8569d969fe84e5b7
-	Weight			 1000
-	Signature Algorithm	 ECDSA_P256
-	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 6
-	Index 			 0
+Weight			 1000
+Signature Algorithm	 ECDSA_P256
+Hash Algorithm		 SHA3_256
 
 Contracts Deployed: 0
 ```
@@ -64,7 +61,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/account-staking-info.md b/docs/account-staking-info.md
index c5109aec..226fdad5 100644
--- a/docs/account-staking-info.md
+++ b/docs/account-staking-info.md
@@ -68,7 +68,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/account-update-contract.md b/docs/account-update-contract.md
index 850706ef..4b7d780b 100644
--- a/docs/account-update-contract.md
+++ b/docs/account-update-contract.md
@@ -17,16 +17,13 @@ flow accounts update-contract <name> <filename>
 Contract 'FungibleToken' updated on account '0xf8d6e0586b0a20c7'
 
 Address	 0xf8d6e0586b0a20c7
-Balance	 99999999999.70000000
+Balance	 9999999999970000000
 Keys	 1
 
 Key 0	Public Key		 640a5a359bf3536d15192f18d872d57c98a96cb871b92b70cecb0739c2d5c37b4be12548d3526933c2cda9b0b9c69412f45ffb6b85b6840d8569d969fe84e5b7
 	Weight			 1000
 	Signature Algorithm	 ECDSA_P256
 	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 6
-	Index 			 0
 
 Contracts Deployed: 1
 Contract: 'FungibleToken'
@@ -70,7 +67,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/build-transactions.md b/docs/build-transactions.md
index 2ab1e687..90e845fc 100644
--- a/docs/build-transactions.md
+++ b/docs/build-transactions.md
@@ -7,13 +7,13 @@ description: How to build a Flow transaction from the command line
 The Flow CLI provides a command to build a transactions with options to specify
 authorizer accounts, payer account and proposer account. 
 
-Build command don't produce any signatures and 
-should be used with the `sign` and `send-signed` commands. 
+The `build` command doesn't produce any signatures and instead
+is designed to be used with the `sign` and `send-signed` commands. 
 
 Use this functionality in the following order:
-1. Use this command to build the transaction
-2. Use the sign command to sign with all accounts specified in the build process
-3. Use send signed command to submit the signed transaction to the network.
+1. Use this command (`build`) to build the transaction.
+2. Use the `sign` command to sign with all accounts specified in the build process.
+3. Use `send-signed` command to submit the signed transaction to the Flow network.
 
 ```shell
 flow transactions build <code filename>
@@ -22,7 +22,12 @@ flow transactions build <code filename>
 ## Example Usage
 
 ```shell
-> flow transactions build ./transaction.cdc --signer alice --proposer bob --payer charlie --arg "String:Meow"
+> flow transactions build ./transaction.cdc \
+  --signer alice \
+  --proposer bob \
+  --payer charlie \
+  --arg "String:Meow" \
+  --filter payload --save built.rlp
 
 ID		e8c0a69952fbe50a66703985e220307c8d44b8fa36c76cbca03f8c43d0167847
 Payer		e03daebed8ca0615
@@ -124,7 +129,6 @@ used to execute the commands.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
@@ -172,5 +176,3 @@ files by using `-f` flag multiple times.
 
 
 
-
-
diff --git a/docs/create-accounts.md b/docs/create-accounts.md
index 41c825c5..71b61817 100644
--- a/docs/create-accounts.md
+++ b/docs/create-accounts.md
@@ -47,7 +47,7 @@ In the above example, the `flow.json` file would look something like this:
 }
 ```
 
-## Flags
+## Options
     
 ### Public Key
 
@@ -57,15 +57,6 @@ In the above example, the `flow.json` file would look something like this:
 Specify the public key that will be added to the new account
 upon creation.
 
-### Key Weight
-
-- Flag: `--key-weight`
-- Valid inputs: number between 0 and 1000
-- Default: 1000
-
-Specify the weight of the key. When key weight is provided it must 
-match the number of keys. Specify key weight flag for each key flag.
-
 ### Public Key Signature Algorithm
     
 - Flag: `--sig-algo`
@@ -118,7 +109,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/deploy-project-contracts.md b/docs/deploy-project-contracts.md
index 2e0aff74..497c2615 100644
--- a/docs/deploy-project-contracts.md
+++ b/docs/deploy-project-contracts.md
@@ -121,7 +121,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/developer-updates/release-notes-v18.md b/docs/developer-updates/release-notes-v18.md
deleted file mode 100644
index 54b778a8..00000000
--- a/docs/developer-updates/release-notes-v18.md
+++ /dev/null
@@ -1,192 +0,0 @@
-## ⬆️ Install or Upgrade
-
-Follow the [Flow CLI installation guide](https://docs.onflow.org/flow-cli/install/) for instructions on how to install or upgrade the CLI.
-
-## ⭐ Features
-
-### Resolve Contract Imports in Scripts and Transactions
-This is a new feature that allows you to send transactions and scripts that reference 
-contracts deployed using the `project deploy` command. Imports are resolved 
-by matching contract source paths to their declarations in `flow.json`.
-
-For example:
-
-Example script: `get_supply.cdc`
-```
-import Kibble from "../../contracts/Kibble.cdc"
-
-pub fun main(): UFix64 {
-    let supply = Kibble.totalSupply
-    return supply
-}
-
-```
-
-Example command:
-```
-flow scripts execute ./get_supply.cdc
-```
-
-Note: Please make sure you first deploy the contract using `flow project deploy` 
-command and that contracts are correctly added to the flow configuration.
-
-
-### Build, Sign and Send Transactions
-New functionality allows you to build a transaction, sign it 
-and send signed to the network in separated steps. 
-
-#### Build Transaction
-Build new transaction and specify who will be the proposer, signer and payer account 
-or address. Example:
-
-```
-flow transactions build ./transaction.cdc --proposer alice --payer bob --authorizer bob --filter payload --save payload1.rlp
-```
-
-Check more about [this functionality in docs](https://docs.onflow.org/flow-cli/build-transactions/).
-
-#### Sign Transaction
-After using build command and saving payload to a file you should sign the transaction 
-with each account. Example:
-
-```
-flow transactions sign ./payload1.rlp --signer alice --filter payload --save payload2.rlp 
-```
-
-#### Send Signed Transaction
-When authorizer, payer and proposer sign the transaction it is ready to be 
-sent to the network. Anyone can execute the `send-signed` command. Example:
-
-```
-flow transactions send-signed ./payload3.rlp
-```
-
-### Version Check
-Automatically checks if a new version exists and outputs a warning in case there 
-is a newer version. Example:
-```
-⚠️  Version Warning: New version v0.18.0 of Flow CLI is available.
-Follow the Flow CLI installation guide for instructions on how to install or upgrade the CLI: https://docs.onflow.org/flow-cli/install
-```
-
-
-### Create Account With Multiple Keys and Weights
-Account creation can be done using multiple keys (`--key`) and new `--key-weight` 
-flag. Flag enables you to set key weight for each of the keys. Command example: 
-```
-accounts create \
-    --key ca8cc7...76f67 --key-weight 500 \
-    --key da8123...043ce --key-weight 500
-
-Address	 0x179b6b1cb6755e31
-Balance	 0.10000000
-Keys	 2
-
-Key 0	Public Key		 ca8cc7...76f67
-	Weight			 500
-	Signature Algorithm	 ECDSA_P256
-	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 0
-	Index 			 0
-
-
-Key 1	Public Key		 da8123...043ce
-	Weight			 500
-	Signature Algorithm	 ECDSA_P256
-	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 0
-	Index 			 1
-
-```
-
-## 🎉 Improvements
-
-### Account Response Improved
-Account response includes two new fields in key section: `Sequence Number` and `Index`.
-
-### Transaction Result Improved
-Transaction result displays more information about the transaction. New format example:
-
-```
-Status		✅ SEALED
-ID		b6430b35ba23849a8acb4fa1a4a1d5cce3ed4589111ecbb3984de1b6bd1ba39e
-Payer		a2c4941b5f3c7151
-Authorizers	[a2c4941b5f3c7151]
-
-Proposal Key:	
-    Address	a2c4941b5f3c7151
-    Index	0
-    Sequence	9
-
-No Payload Signatures
-
-Envelope Signature 0:
-    Address	a2c4941b5f3c7151
-    Signature	5391a6fed0fe...2742048166f9d5c925a8dcb78a6d8c710921d67
-    Key Index	0
-
-
-Events:	 None
-
-
-Arguments (1):
-    - Argument 0: {"type":"String","value":"Meow"}
-
-
-Code
-
-transaction(greeting: String) {
-  let guest: Address
-
-  prepare(authorizer: AuthAccount) {
-    self.guest = authorizer.address
-  }
-
-  execute {
-    log(greeting.concat(",").concat(self.guest.toString()))
-  }
-}
-
-
-Payload:
-f90184f90138...8a9462751237da2742048166f9d5c925a8dcb78a6d8c710921d67
-```
-
-Transaction error is now shown at the top of the result.
-```
-Transaction 0dd6294a7614bc0fbeb39b44a6e9f68e821225caa4baf4104a17dc1193d4f011 sealed
-
-Status: SEALED
-Execution Error: Execution failed:
-error: invalid move operation for non-resource
-  --> 0dd6294a7614bc0fbeb39b44a6e9f68e821225caa4baf4104a17dc1193d4f011:15:15
-   |
-15 |         useRes(<-result)
-   |                ^^^ unexpected `<-`
-
-error: mismatched types
-  --> 0dd6294a7614bc0fbeb39b44a6e9f68e821225caa4baf4104a17dc1193d4f011:15:15
-   |
-15 |         useRes(<-result)
-   |                ^^^^^^^^ expected `AnyResource`, got `&AnyResource`
-
-Events:
-  None
-```
-
-## 🐞 Bug Fixes
-
-### New Transaction ID Log
-While sending transaction was in progress output displayed wrong transaction ID.
-
-### Init Reset Fix
-Old configuration format caused an error saying to reset the 
-configuration using reset flag, but when ran it produced the same error again. 
-This bug was fixed.
-
-### Emulator Config Path
-When running emulator command `flow emulator` config flag `-f` was ignored. 
-This has been fixed, so you can provide a custom path to the config while running 
-the start emulator command.
diff --git a/docs/execute-scripts.md b/docs/execute-scripts.md
index 0e27d26e..7f7e08bd 100644
--- a/docs/execute-scripts.md
+++ b/docs/execute-scripts.md
@@ -70,7 +70,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/get-accounts.md b/docs/get-accounts.md
index 67c83ae1..6f9d6676 100644
--- a/docs/get-accounts.md
+++ b/docs/get-accounts.md
@@ -19,16 +19,13 @@ flow accounts get 0xf8d6e0586b0a20c7
 ### Example response
 ```shell
 Address	 0xf8d6e0586b0a20c7
-Balance	 99999999999.70000000
+Balance	 9999999999970000000
 Keys	 1
 
-Key 0	Public Key		 640a5a359bf3536d15192f18d872d57c98a96cb871b92b70cecb0739c2d5c37b4be12548d3526933c2cda9b0b9c69412f45ffb6b85b6840d8569d969fe84e5b7
+Key 0	Public Key		 858a7d978b25d61f348841a343f79131f4b9fab341dd8a476a6f4367c25510570bf69b795fc9c3d2b7191327d869bcf848508526a3c1cafd1af34f71c7765117
 	Weight			 1000
 	Signature Algorithm	 ECDSA_P256
 	Hash Algorithm		 SHA3_256
-	Revoked 		 false
-	Sequence Number 	 6
-	Index 			 0
 
 Contracts Deployed: 2
 Contract: 'FlowServiceAccount'
@@ -73,7 +70,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/get-blocks.md b/docs/get-blocks.md
index f8085609..55f77052 100644
--- a/docs/get-blocks.md
+++ b/docs/get-blocks.md
@@ -103,7 +103,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/get-collections.md b/docs/get-collections.md
index 4ef0f809..8ca29bb0 100644
--- a/docs/get-collections.md
+++ b/docs/get-collections.md
@@ -55,7 +55,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/get-events.md b/docs/get-events.md
index 63df08a5..9040c214 100644
--- a/docs/get-events.md
+++ b/docs/get-events.md
@@ -88,7 +88,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/get-transactions.md b/docs/get-transactions.md
index 7cd04c9a..0cfe9a11 100644
--- a/docs/get-transactions.md
+++ b/docs/get-transactions.md
@@ -75,7 +75,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/send-signed-transactions.md b/docs/send-signed-transactions.md
index 5f86af41..cf0c9df0 100644
--- a/docs/send-signed-transactions.md
+++ b/docs/send-signed-transactions.md
@@ -1,16 +1,16 @@
 ---
 title: Send Signed Transaction with the Flow CLI
 sidebar_title: Send Signed Transaction
-description: How to send signed Flow transaction from the command line
+description: How to send a signed Flow transaction from the command line
 ---
 
 The Flow CLI provides a command to send signed transactions to
 any Flow Access API.
 
 Use this functionality in the following order:
-1. Use this command to build the transaction
-2. Use the sign command to sign with all accounts specified in the build process
-3. Use send signed command to submit the signed transaction to the network.
+1. Use this command (`build`) to build the transaction.
+2. Use the `sign` command to sign with all accounts specified in the build process.
+3. Use `send-signed` command to submit the signed transaction to the Flow network.
 
 ```shell
 flow transactions send-signed <signed transaction filename>
@@ -93,7 +93,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/send-transactions.md b/docs/send-transactions.md
index d06801dc..8dced157 100644
--- a/docs/send-transactions.md
+++ b/docs/send-transactions.md
@@ -138,7 +138,6 @@ any host defined by the `--network` flag.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/docs/sign-transaction.md b/docs/sign-transaction.md
index 61f646f3..6d3174f1 100644
--- a/docs/sign-transaction.md
+++ b/docs/sign-transaction.md
@@ -8,9 +8,9 @@ The Flow CLI provides a command to sign transactions with options to specify
 authorizer accounts, payer accounts and proposer accounts.
 
 Use this functionality in the following order:
-1. Use this command to build the transaction
-2. Use the sign command to sign with all accounts specified in the build process
-3. Use send signed command to submit the signed transaction to the network.
+1. Use this command (`build`) to build the transaction.
+2. Use the `sign` command to sign with all accounts specified in the build process.
+3. Use `send-signed` command to submit the signed transaction to the Flow network.
 
 ```shell
 flow transactions sign <built transaction filename>
@@ -19,7 +19,8 @@ flow transactions sign <built transaction filename>
 ## Example Usage
 
 ```shell
-> flow transactions sign ./built.rlp --signer alice
+> flow transactions sign ./built.rlp --signer alice \
+  --filter payload --save signed.rlp
 
 Hash		b03b18a8d9d30ff7c9f0fdaa80fcaab242c2f36eedb687dd9b368326311fe376
 Payer		f8d6e0586b0a20c7
@@ -92,7 +93,6 @@ used to execute the commands.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
@@ -137,3 +137,366 @@ Specify the log level. Control how much output you want to see while command exe
 
 Specify a filename for the configuration files, you can provide multiple configuration
 files by using `-f` flag multiple times.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```bash
+Authorizers	[f8d6e0586b0a20c7]
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	16
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7...e888b1a5840e8881caa78208a45ac1ce9f77d98cb85ac982c4c8ca6b3510
+    Key Index	0
+
+
+Transaction Payload:
+f90183f90137b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c657420677
+56573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e74
+29207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a20206
+5786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e636174287365
+6c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c227
+
+
+```
+
+
+Example:
+
+Simple two step sign send
+```
+> transactions sign ./tests/transaction.cdc --arg String:"Foo"
+
+Authorizers	[f8d6e0586b0a20c7]
+Payer		f8d6e0586b0a20c7
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	4
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	bccac2e89d0407300a1a24f900757cdf15a49ef5e9ca92cc6cc54ea56ddda841bc8f47b803e5a97768f155d105376d62d40c2dbeaa822944289b92ad7eb33b9b
+    Key Index	0
+
+
+Transaction Payload:
+f90183f90137b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c2276616c7565223a22466f6f227d0aa076a251f4028186c2a934efa598e2cd41a6a33700893ae7098475cd05cc6c37fb8203e888f8d6e0586b0a20c7800488f8d6e0586b0a20c7c988f8d6e0586b0a20c7f846f8448080b840bccac2e89d0407300a1a24f900757cdf15a49ef5e9ca92cc6cc54ea56ddda841bc8f47b803e5a97768f155d105376d62d40c2dbeaa822944289b92ad7eb33b9bc0
+
+
+> transactions send --payload payload1
+
+Hash	 3130447e195587ef7a01ad40effd281680a02e7411b204391c837d451e246d42
+Status	 SEALED
+Payer	 f8d6e0586b0a20c7
+Events	
+
+
+```
+
+
+Different Payer:
+```
+> keys generate
+🔴️ Store Private Key safely and don't share with anyone! 
+Private Key 	 8fea7a92c85aa1b653eb5fe407842886b76a2c009b800e82c570767cf010f384 
+Public Key 	 ad26f02fbdd3f372e2fbcf94bf0374c9502e6fdf2446a3009772642195b811be528143217139d8111dda7a7b30f7a57ec798cc12d86d2e850f5e0cccbb195da2 
+
+> accounts create --key ad26f02fbdd3f372e2fbcf94bf0374c9502e6fdf2446a3009772642195b811be528143217139d8111dda7a7b30f7a57ec798cc12d86d2e850f5e0cccbb195da2
+Address	 0x179b6b1cb6755e31
+Balance	 10000000
+Keys	 1
+
+Key 0	Public Key		 ad26f02fbdd3f372e2fbcf94bf0374c9502e6fdf2446a3009772642195b811be528143217139d8111dda7a7b30f7a57ec798cc12d86d2e850f5e0cccbb195da2
+	Weight			 1000
+	Signature Algorithm	 ECDSA_P256
+	Hash Algorithm		 SHA3_256
+
+Contracts Deployed: 0
+
+
+> transactions sign ./tests/transaction.cdc --arg String:"Foo" --payer-address 0x179b6b1cb6755e31 --filter Payload --save payload2
+
+> cmd/flow/main.go transactions sign --payload payload2 --role payer --signer payer-account 
+
+Authorizers	[f8d6e0586b0a20c7]
+Payer		179b6b1cb6755e31
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	3
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	ce858a8bd8a58d29f2cf37e4de1aad2d6c577b342ef285e02762cf224614d90bac8de3fe0ea742e0c5d78e4dc981c0e84ba1d208fc4ec4554bd9e732290567ee
+    Key Index	0
+
+Envelope Signature 0:
+    Address	179b6b1cb6755e31
+    Signature	4ba3a88be452a684f54b29a9ddc72469a98f3863992d173ed0ab3c52efe7f0c0c0a4fc03d343c971086929f097e5c1032655b61efc3a5e87ea3ab22755aad409
+    Key Index	0
+
+
+Transaction Payload:
+f901caf90137b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c2276616c7565223a22466f6f227d0aa0baaeb14e65391f51236b203665764aae224171aefc60bbfd1c2899a56e604c128203e888f8d6e0586b0a20c7800388179b6b1cb6755e31c988f8d6e0586b0a20c7f846f8448080b840ce858a8bd8a58d29f2cf37e4de1aad2d6c577b342ef285e02762cf224614d90bac8de3fe0ea742e0c5d78e4dc981c0e84ba1d208fc4ec4554bd9e732290567eef846f8440180b8404ba3a88be452a684f54b29a9ddc72469a98f3863992d173ed0ab3c52efe7f0c0c0a4fc03d343c971086929f097e5c1032655b61efc3a5e87ea3ab22755aad409
+
+
+
+
+
+> go run cmd/flow/main.go transactions send --payload payload3
+
+Hash	 047b9fab1ff28fd7fed35672c611dcef40ace745ed535417dae714062497dec4
+Status	 SEALED
+Payer	 179b6b1cb6755e31
+Events	 
+
+```
+
+Different Authorizer
+
+```
+
+> transactions sign ./tests/transaction.cdc --arg String:"Foo" --add-authorizer 179b6b1cb6755e31
+
+Authorizers	[f8d6e0586b0a20c7 179b6b1cb6755e31]
+Payer		0000000000000000
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	4
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	64c0a6cb39c55364cff5c6d73622d22165efa994deb9a5b8b53ff80f0931db74380311ff9765bafcbce666d9b407638d9b0e26ad97b7a9dad963337d623b0de3
+    Key Index	0
+
+
+Transaction Payload:
+f9018cf90140b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c2276616c7565223a22466f6f227d0aa076a251f4028186c2a934efa598e2cd41a6a33700893ae7098475cd05cc6c37fb8203e888f8d6e0586b0a20c78004880000000000000000d288f8d6e0586b0a20c788179b6b1cb6755e31f846f8448080b84064c0a6cb39c55364cff5c6d73622d22165efa994deb9a5b8b53ff80f0931db74380311ff9765bafcbce666d9b407638d9b0e26ad97b7a9dad963337d623b0de3c0
+
+// saved to payload 1
+
+> transactions sign --payload payload1 --signer payer-account
+
+Hash		9f6b7f270c1471991890935f3eb82d9913e9ad172e0bb5f0d445a8a511e5e4df
+Payer		f8d6e0586b0a20c7
+Authorizers	[f8d6e0586b0a20c7 179b6b1cb6755e31]
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	5
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	5c56f2e465b13f289f341733a95b8673aeb9bfa8e3ed9021ca6d51a0b59a4ed278ef95491efdfb7c30e6d599d52358b4b698431782096e7e38a499130dfaeb1e
+    Key Index	0
+
+Payload Signature 1:
+    Address	179b6b1cb6755e31
+    Signature	ca04dafea2a5438ba6d5ac7811bc2656035a23001eee3c96ddf581d015683006c42943b8475d3c61e6131578cc3fe80470ae8706e489b186bc2b333ff12f7282
+    Key Index	0
+
+
+Payload:
+f901d2f90140b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c2276616c7565223a22466f6f227d0aa0ff25bc88a84e5989cafda9da5e55baa9308e511a12fd4d2788c0c359c3f1e6738203e888f8d6e0586b0a20c7800588f8d6e0586b0a20c7d288f8d6e0586b0a20c788179b6b1cb6755e31f88cf8448080b8405c56f2e465b13f289f341733a95b8673aeb9bfa8e3ed9021ca6d51a0b59a4ed278ef95491efdfb7c30e6d599d52358b4b698431782096e7e38a499130dfaeb1ef8440180b840ca04dafea2a5438ba6d5ac7811bc2656035a23001eee3c96ddf581d015683006c42943b8475d3c61e6131578cc3fe80470ae8706e489b186bc2b333ff12f7282c0
+
+// saved to payload 2
+
+> transactions send --payload payload2
+
+❌ Transaction Error 
+execution error code 100: Execution failed:
+error: authorizer count mismatch for transaction: expected 1, got 2
+--> 5fde5868a7f23b64335fea2c92eee97272bdc3d6bd5389a26ba25c496fe141e8
+
+
+
+Status		✅ SEALED
+Hash		5fde5868a7f23b64335fea2c92eee97272bdc3d6bd5389a26ba25c496fe141e8
+Payer		f8d6e0586b0a20c7
+Authorizers	[f8d6e0586b0a20c7 179b6b1cb6755e31]
+
+Proposal Key:	
+    Address	f8d6e0586b0a20c7
+    Index	0
+    Sequence	5
+
+Payload Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	5c56f2e465b13f289f341733a95b8673aeb9bfa8e3ed9021ca6d51a0b59a4ed278ef95491efdfb7c30e6d599d52358b4b698431782096e7e38a499130dfaeb1e
+    Key Index	0
+
+Payload Signature 1:
+    Address	179b6b1cb6755e31
+    Signature	d02d792d0157ce357b87a1a8381e7a8a599386782d5ac0ae0738d2c1f1e96d495aad6fc058f0f81b6dfecc0c72b2358c55cfe6f68aaf13882cf177f48d44c337
+    Key Index	0
+
+Envelope Signature 0:
+    Address	f8d6e0586b0a20c7
+    Signature	2fce0b37e3cc7c44b0e709c7d2a8f145bf9af9aab8be7b1e4e76e20a1e6abc67958dd1be5c4a19f2283c9cddc9ace243688a3c2198858a502551dfd70b32790a
+    Key Index	0
+
+
+Events:	 
+    None
+
+Payload:
+f90219f90140b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de1a07b2274797065223a22537472696e67222c2276616c7565223a22466f6f227d0aa0ff25bc88a84e5989cafda9da5e55baa9308e511a12fd4d2788c0c359c3f1e6738203e888f8d6e0586b0a20c7800588f8d6e0586b0a20c7d288f8d6e0586b0a20c788179b6b1cb6755e31f88cf8448080b8405c56f2e465b13f289f341733a95b8673aeb9bfa8e3ed9021ca6d51a0b59a4ed278ef95491efdfb7c30e6d599d52358b4b698431782096e7e38a499130dfaeb1ef8440180b840d02d792d0157ce357b87a1a8381e7a8a599386782d5ac0ae0738d2c1f1e96d495aad6fc058f0f81b6dfecc0c72b2358c55cfe6f68aaf13882cf177f48d44c337f846f8448080b8402fce0b37e3cc7c44b0e709c7d2a8f145bf9af9aab8be7b1e4e76e20a1e6abc67958dd1be5c4a19f2283c9cddc9ace243688a3c2198858a502551dfd70b32790a
+
+
+```
+
+
+
+
+
+Kan Implementation - Multiple authorizers
+
+```
+go run cmd/flow/main.go transactions sign --payload payload11 --role authorizer --signer payer-account 
+^C
+MacBook-Pro:flow-cli Dapper$ go run cmd/flow/main.go transactions sign --payload payload11 --role authorizer --signer payer-account --output payload12
+⚠️ You are using a new experimental configuration format. Support for this format is not yet available across all CLI commands.
+⚠️ You are using a new experimental configuration format. Support for this format is not yet available across all CLI commands.
+Authorizers (2):
+  Authorizer 0: f8d6e0586b0a20c7
+  Authorizer 1: 179b6b1cb6755e31
+
+Arguments (1):
+  Argument 0: {"type":"String","value":"Hello"}
+
+
+Script:
+transaction(greeting: String) {
+  let guest: Address
+
+  prepare(authorizer: AuthAccount) {
+    self.guest = authorizer.address
+  }
+
+  execute {
+    log(greeting.concat(",").concat(self.guest.toString()))
+  }
+}
+===
+Proposer Address: f8d6e0586b0a20c7
+Proposer Key Index: 0
+Payer Address: f8d6e0586b0a20c7
+===
+Payload Signatures (1):
+  Signature 0 Signer Address: f8d6e0586b0a20c7
+  Signature 0 Signer Key Index: 0
+===
+Does this look correct? (y/n)
+> y
+Payload contents verified
+hexrlp encoded transaction written to payload12
+MacBook-Pro:flow-cli Dapper$ cat payload12 
+f901d2f90140b8d17472616e73616374696f6e286772656574696e673a20537472696e6729207b0a20206c65742067756573743a20416464726573730a0a20207072657061726528617574686f72697a65723a20417574684163636f756e7429207b0a2020202073656c662e6775657374203d20617574686f72697a65722e616464726573730a20207d0a0a202065786563757465207b0a202020206c6f67286772656574696e672e636f6e63617428222c22292e636f6e6361742873656c662e67756573742e746f537472696e67282929290a20207d0a7de3a27b2274797065223a22537472696e67222c2276616c7565223a2248656c6c6f227d0aa085710ebc28deba306bba85d19cf09aa525f1d4badd37843acc677f01fbcfc1f18088f8d6e0586b0a20c7800588f8d6e0586b0a20c7d288f8d6e0586b0a20c788179b6b1cb6755e31f88cf8448080b840ad1ea2b2ea309d875f4a54c49449bd891b45d76eaf3aafa0597d8e9b9e9822b8f86885c23d4eacc99ca3e4f4b0b321a375aebe972e6404d906fa77c0e674daa4f8440180b840267801d484a57a9be7136786807ef2f27059c4635f8412bb594e49b08b8b1af458ec93804d98ae24163987443ffb7847b57e188762aa483dc792ce902df67459c0MacBook-Pro:flow-cli Dapper$ 
+MacBook-Pro:flow-cli Dapper$ 
+MacBook-Pro:flow-cli Dapper$ 
+MacBook-Pro:flow-cli Dapper$ go run cmd/flow/main.go transactions send --payload payload12 --signer emulator-account --results
+⚠️ You are using a new experimental configuration format. Support for this format is not yet available across all CLI commands.
+⚠️ You are using a new experimental configuration format. Support for this format is not yet available across all CLI commands.
+Authorizers (2):
+  Authorizer 0: f8d6e0586b0a20c7
+  Authorizer 1: 179b6b1cb6755e31
+
+Arguments (1):
+  Argument 0: {"type":"String","value":"Hello"}
+
+
+Script:
+transaction(greeting: String) {
+  let guest: Address
+
+  prepare(authorizer: AuthAccount) {
+    self.guest = authorizer.address
+  }
+
+  execute {
+    log(greeting.concat(",").concat(self.guest.toString()))
+  }
+}
+===
+Proposer Address: f8d6e0586b0a20c7
+Proposer Key Index: 0
+Payer Address: f8d6e0586b0a20c7
+===
+Payload Signatures (2):
+  Signature 0 Signer Address: f8d6e0586b0a20c7
+  Signature 0 Signer Key Index: 0
+  Signature 1 Signer Address: 179b6b1cb6755e31
+  Signature 1 Signer Key Index: 0
+===
+Does this look correct? (y/n)
+> y
+Payload contents verified
+Submitting transaction with ID b0aea61a31b3e872c2dac826d37a9667f252bc82f3e1d2be98f25485a0c09bd7 ...
+Successfully submitted transaction with ID b0aea61a31b3e872c2dac826d37a9667f252bc82f3e1d2be98f25485a0c09bd7
+Waiting for transaction b0aea61a31b3e872c2dac826d37a9667f252bc82f3e1d2be98f25485a0c09bd7 to be sealed...
+
+Transaction b0aea61a31b3e872c2dac826d37a9667f252bc82f3e1d2be98f25485a0c09bd7 sealed
+
+Status: SEALED
+Execution Error: execution error code 100: Execution failed:
+error: authorizer count mismatch for transaction: expected 1, got 2
+--> b0aea61a31b3e872c2dac826d37a9667f252bc82f3e1d2be98f25485a0c09bd7
+
+Code: 
+transaction(greeting: String) {
+  let guest: Address
+
+  prepare(authorizer: AuthAccount) {
+    self.guest = authorizer.address
+  }
+
+  execute {
+    log(greeting.concat(",").concat(self.guest.toString()))
+  }
+}
+Events:
+  None
+
+```
\ No newline at end of file
diff --git a/docs/template.md b/docs/template.md
index 525a1c8a..07b5f4d8 100644
--- a/docs/template.md
+++ b/docs/template.md
@@ -64,7 +64,6 @@ used to execute the commands.
 - Flag: `--network`
 - Short Flag: `-n`
 - Valid inputs: the name of a network defined in the configuration (`flow.json`)
-- Default: `emulator`
 
 Specify which network you want the command to use for execution.
 
diff --git a/internal/accounts/accounts.go b/internal/accounts/accounts.go
index 361840fc..2ff688c4 100644
--- a/internal/accounts/accounts.go
+++ b/internal/accounts/accounts.go
@@ -53,7 +53,7 @@ type AccountResult struct {
 func (r *AccountResult) JSON() interface{} {
 	result := make(map[string]interface{})
 	result["address"] = r.Address
-	result["balance"] = fmt.Sprintf("%s", cadence.UFix64(r.Balance))
+	result["balance"] = r.Balance
 
 	keys := make([]string, 0)
 	for _, key := range r.Keys {
@@ -96,8 +96,6 @@ func (r *AccountResult) String() string {
 		fmt.Fprintf(writer, "\tSignature Algorithm\t %s\n", key.SigAlgo)
 		fmt.Fprintf(writer, "\tHash Algorithm\t %s\n", key.HashAlgo)
 		fmt.Fprintf(writer, "\tRevoked \t %t\n", key.Revoked)
-		fmt.Fprintf(writer, "\tSequence Number \t %d\n", key.SequenceNumber)
-		fmt.Fprintf(writer, "\tIndex \t %d\n", key.Index)
 		fmt.Fprintf(writer, "\n")
 	}
 
@@ -125,5 +123,5 @@ func (r *AccountResult) Oneliner() string {
 		keys = append(keys, key.PublicKey.String())
 	}
 
-	return fmt.Sprintf("Address: 0x%s, Balance: %s, Public Keys: %s", r.Address, cadence.UFix64(r.Balance), keys)
+	return fmt.Sprintf("Address: 0x%s, Balance: %v, Public Keys: %s", r.Address, r.Balance, keys)
 }
diff --git a/internal/accounts/create.go b/internal/accounts/create.go
index feb5ecfb..54c5ae75 100644
--- a/internal/accounts/create.go
+++ b/internal/accounts/create.go
@@ -30,7 +30,6 @@ import (
 type flagsCreate struct {
 	Signer    string   `default:"emulator-account" flag:"signer" info:"Account name from configuration used to sign the transaction"`
 	Keys      []string `flag:"key" info:"Public keys to attach to account"`
-	Weights   []int    `flag:"key-weight" info:"Weight for the key"`
 	SigAlgo   string   `default:"ECDSA_P256" flag:"sig-algo" info:"Signature algorithm used to generate the keys"`
 	HashAlgo  string   `default:"SHA3_256" flag:"hash-algo" info:"Hash used for the digest"`
 	Contracts []string `flag:"contract" info:"Contract to be deployed during account creation. <name:filename>"`
@@ -59,7 +58,6 @@ var CreateCommand = &command.Command{
 		account, err := services.Accounts.Create(
 			createFlags.Signer,
 			createFlags.Keys,
-			createFlags.Weights,
 			createFlags.SigAlgo,
 			createFlags.HashAlgo,
 			createFlags.Contracts,
diff --git a/internal/accounts/get.go b/internal/accounts/get.go
index 26433c52..7a9309b3 100644
--- a/internal/accounts/get.go
+++ b/internal/accounts/get.go
@@ -36,10 +36,9 @@ var getFlags = flagsGet{}
 
 var GetCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "get <address>",
-		Short:   "Gets an account by address",
-		Example: "flow accounts get f8d6e0586b0a20c7",
-		Args:    cobra.ExactArgs(1),
+		Use:   "get <address>",
+		Short: "Gets an account by address",
+		Args:  cobra.ExactArgs(1),
 	},
 	Flags: &getFlags,
 	Run: func(
diff --git a/internal/accounts/staking-info.go b/internal/accounts/staking-info.go
index 08487a44..88e00878 100644
--- a/internal/accounts/staking-info.go
+++ b/internal/accounts/staking-info.go
@@ -37,10 +37,9 @@ var stakingFlags = flagsStakingInfo{}
 
 var StakingCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "staking-info <address>",
-		Short:   "Get account staking info",
-		Example: "flow accounts staking-info f8d6e0586b0a20c7",
-		Args:    cobra.ExactArgs(1),
+		Use:   "staking-info <address>",
+		Short: "Get account staking info",
+		Args:  cobra.ExactArgs(1),
 	},
 	Flags: &stakingFlags,
 	Run: func(
diff --git a/internal/blocks/get.go b/internal/blocks/get.go
index f11e9957..ffe3aa86 100644
--- a/internal/blocks/get.go
+++ b/internal/blocks/get.go
@@ -39,10 +39,9 @@ var blockFlags = flagsBlocks{}
 
 var GetCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "get <block_id|latest|block_height>",
-		Short:   "Get block info",
-		Example: "flow blocks get latest --network testnet",
-		Args:    cobra.ExactArgs(1),
+		Use:   "get <block_id|latest|block_height>",
+		Short: "Get block info",
+		Args:  cobra.ExactArgs(1),
 	},
 	Flags: &blockFlags,
 	Run: func(
diff --git a/internal/collections/get.go b/internal/collections/get.go
index ce2d18b3..1bbbb392 100644
--- a/internal/collections/get.go
+++ b/internal/collections/get.go
@@ -31,10 +31,9 @@ var collectionFlags = flagsCollections{}
 
 var GetCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "get <collection_id>",
-		Short:   "Get collection info",
-		Example: "flow collections get 270d...9c31e",
-		Args:    cobra.ExactArgs(1),
+		Use:   "get <collection_id>",
+		Short: "Get collection info",
+		Args:  cobra.ExactArgs(1),
 	},
 	Flags: &collectionFlags,
 	Run: func(
diff --git a/internal/command/command.go b/internal/command/command.go
index 5f814c68..c9c144ba 100644
--- a/internal/command/command.go
+++ b/internal/command/command.go
@@ -22,12 +22,9 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"io/ioutil"
-	"net/http"
 	"os"
 	"strings"
 
-	"github.com/onflow/flow-cli/build"
 	"github.com/onflow/flow-cli/pkg/flowcli/config"
 	"github.com/onflow/flow-cli/pkg/flowcli/gateway"
 	"github.com/onflow/flow-cli/pkg/flowcli/output"
@@ -78,13 +75,13 @@ const (
 	logLevelNone  = "none"
 )
 
-var Flags = GlobalFlags{
+var flags = GlobalFlags{
 	Filter:     "",
 	Format:     formatText,
 	Save:       "",
 	Host:       "",
-	Network:    config.DefaultEmulatorNetwork().Name,
 	Log:        logLevelInfo,
+	Network:    "",
 	Yes:        false,
 	ConfigPath: project.DefaultConfigPaths,
 }
@@ -92,66 +89,66 @@ var Flags = GlobalFlags{
 // InitFlags init all the global persistent flags
 func InitFlags(cmd *cobra.Command) {
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Filter,
+		&flags.Filter,
 		"filter",
 		"x",
-		Flags.Filter,
+		flags.Filter,
 		"Filter result values by property name",
 	)
 
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Host,
+		&flags.Host,
 		"host",
 		"",
-		Flags.Host,
+		flags.Host,
 		"Flow Access API host address",
 	)
 
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Format,
+		&flags.Format,
 		"output",
 		"o",
-		Flags.Format,
+		flags.Format,
 		"Output format, options: \"text\", \"json\", \"inline\"",
 	)
 
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Save,
+		&flags.Save,
 		"save",
 		"s",
-		Flags.Save,
+		flags.Save,
 		"Save result to a filename",
 	)
 
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Log,
+		&flags.Log,
 		"log",
 		"l",
-		Flags.Log,
+		flags.Log,
 		"Log level, options: \"debug\", \"info\", \"error\", \"none\"",
 	)
 
 	cmd.PersistentFlags().StringSliceVarP(
-		&Flags.ConfigPath,
+		&flags.ConfigPath,
 		"config-path",
 		"f",
-		Flags.ConfigPath,
+		flags.ConfigPath,
 		"Path to flow configuration file",
 	)
 
 	cmd.PersistentFlags().StringVarP(
-		&Flags.Network,
+		&flags.Network,
 		"network",
 		"n",
-		Flags.Network,
+		flags.Network,
 		"Network from configuration file",
 	)
 
 	cmd.PersistentFlags().BoolVarP(
-		&Flags.Yes,
+		&flags.Yes,
 		"yes",
 		"y",
-		Flags.Yes,
+		flags.Yes,
 		"Approve any prompts",
 	)
 }
@@ -163,34 +160,32 @@ func InitFlags(cmd *cobra.Command) {
 func (c Command) AddToParent(parent *cobra.Command) {
 	c.Cmd.Run = func(cmd *cobra.Command, args []string) {
 		// initialize project but ignore error since config can be missing
-		proj, err := project.Load(Flags.ConfigPath)
+		proj, err := project.Load(flags.ConfigPath)
 		// here we ignore if config does not exist as some commands don't require it
-		if !errors.Is(err, config.ErrDoesNotExist) && cmd.CommandPath() != "flow init" { // ignore configs errors if we are doing init config
+		if !errors.Is(err, config.ErrDoesNotExist) {
 			handleError("Config Error", err)
 		}
 
-		host, err := resolveHost(proj, Flags.Host, Flags.Network)
+		host, err := resolveHost(proj, flags.Host, flags.Network)
 		handleError("Host Error", err)
 
 		clientGateway, err := createGateway(host)
 		handleError("Gateway Error", err)
 
-		logger := createLogger(Flags.Log, Flags.Format)
+		logger := createLogger(flags.Log, flags.Format)
 
 		service := services.NewServices(clientGateway, proj, logger)
 
-		checkVersion(logger)
-
 		// run command
-		result, err := c.Run(cmd, args, Flags, service)
+		result, err := c.Run(cmd, args, flags, service)
 		handleError("Command Error", err)
 
 		// format output result
-		formattedResult, err := formatResult(result, Flags.Filter, Flags.Format)
+		formattedResult, err := formatResult(result, flags.Filter, flags.Format)
 		handleError("Result", err)
 
 		// output result
-		err = outputResult(formattedResult, Flags.Save, Flags.Format, Flags.Filter)
+		err = outputResult(formattedResult, flags.Save, flags.Format, flags.Filter)
 		handleError("Output Error", err)
 	}
 
@@ -208,26 +203,19 @@ func createGateway(host string) (gateway.Gateway, error) {
 
 // resolveHost from the flags provided
 func resolveHost(proj *project.Project, hostFlag string, networkFlag string) (string, error) {
-	// don't allow both network and host flag as the host might be different
-	if networkFlag != config.DefaultEmulatorNetwork().Name && hostFlag != "" {
-		return "", fmt.Errorf("shouldn't use both host and network flags, better to use network flag")
-	}
-
-	// host flag has highest priority
-	if hostFlag != "" {
-		return hostFlag, nil
-	}
-	// network flag with project initialized is next
+	host := hostFlag
 	if networkFlag != "" && proj != nil {
 		check := proj.NetworkByName(networkFlag)
 		if check == nil {
-			return "", fmt.Errorf("network with name %s does not exist in configuration", networkFlag)
+			return "", fmt.Errorf("provided network with name %s doesn't exists in condiguration", networkFlag)
 		}
 
-		return proj.NetworkByName(networkFlag).Host, nil
+		host = proj.NetworkByName(networkFlag).Host
+	} else if host == "" {
+		host = config.DefaultEmulatorNetwork().Host
 	}
-	// default to emulator host
-	return config.DefaultEmulatorNetwork().Host, nil
+
+	return host, nil
 }
 
 // create logger utility
@@ -365,25 +353,6 @@ func handleError(description string, err error) {
 	os.Exit(1)
 }
 
-// checkVersion fetches latest version and compares it to local
-func checkVersion(logger output.Logger) {
-	resp, err := http.Get("https://raw.githubusercontent.com/onflow/flow-cli/master/version.txt")
-	if err != nil || resp.StatusCode >= 400 {
-		return
-	}
-
-	defer resp.Body.Close()
-	latestVersion, _ := ioutil.ReadAll(resp.Body)
-
-	if string(latestVersion) != build.Semver() {
-		logger.Info(fmt.Sprintf(
-			"\n⚠️  Version Warning: New version %s of Flow CLI is available.\n"+
-				"Follow the Flow CLI installation guide for instructions on how to install or upgrade the CLI: https://docs.onflow.org/flow-cli/install",
-			strings.ReplaceAll(string(latestVersion), "\n", ""),
-		))
-	}
-}
-
 // bindFlags bind all the flags needed
 func bindFlags(command Command) {
 	err := sconfig.New(command.Flags).
diff --git a/internal/emulator/start.go b/internal/emulator/start.go
index c2795b7d..86990d52 100644
--- a/internal/emulator/start.go
+++ b/internal/emulator/start.go
@@ -21,8 +21,6 @@ package emulator
 import (
 	"errors"
 
-	"github.com/onflow/flow-cli/internal/command"
-
 	emulator "github.com/onflow/flow-emulator"
 
 	"github.com/onflow/flow-emulator/cmd/emulator/start"
@@ -67,10 +65,10 @@ func ConfiguredServiceKey(
 			}
 		}
 	} else {
-		proj, err = project.Load(command.Flags.ConfigPath)
+		proj, err = project.Load(project.DefaultConfigPaths)
 		if err != nil {
 			if errors.Is(err, config.ErrDoesNotExist) {
-				util.Exitf(1, "🙏 Configuration is missing, initialize it with: 'flow init' and then rerun this command.")
+				util.Exitf(1, "🙏 Configuration is missing, initialize it with: 'flow project init' and then rerun this command.")
 			} else {
 				util.Exitf(1, err.Error())
 			}
diff --git a/internal/keys/keys.go b/internal/keys/keys.go
index 43016dc9..8c271934 100644
--- a/internal/keys/keys.go
+++ b/internal/keys/keys.go
@@ -49,8 +49,8 @@ type KeyResult struct {
 // JSON convert result to JSON
 func (k *KeyResult) JSON() interface{} {
 	result := make(map[string]string)
-	result["public"] = hex.EncodeToString(k.privateKey.PublicKey().Encode())
-	result["private"] = hex.EncodeToString(k.privateKey.Encode())
+	result["private"] = hex.EncodeToString(k.privateKey.PublicKey().Encode())
+	result["public"] = hex.EncodeToString(k.privateKey.Encode())
 
 	return result
 }
diff --git a/internal/project/deploy.go b/internal/project/deploy.go
index a3ef04da..87a8034b 100644
--- a/internal/project/deploy.go
+++ b/internal/project/deploy.go
@@ -34,9 +34,8 @@ var deployFlags = flagsDeploy{}
 
 var DeployCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "deploy",
-		Short:   "Deploy Cadence contracts",
-		Example: "flow project deploy --network testnet",
+		Use:   "deploy",
+		Short: "Deploy Cadence contracts",
 	},
 	Flags: &deployFlags,
 	Run: func(
diff --git a/internal/project/init.go b/internal/project/init.go
index 33d6d710..1cf28f44 100644
--- a/internal/project/init.go
+++ b/internal/project/init.go
@@ -32,9 +32,8 @@ var initFlag = config.FlagsInit{}
 
 var InitCommand = &command.Command{
 	Cmd: &cobra.Command{
-		Use:     "init",
-		Short:   "Initialize a new configuration",
-		Example: "flow project init",
+		Use:   "init",
+		Short: "Initialize a new configuration",
 	},
 	Flags: &initFlag,
 	Run: func(
diff --git a/internal/scripts/execute.go b/internal/scripts/execute.go
index 655a91d2..ecb97fb3 100644
--- a/internal/scripts/execute.go
+++ b/internal/scripts/execute.go
@@ -72,7 +72,6 @@ var ExecuteCommand = &command.Command{
 			filename,
 			scriptFlags.Arg,
 			scriptFlags.ArgsJSON,
-			globalFlags.Network,
 		)
 		if err != nil {
 			return nil, err
diff --git a/internal/transactions/build.go b/internal/transactions/build.go
index 7e0cc66f..1a07a5f5 100644
--- a/internal/transactions/build.go
+++ b/internal/transactions/build.go
@@ -38,7 +38,7 @@ var buildFlags = flagsBuild{}
 var BuildCommand = &command.Command{
 	Cmd: &cobra.Command{
 		Use:     "build <code filename>",
-		Short:   "Build a transaction for later signing",
+		Short:   "Build an unsigned transaction",
 		Example: "flow transactions build ./transaction.cdc --proposer alice --authorizer alice --payer bob",
 		Args:    cobra.ExactArgs(1),
 	},
@@ -60,7 +60,6 @@ var BuildCommand = &command.Command{
 			args[0], // code filename
 			buildFlags.Args,
 			buildFlags.ArgsJSON,
-			globalFlags.Network,
 		)
 		if err != nil {
 			return nil, err
diff --git a/internal/transactions/get.go b/internal/transactions/get.go
index 60dc5b4f..4563651e 100644
--- a/internal/transactions/get.go
+++ b/internal/transactions/get.go
@@ -39,7 +39,6 @@ var GetCommand = &command.Command{
 		Use:     "get <tx_id>",
 		Aliases: []string{"status"},
 		Short:   "Get the transaction by ID",
-		Example: "flow transactions get 07a8...b433",
 		Args:    cobra.ExactArgs(1),
 	},
 	Flags: &getFlags,
diff --git a/internal/transactions/send.go b/internal/transactions/send.go
index 6a462397..b4c0fd82 100644
--- a/internal/transactions/send.go
+++ b/internal/transactions/send.go
@@ -77,7 +77,6 @@ var SendCommand = &command.Command{
 			sendFlags.Signer,
 			sendFlags.Arg,
 			sendFlags.ArgsJSON,
-			globalFlags.Network,
 		)
 		if err != nil {
 			return nil, err
diff --git a/pkg/flowcli/arguments.go b/pkg/flowcli/arguments.go
index ced0d14f..b175a72c 100644
--- a/pkg/flowcli/arguments.go
+++ b/pkg/flowcli/arguments.go
@@ -75,8 +75,6 @@ func ParseArgumentsCommaSplit(input []string) ([]cadence.Value, error) {
 			)
 		}
 
-		argInput = sanitizeAddressArg(argInput)
-
 		args = append(args, map[string]string{
 			"value": argInput[1],
 			"type":  argInput[0],
@@ -88,15 +86,6 @@ func ParseArgumentsCommaSplit(input []string) ([]cadence.Value, error) {
 	return cadenceArgs, err
 }
 
-// sanitizeAddressArg sanitize address and make sure it has 0x prefix
-func sanitizeAddressArg(argInput []string) []string {
-	if argInput[0] == "Address" && !strings.Contains(argInput[1], "0x") {
-		argInput[1] = fmt.Sprintf("0x%s", argInput[1])
-	}
-
-	return argInput
-}
-
 func ParseArguments(args []string, argsJSON string) (scriptArgs []cadence.Value, err error) {
 	if argsJSON != "" {
 		scriptArgs, err = ParseArgumentsJSON(argsJSON)
diff --git a/pkg/flowcli/config/config.go b/pkg/flowcli/config/config.go
index 9b92e442..07ed99a9 100644
--- a/pkg/flowcli/config/config.go
+++ b/pkg/flowcli/config/config.go
@@ -163,7 +163,7 @@ func (c *Contract) IsAlias() bool {
 }
 
 // GetByNameAndNetwork get contract array for account and network
-func (c *Contracts) GetByNameAndNetwork(name string, network string) *Contract {
+func (c *Contracts) GetByNameAndNetwork(name string, network string) Contract {
 	contracts := make(Contracts, 0)
 
 	for _, contract := range *c {
@@ -176,18 +176,15 @@ func (c *Contracts) GetByNameAndNetwork(name string, network string) *Contract {
 	// and replace only name and source with existing
 	if len(contracts) == 0 {
 		cName := c.GetByName(name)
-		if cName == nil {
-			return nil
-		}
 
-		return &Contract{
+		return Contract{
 			Name:    cName.Name,
 			Network: network,
 			Source:  cName.Source,
 		}
 	}
 
-	return &contracts[0]
+	return contracts[0]
 }
 
 // TODO: this filtering can cause error if not found, better to refactor to returning
diff --git a/pkg/flowcli/contracts/contracts.go b/pkg/flowcli/contracts/contracts.go
index d861054f..4325ea58 100644
--- a/pkg/flowcli/contracts/contracts.go
+++ b/pkg/flowcli/contracts/contracts.go
@@ -20,6 +20,7 @@ package contracts
 
 import (
 	"fmt"
+	"io/ioutil"
 	"path"
 	"strings"
 
@@ -132,10 +133,106 @@ func (c *Contract) addAlias(location string, target flow.Address) {
 	c.aliases[location] = target
 }
 
+type Loader interface {
+	Load(source string) (string, error)
+	Normalize(base, relative string) string
+}
+
+type FilesystemLoader struct{}
+
+func (f FilesystemLoader) Load(source string) (string, error) {
+	codeBytes, err := ioutil.ReadFile(source)
+	if err != nil {
+		return "", err
+	}
+
+	return string(codeBytes), nil
+}
+
+func (f FilesystemLoader) Normalize(base, relative string) string {
+	return absolutePath(base, relative)
+}
+
 func absolutePath(basePath, relativePath string) string {
 	return path.Join(path.Dir(basePath), relativePath)
 }
 
+type Preprocessor struct {
+	loader            Loader
+	aliases           map[string]string
+	contracts         []*Contract
+	contractsBySource map[string]*Contract
+}
+
+func NewPreprocessor(loader Loader, aliases map[string]string) *Preprocessor {
+	return &Preprocessor{
+		loader:            loader,
+		aliases:           aliases,
+		contracts:         make([]*Contract, 0),
+		contractsBySource: make(map[string]*Contract),
+	}
+}
+
+func (p *Preprocessor) AddContractSource(
+	contractName,
+	contractSource string,
+	target flow.Address,
+) error {
+	contractCode, err := p.loader.Load(contractSource)
+	if err != nil {
+		return err
+	}
+
+	c, err := newContract(
+		len(p.contracts),
+		contractName,
+		contractSource,
+		contractCode,
+		target,
+	)
+	if err != nil {
+		return err
+	}
+
+	p.contracts = append(p.contracts, c)
+	p.contractsBySource[c.source] = c
+
+	return nil
+}
+
+func (p *Preprocessor) ResolveImports() error {
+	for _, c := range p.contracts {
+		for _, location := range c.imports() {
+			importPath := p.loader.Normalize(c.source, location)
+			importAlias, isAlias := p.aliases[importPath]
+			importContract, isContract := p.contractsBySource[importPath]
+
+			if isContract {
+				c.addDependency(location, importContract)
+			} else if isAlias {
+				c.addAlias(location, flow.HexToAddress(importAlias))
+			} else {
+				return fmt.Errorf("Import from %s could not be found: %s, make sure import path is correct.", c.name, importPath)
+			}
+		}
+	}
+
+	return nil
+}
+
+func (p *Preprocessor) ContractBySource(contractSource string) *Contract {
+	return p.contractsBySource[contractSource]
+}
+
+func (p *Preprocessor) ContractDeploymentOrder() ([]*Contract, error) {
+	sorted, err := sortByDeploymentOrder(p.contracts)
+	if err != nil {
+		return nil, err
+	}
+
+	return sorted, nil
+}
+
 type CyclicImportError struct {
 	Cycles [][]*Contract
 }
diff --git a/pkg/flowcli/contracts/loader.go b/pkg/flowcli/contracts/loader.go
deleted file mode 100644
index 89e79963..00000000
--- a/pkg/flowcli/contracts/loader.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Flow CLI
- *
- * Copyright 2019-2021 Dapper Labs, Inc.
- *
- * 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 contracts
-
-import "io/ioutil"
-
-type Loader interface {
-	Load(source string) (string, error)
-	Normalize(base, relative string) string
-}
-
-type FilesystemLoader struct{}
-
-func (f FilesystemLoader) Load(source string) (string, error) {
-	codeBytes, err := ioutil.ReadFile(source)
-	if err != nil {
-		return "", err
-	}
-
-	return string(codeBytes), nil
-}
-
-func (f FilesystemLoader) Normalize(base, relative string) string {
-	return absolutePath(base, relative)
-}
diff --git a/pkg/flowcli/contracts/preprocessor.go b/pkg/flowcli/contracts/preprocessor.go
deleted file mode 100644
index ba52186b..00000000
--- a/pkg/flowcli/contracts/preprocessor.go
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Flow CLI
- *
- * Copyright 2019-2021 Dapper Labs, Inc.
- *
- * 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 contracts
-
-import (
-	"fmt"
-
-	"github.com/onflow/flow-cli/pkg/flowcli/project"
-
-	"github.com/onflow/flow-go-sdk"
-)
-
-type Preprocessor struct {
-	loader            Loader
-	aliases           project.Aliases
-	contracts         []*Contract
-	contractsBySource map[string]*Contract
-}
-
-func NewPreprocessor(loader Loader, aliases project.Aliases) *Preprocessor {
-	return &Preprocessor{
-		loader:            loader,
-		aliases:           aliases,
-		contracts:         make([]*Contract, 0),
-		contractsBySource: make(map[string]*Contract),
-	}
-}
-
-func (p *Preprocessor) AddContractSource(
-	contractName,
-	contractSource string,
-	target flow.Address,
-) error {
-	contractCode, err := p.loader.Load(contractSource)
-	if err != nil {
-		return err
-	}
-
-	c, err := newContract(
-		len(p.contracts),
-		contractName,
-		contractSource,
-		contractCode,
-		target,
-	)
-	if err != nil {
-		return err
-	}
-
-	p.contracts = append(p.contracts, c)
-	p.contractsBySource[c.source] = c
-
-	return nil
-}
-
-func (p *Preprocessor) ResolveImports() error {
-	for _, c := range p.contracts {
-		for _, location := range c.imports() {
-			importPath := p.loader.Normalize(c.source, location)
-			importAlias, isAlias := p.aliases[importPath]
-			importContract, isContract := p.contractsBySource[importPath]
-
-			if isContract {
-				c.addDependency(location, importContract)
-			} else if isAlias {
-				c.addAlias(location, flow.HexToAddress(importAlias))
-			} else {
-				return fmt.Errorf("Import from %s could not be found: %s, make sure import path is correct.", c.name, importPath)
-			}
-		}
-	}
-
-	return nil
-}
-
-func (p *Preprocessor) ContractBySource(contractSource string) *Contract {
-	return p.contractsBySource[contractSource]
-}
-
-func (p *Preprocessor) ContractDeploymentOrder() ([]*Contract, error) {
-	sorted, err := sortByDeploymentOrder(p.contracts)
-	if err != nil {
-		return nil, err
-	}
-
-	return sorted, nil
-}
diff --git a/pkg/flowcli/contracts/resolver.go b/pkg/flowcli/contracts/resolver.go
deleted file mode 100644
index 3963e611..00000000
--- a/pkg/flowcli/contracts/resolver.go
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Flow CLI
- *
- * Copyright 2019-2021 Dapper Labs, Inc.
- *
- * 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 contracts
-
-import (
-	"fmt"
-	"path"
-	"strings"
-
-	"github.com/onflow/cadence/runtime/ast"
-	"github.com/onflow/cadence/runtime/common"
-	"github.com/onflow/cadence/runtime/parser2"
-	"github.com/onflow/flow-go-sdk"
-
-	"github.com/onflow/flow-cli/pkg/flowcli/project"
-)
-
-// Resolver handles resolving imports in Cadence code
-type Resolver struct {
-	code    []byte
-	program *ast.Program
-}
-
-// NewResolver creates a new resolver
-func NewResolver(code []byte) (*Resolver, error) {
-	program, err := parser2.ParseProgram(string(code))
-	if err != nil {
-		return nil, err
-	}
-
-	return &Resolver{
-		code:    code,
-		program: program,
-	}, nil
-}
-
-// ResolveImports resolves imports in code to addresses
-//
-// resolving is done based on code file path and is resolved to
-// addresses defined in configuration for contracts or their aliases
-//
-func (r *Resolver) ResolveImports(
-	codePath string,
-	contracts []project.Contract,
-	aliases project.Aliases,
-) ([]byte, error) {
-	imports := r.getFileImports()
-	sourceTarget := r.getSourceTarget(contracts, aliases)
-
-	for _, imp := range imports {
-		target := sourceTarget[absolutePath(codePath, imp)]
-		if target != "" {
-			r.code = r.replaceImport(imp, target)
-		} else {
-			return nil, fmt.Errorf("import %s could not be resolved from the configuration", imp)
-		}
-	}
-
-	return r.code, nil
-}
-
-// replaceImport replaces import from path to address
-func (r *Resolver) replaceImport(from string, to string) []byte {
-	return []byte(strings.Replace(
-		string(r.code),
-		fmt.Sprintf(`"%s"`, from),
-		fmt.Sprintf("0x%s", to),
-		1,
-	))
-}
-
-// getSourceTarget return a map with contract paths as keys and addresses as values
-func (r *Resolver) getSourceTarget(
-	contracts []project.Contract,
-	aliases project.Aliases,
-) map[string]string {
-	sourceTarget := make(map[string]string)
-	for _, contract := range contracts {
-		sourceTarget[path.Clean(contract.Source)] = contract.Target.String()
-	}
-
-	for source, target := range aliases {
-		sourceTarget[path.Clean(source)] = flow.HexToAddress(target).String()
-	}
-
-	return sourceTarget
-}
-
-// HasFileImports checks if there is a file import statement present in Cadence code
-func (r *Resolver) HasFileImports() bool {
-	return len(r.getFileImports()) > 0
-}
-
-// getFileImports returns all cadence file imports from Cadence code as an array
-func (r *Resolver) getFileImports() []string {
-	imports := make([]string, 0)
-
-	for _, importDeclaration := range r.program.ImportDeclarations() {
-		_, ok := importDeclaration.Location.(common.AddressLocation)
-		if !ok {
-			imports = append(imports, importDeclaration.Location.String())
-		}
-	}
-
-	return imports
-}
diff --git a/pkg/flowcli/output/spinner.go b/pkg/flowcli/output/spinner.go
index 700f511d..d26e6db6 100644
--- a/pkg/flowcli/output/spinner.go
+++ b/pkg/flowcli/output/spinner.go
@@ -75,5 +75,4 @@ func (s *Spinner) run() {
 
 func (s *Spinner) Stop() {
 	s.done <- ""
-	time.Sleep(50 * time.Millisecond)
 }
diff --git a/pkg/flowcli/project/project.go b/pkg/flowcli/project/project.go
index 582f6751..7b0ad3d2 100644
--- a/pkg/flowcli/project/project.go
+++ b/pkg/flowcli/project/project.go
@@ -131,10 +131,7 @@ func newProject(conf *config.Config, composer *config.Loader) (*Project, error)
 // The CLI currently does not allow the same contract to be deployed to multiple
 // accounts in the same network.
 func (p *Project) ContractConflictExists(network string) bool {
-	contracts, err := p.ContractsByNetwork(network)
-	if err != nil {
-		return false
-	}
+	contracts := p.ContractsByNetwork(network)
 
 	uniq := funk.Uniq(
 		funk.Map(contracts, func(c Contract) string {
@@ -174,22 +171,16 @@ func (p *Project) SetEmulatorServiceKey(privateKey crypto.PrivateKey) {
 }
 
 // ContractsByNetwork returns all contracts for a network.
-func (p *Project) ContractsByNetwork(network string) ([]Contract, error) {
+func (p *Project) ContractsByNetwork(network string) []Contract {
 	contracts := make([]Contract, 0)
 
 	// get deployments for the specified network
 	for _, deploy := range p.conf.Deployments.GetByNetwork(network) {
 		account := p.AccountByName(deploy.Account)
-		if account == nil {
-			return nil, fmt.Errorf("could not find account with name %s in the configuration", deploy.Account)
-		}
 
 		// go through each contract in this deployment
 		for _, contractName := range deploy.Contracts {
 			c := p.conf.Contracts.GetByNameAndNetwork(contractName, network)
-			if c == nil {
-				return nil, fmt.Errorf("could not find contract with name name %s in the configuration", contractName)
-			}
 
 			contract := Contract{
 				Name:   c.Name,
@@ -201,7 +192,7 @@ func (p *Project) ContractsByNetwork(network string) ([]Contract, error) {
 		}
 	}
 
-	return contracts, nil
+	return contracts
 }
 
 // AccountNamesForNetwork returns all configured account names for a network.
@@ -255,11 +246,9 @@ func (p *Project) AccountByName(name string) *Account {
 	return account
 }
 
-type Aliases map[string]string
-
 // AliasesForNetwork returns all deployment aliases for a network.
-func (p *Project) AliasesForNetwork(network string) Aliases {
-	aliases := make(Aliases)
+func (p *Project) AliasesForNetwork(network string) map[string]string {
+	aliases := make(map[string]string)
 
 	// get all contracts for selected network and if any has an address as target make it an alias
 	for _, contract := range p.conf.Contracts.GetByNetwork(network) {
diff --git a/pkg/flowcli/project/transaction.go b/pkg/flowcli/project/transaction.go
index 98edf191..f1cfbdfc 100644
--- a/pkg/flowcli/project/transaction.go
+++ b/pkg/flowcli/project/transaction.go
@@ -169,6 +169,17 @@ func (t *Transaction) FlowTransaction() *flow.Transaction {
 	return t.tx
 }
 
+// SetScriptWithArgsFromFile set scripts for transaction by loading it from file and setting args
+func (t *Transaction) SetScriptWithArgsFromFile(filepath string, args []string, argsJSON string) error {
+	script, err := util.LoadFile(filepath)
+	if err != nil {
+		return err
+	}
+
+	return t.SetScriptWithArgs(script, args, argsJSON)
+}
+
+// SetScriptWithArgs set script for transaction and set arguments for script
 func (t *Transaction) SetScriptWithArgs(script []byte, args []string, argsJSON string) error {
 	t.tx.SetScript(script)
 	return t.AddRawArguments(args, argsJSON)
diff --git a/pkg/flowcli/services/accounts.go b/pkg/flowcli/services/accounts.go
index 5c1a6a5b..d4412021 100644
--- a/pkg/flowcli/services/accounts.go
+++ b/pkg/flowcli/services/accounts.go
@@ -69,7 +69,6 @@ func (a *Accounts) Get(address string) (*flow.Account, error) {
 // StakingInfo returns the staking information for an account.
 func (a *Accounts) StakingInfo(accountAddress string) (*cadence.Value, *cadence.Value, error) {
 	a.logger.StartProgress(fmt.Sprintf("Fetching info for %s...", accountAddress))
-	defer a.logger.StopProgress()
 
 	address := flow.HexToAddress(accountAddress)
 
@@ -114,7 +113,6 @@ func (a *Accounts) StakingInfo(accountAddress string) (*cadence.Value, *cadence.
 func (a *Accounts) Create(
 	signerName string,
 	keys []string,
-	keyWeights []int,
 	signatureAlgorithm string,
 	hashingAlgorithm string,
 	contracts []string,
@@ -123,22 +121,12 @@ func (a *Accounts) Create(
 		return nil, fmt.Errorf("missing configuration, initialize it: flow init")
 	}
 
-	// if more than one key is provided and at least one weight is specified, make sure there isn't a missmatch
-	if len(keys) > 1 && len(keyWeights) > 0 && len(keys) != len(keyWeights) {
-		return nil, fmt.Errorf(
-			"number of keys and weights provided must match, number of provided keys: %d, number of provided key weights: %d",
-			len(keys),
-			len(keyWeights),
-		)
-	}
-
 	signer := a.project.AccountByName(signerName)
 	if signer == nil {
 		return nil, fmt.Errorf("signer account: [%s] doesn't exists in configuration", signerName)
 	}
 
 	a.logger.StartProgress("Creating account...")
-	defer a.logger.StopProgress()
 
 	accountKeys := make([]*flow.AccountKey, len(keys))
 
@@ -160,20 +148,11 @@ func (a *Accounts) Create(
 			)
 		}
 
-		weight := flow.AccountKeyWeightThreshold
-		if len(keyWeights) > i {
-			weight = keyWeights[i]
-
-			if weight > flow.AccountKeyWeightThreshold || weight <= 0 {
-				return nil, fmt.Errorf("invalid key weight, valid range (0 - 1000)")
-			}
-		}
-
 		accountKeys[i] = &flow.AccountKey{
 			PublicKey: publicKey,
 			SigAlgo:   sigAlgo,
 			HashAlgo:  hashAlgo,
-			Weight:    weight,
+			Weight:    flow.AccountKeyWeightThreshold,
 		}
 	}
 
@@ -289,7 +268,6 @@ func (a *Accounts) addContract(
 			account.Address(),
 		),
 	)
-	defer a.logger.StopProgress()
 
 	tx, err := project.NewAddAccountContractTransaction(
 		account,
@@ -368,7 +346,6 @@ func (a *Accounts) RemoveContract(
 	a.logger.StartProgress(
 		fmt.Sprintf("Removing Contract %s from %s...", contractName, account.Address()),
 	)
-	defer a.logger.StopProgress()
 
 	tx, err := project.NewRemoveAccountContractTransaction(account, contractName)
 	if err != nil {
diff --git a/pkg/flowcli/services/blocks.go b/pkg/flowcli/services/blocks.go
index 01dda605..b18f18bb 100644
--- a/pkg/flowcli/services/blocks.go
+++ b/pkg/flowcli/services/blocks.go
@@ -62,7 +62,6 @@ func (e *Blocks) GetBlock(
 	verbose bool,
 ) (*flow.Block, []client.BlockEvents, []*flow.Collection, error) {
 	e.logger.StartProgress("Fetching Block...")
-	defer e.logger.StopProgress()
 
 	// smart parsing of query
 	var err error
diff --git a/pkg/flowcli/services/events.go b/pkg/flowcli/services/events.go
index 7e49eec8..696ae253 100644
--- a/pkg/flowcli/services/events.go
+++ b/pkg/flowcli/services/events.go
@@ -61,7 +61,6 @@ func (e *Events) Get(name string, start string, end string) ([]client.BlockEvent
 	}
 
 	e.logger.StartProgress("Fetching Events...")
-	defer e.logger.StopProgress()
 
 	var endHeight uint64
 	if end == "" {
diff --git a/pkg/flowcli/services/project.go b/pkg/flowcli/services/project.go
index 230286f9..632f95a1 100644
--- a/pkg/flowcli/services/project.go
+++ b/pkg/flowcli/services/project.go
@@ -109,12 +109,7 @@ func (p *Project) Deploy(network string, update bool) ([]*contracts.Contract, er
 		p.project.AliasesForNetwork(network),
 	)
 
-	contractsNetwork, err := p.project.ContractsByNetwork(network)
-	if err != nil {
-		return nil, err
-	}
-
-	for _, contract := range contractsNetwork {
+	for _, contract := range p.project.ContractsByNetwork(network) {
 		err := processor.AddContractSource(
 			contract.Name,
 			contract.Source,
@@ -125,7 +120,7 @@ func (p *Project) Deploy(network string, update bool) ([]*contracts.Contract, er
 		}
 	}
 
-	err = processor.ResolveImports()
+	err := processor.ResolveImports()
 	if err != nil {
 		return nil, err
 	}
@@ -140,7 +135,6 @@ func (p *Project) Deploy(network string, update bool) ([]*contracts.Contract, er
 		len(orderedContracts),
 		strings.Join(p.project.AccountNamesForNetwork(network), ","),
 	))
-	defer p.logger.StopProgress()
 
 	block, err := p.gateway.GetLatestBlock()
 	if err != nil {
diff --git a/pkg/flowcli/services/scripts.go b/pkg/flowcli/services/scripts.go
index 9aa72d5c..c2f6973f 100644
--- a/pkg/flowcli/services/scripts.go
+++ b/pkg/flowcli/services/scripts.go
@@ -19,12 +19,9 @@
 package services
 
 import (
-	"fmt"
-
 	"github.com/onflow/cadence"
 
 	"github.com/onflow/flow-cli/pkg/flowcli"
-	"github.com/onflow/flow-cli/pkg/flowcli/contracts"
 	"github.com/onflow/flow-cli/pkg/flowcli/gateway"
 	"github.com/onflow/flow-cli/pkg/flowcli/output"
 	"github.com/onflow/flow-cli/pkg/flowcli/project"
@@ -52,56 +49,25 @@ func NewScripts(
 }
 
 // Execute executes a Cadence script from a file.
-func (s *Scripts) Execute(scriptPath string, args []string, argsJSON string, network string) (cadence.Value, error) {
-	script, err := util.LoadFile(scriptPath)
+func (s *Scripts) Execute(scriptFilename string, args []string, argsJSON string) (cadence.Value, error) {
+	script, err := util.LoadFile(scriptFilename)
 	if err != nil {
 		return nil, err
 	}
 
-	return s.execute(script, args, argsJSON, scriptPath, network)
+	return s.execute(script, args, argsJSON)
 }
 
 // Execute executes a Cadence script from a source code string.
 func (s *Scripts) ExecuteWithCode(code []byte, args []string, argsJSON string) (cadence.Value, error) {
-	return s.execute(code, args, argsJSON, "", "")
+	return s.execute(code, args, argsJSON)
 }
 
-func (s *Scripts) execute(code []byte, args []string, argsJSON string, scriptPath string, network string) (cadence.Value, error) {
+func (s *Scripts) execute(code []byte, args []string, argsJSON string) (cadence.Value, error) {
 	scriptArgs, err := flowcli.ParseArguments(args, argsJSON)
 	if err != nil {
 		return nil, err
 	}
 
-	resolver, err := contracts.NewResolver(code)
-	if err != nil {
-		return nil, err
-	}
-
-	if resolver.HasFileImports() {
-		if s.project == nil {
-			return nil, fmt.Errorf("missing configuration, initialize it: flow init")
-		}
-		if network == "" {
-			return nil, fmt.Errorf("missing network, specify which network to use to resolve imports in script code")
-		}
-		if scriptPath == "" { // when used as lib with code we don't support imports
-			return nil, fmt.Errorf("resolving imports in scripts not supported")
-		}
-
-		contractsNetwork, err := s.project.ContractsByNetwork(network)
-		if err != nil {
-			return nil, err
-		}
-
-		code, err = resolver.ResolveImports(
-			scriptPath,
-			contractsNetwork,
-			s.project.AliasesForNetwork(network),
-		)
-		if err != nil {
-			return nil, err
-		}
-	}
-
 	return s.gateway.ExecuteScript(code, scriptArgs)
 }
diff --git a/pkg/flowcli/services/transactions.go b/pkg/flowcli/services/transactions.go
index 44e751ef..49d583b8 100644
--- a/pkg/flowcli/services/transactions.go
+++ b/pkg/flowcli/services/transactions.go
@@ -22,7 +22,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/onflow/flow-cli/pkg/flowcli/contracts"
+	"github.com/onflow/flow-cli/pkg/flowcli/util"
 
 	"github.com/onflow/flow-go-sdk"
 	"github.com/onflow/flow-go-sdk/crypto"
@@ -30,7 +30,6 @@ import (
 	"github.com/onflow/flow-cli/pkg/flowcli/gateway"
 	"github.com/onflow/flow-cli/pkg/flowcli/output"
 	"github.com/onflow/flow-cli/pkg/flowcli/project"
-	"github.com/onflow/flow-cli/pkg/flowcli/util"
 )
 
 // Transactions is a service that handles all transaction-related interactions.
@@ -86,10 +85,9 @@ func (t *Transactions) Build(
 	authorizer []string,
 	payer string,
 	proposerKeyIndex int,
-	codeFilename string,
+	scriptFilename string,
 	args []string,
 	argsJSON string,
-	network string,
 ) (*project.Transaction, error) {
 	proposerAddress, err := getAddressFromStringOrConfig(proposer, t.project)
 	if err != nil {
@@ -127,40 +125,7 @@ func (t *Transactions) Build(
 		SetDefaultGasLimit().
 		SetBlockReference(latestBlock)
 
-	code, err := util.LoadFile(codeFilename)
-	if err != nil {
-		return nil, err
-	}
-
-	resolver, err := contracts.NewResolver(code)
-	if err != nil {
-		return nil, err
-	}
-
-	if resolver.HasFileImports() {
-		if network == "" {
-			return nil, fmt.Errorf("missing network, specify which network to use to resolve imports in transaction code")
-		}
-		if codeFilename == "" { // when used as lib with code we don't support imports
-			return nil, fmt.Errorf("resolving imports in transactions not supported")
-		}
-
-		contractsNetwork, err := t.project.ContractsByNetwork(network)
-		if err != nil {
-			return nil, err
-		}
-
-		code, err = resolver.ResolveImports(
-			codeFilename,
-			contractsNetwork,
-			t.project.AliasesForNetwork(network),
-		)
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	err = tx.SetScriptWithArgs(code, args, argsJSON)
+	err = tx.SetScriptWithArgsFromFile(scriptFilename, args, argsJSON)
 	if err != nil {
 		return nil, err
 	}
@@ -233,7 +198,6 @@ func (t *Transactions) Send(
 	signerName string,
 	args []string,
 	argsJSON string,
-	network string,
 ) (*flow.Transaction, *flow.TransactionResult, error) {
 	if t.project == nil {
 		return nil, nil, fmt.Errorf("missing configuration, initialize it: flow project init")
@@ -252,7 +216,6 @@ func (t *Transactions) Send(
 		transactionFilename,
 		args,
 		argsJSON,
-		network,
 	)
 	if err != nil {
 		return nil, nil, err
@@ -268,8 +231,7 @@ func (t *Transactions) Send(
 		return nil, nil, err
 	}
 
-	t.logger.StartProgress(fmt.Sprintf("Sending Transaction with ID: %s", signed.FlowTransaction().ID()))
-	defer t.logger.StopProgress()
+	t.logger.StartProgress("Sending Transaction...")
 
 	sentTx, err := t.gateway.SendSignedTransaction(signed)
 	if err != nil {
@@ -319,7 +281,6 @@ func (t *Transactions) SendForAddressWithCode(
 	}
 
 	t.logger.StartProgress("Sending transaction...")
-	defer t.logger.StopProgress()
 
 	sentTx, err := t.gateway.SendSignedTransaction(tx)
 	if err != nil {
@@ -336,8 +297,10 @@ func (t *Transactions) SendForAddressWithCode(
 
 // getAddressFromStringOrConfig try to parse value as address or as an account from the config
 func getAddressFromStringOrConfig(value string, project *project.Project) (flow.Address, error) {
-	if util.ValidAddress(value) {
-		return flow.HexToAddress(value), nil
+	address, isValid := util.ParseAddress(value)
+
+	if isValid {
+		return address, nil
 	} else if project != nil {
 		account := project.AccountByName(value)
 		if account == nil {
diff --git a/pkg/flowcli/util/utilities.go b/pkg/flowcli/util/utilities.go
index 1f01e2c0..b24c6693 100644
--- a/pkg/flowcli/util/utilities.go
+++ b/pkg/flowcli/util/utilities.go
@@ -30,7 +30,7 @@ import (
 
 var Green = color.New(color.FgGreen, color.Bold).SprintfFunc()
 var Red = color.New(color.FgRed, color.Bold).SprintfFunc()
-var Bold = color.New(color.FgCyan).SprintfFunc()
+var Bold = color.New(color.Bold).SprintfFunc()
 
 // LoadFile loads a file by filename.
 func LoadFile(filename string) ([]byte, error) {
@@ -114,11 +114,11 @@ func ContainsString(s []string, e string) bool {
 	return false
 }
 
-func ValidAddress(value string) bool {
+func ParseAddress(value string) (flow.Address, bool) {
 	address := flow.HexToAddress(value)
 
 	// valid on any chain
-	return address.IsValid(flow.Mainnet) ||
+	return address, address.IsValid(flow.Mainnet) ||
 		address.IsValid(flow.Testnet) ||
 		address.IsValid(flow.Emulator)
 }


Test patch:
diff --git a/pkg/flowcli/contracts/resolver_test.go b/pkg/flowcli/contracts/resolver_test.go
deleted file mode 100644
index d769d572..00000000
--- a/pkg/flowcli/contracts/resolver_test.go
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Flow CLI
- *
- * Copyright 2019-2021 Dapper Labs, Inc.
- *
- * 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 contracts
-
-import (
-	"regexp"
-	"testing"
-
-	"github.com/onflow/flow-go-sdk"
-	"github.com/stretchr/testify/assert"
-
-	"github.com/onflow/flow-cli/pkg/flowcli/project"
-)
-
-func cleanCode(code []byte) string {
-	space := regexp.MustCompile(`\s+`)
-	return space.ReplaceAllString(string(code), " ")
-}
-
-func TestResolver(t *testing.T) {
-
-	contracts := []project.Contract{{
-		Name:   "Kibble",
-		Source: "./tests/Kibble.cdc",
-		Target: flow.HexToAddress("0x1"),
-	}, {
-		Name:   "FT",
-		Source: "./tests/FT.cdc",
-		Target: flow.HexToAddress("0x2"),
-	}}
-
-	aliases := map[string]string{
-		"./tests/NFT.cdc": flow.HexToAddress("0x4").String(),
-	}
-
-	paths := []string{
-		"./tests/foo.cdc",
-		"./scripts/bar/foo.cdc",
-		"./scripts/bar/foo.cdc",
-	}
-
-	scripts := [][]byte{
-		[]byte(`
-			import Kibble from "./Kibble.cdc"
-      import FT from "./FT.cdc"
-			pub fun main() {}
-    `), []byte(`
-			import Kibble from "../../tests/Kibble.cdc"
-      import FT from "../../tests/FT.cdc"
-			pub fun main() {}
-    `), []byte(`
-			import Kibble from "../../tests/Kibble.cdc"
-      import NFT from "../../tests/NFT.cdc"
-			pub fun main() {}
-    `),
-	}
-
-	resolved := [][]byte{
-		[]byte(`
-			import Kibble from 0x0000000000000001 
-			import FT from 0x0000000000000002 
-			pub fun main() {}
-    `), []byte(`
-			import Kibble from 0x0000000000000001 
-			import FT from 0x0000000000000002 
-			pub fun main() {}
-    `), []byte(`
-			import Kibble from 0x0000000000000001 
-			import NFT from 0x0000000000000004 
-			pub fun main() {}
-    `),
-	}
-
-	t.Run("Import exists", func(t *testing.T) {
-		resolver, err := NewResolver([]byte(`
-      import Kibble from "./Kibble.cdc"
-      pub fun main() {}
-    `))
-		assert.NoError(t, err)
-		assert.True(t, resolver.HasFileImports())
-	})
-
-	t.Run("Import doesn't exists", func(t *testing.T) {
-		resolver, err := NewResolver([]byte(`
-      pub fun main() {}
-    `))
-		assert.NoError(t, err)
-		assert.False(t, resolver.HasFileImports())
-
-		resolver, err = NewResolver([]byte(`
-			import Foo from 0xf8d6e0586b0a20c7
-      pub fun main() {}
-    `))
-		assert.NoError(t, err)
-		assert.False(t, resolver.HasFileImports())
-	})
-
-	t.Run("Parse imports", func(t *testing.T) {
-		resolver, err := NewResolver(scripts[0])
-		assert.NoError(t, err)
-		assert.Equal(t, resolver.getFileImports(), []string{
-			"./Kibble.cdc", "./FT.cdc",
-		})
-	})
-
-	t.Run("Resolve imports", func(t *testing.T) {
-		for i, script := range scripts {
-			resolver, err := NewResolver(script)
-			assert.NoError(t, err)
-
-			code, err := resolver.ResolveImports(paths[i], contracts, aliases)
-
-			assert.NoError(t, err)
-			assert.Equal(t, cleanCode(code), cleanCode(resolved[i]))
-		}
-	})
-
-}
diff --git a/pkg/flowcli/project/project_test.go b/pkg/flowcli/project/project_test.go
index 5b6f401c..a89af259 100644
--- a/pkg/flowcli/project/project_test.go
+++ b/pkg/flowcli/project/project_test.go
@@ -318,7 +318,7 @@ Project Tests
 func Test_GetContractsByNameSimple(t *testing.T) {
 	p := generateSimpleProject()
 
-	contracts, _ := p.ContractsByNetwork("emulator")
+	contracts := p.ContractsByNetwork("emulator")
 
 	assert.Len(t, contracts, 1)
 	assert.Equal(t, contracts[0].Name, "NonFungibleToken")
@@ -360,7 +360,7 @@ func Test_HostSimple(t *testing.T) {
 func Test_GetContractsByNameComplex(t *testing.T) {
 	p := generateComplexProject()
 
-	contracts, _ := p.ContractsByNetwork("emulator")
+	contracts := p.ContractsByNetwork("emulator")
 
 	assert.Equal(t, 7, len(contracts))
 
@@ -452,7 +452,7 @@ func Test_GetAliases(t *testing.T) {
 	p := generateAliasesProject()
 
 	aliases := p.AliasesForNetwork("emulator")
-	contracts, _ := p.ContractsByNetwork("emulator")
+	contracts := p.ContractsByNetwork("emulator")
 
 	assert.Len(t, aliases, 1)
 	assert.Equal(t, aliases["../hungry-kitties/cadence/contracts/FungibleToken.cdc"], "ee82856bf20e2aa6")
@@ -464,10 +464,10 @@ func Test_GetAliasesComplex(t *testing.T) {
 	p := generateAliasesComplexProject()
 
 	aEmulator := p.AliasesForNetwork("emulator")
-	cEmulator, _ := p.ContractsByNetwork("emulator")
+	cEmulator := p.ContractsByNetwork("emulator")
 
 	aTestnet := p.AliasesForNetwork("testnet")
-	cTestnet, _ := p.ContractsByNetwork("testnet")
+	cTestnet := p.ContractsByNetwork("testnet")
 
 	assert.Len(t, cEmulator, 1)
 	assert.Equal(t, cEmulator[0].Name, "NonFungibleToken")
diff --git a/pkg/flowcli/services/accounts_test.go b/pkg/flowcli/services/accounts_test.go
index 486e61d4..38dc5fba 100644
--- a/pkg/flowcli/services/accounts_test.go
+++ b/pkg/flowcli/services/accounts_test.go
@@ -89,7 +89,7 @@ func TestAccounts(t *testing.T) {
 			return tests.NewAccountWithAddress(address.String()), nil
 		}
 
-		a, err := accounts.Create(serviceName, []string{pubKey}, []int{1000}, sigAlgo, hashAlgo, nil)
+		a, err := accounts.Create(serviceName, []string{pubKey}, sigAlgo, hashAlgo, nil)
 
 		assert.NotNil(t, a)
 		assert.NoError(t, err)
@@ -115,7 +115,7 @@ func TestAccounts(t *testing.T) {
 			return tests.NewAccountWithAddress(address.String()), nil
 		}
 
-		a, err := accounts.Create(serviceName, []string{pubKey}, []int{1000}, sigAlgo, hashAlgo, []string{"Hello:../../../tests/Hello.cdc"})
+		a, err := accounts.Create(serviceName, []string{pubKey}, sigAlgo, hashAlgo, []string{"Hello:../../../tests/Hello.cdc"})
 
 		assert.NotNil(t, a)
 		assert.NoError(t, err)
diff --git a/pkg/flowcli/services/scripts_test.go b/pkg/flowcli/services/scripts_test.go
index e72b1d39..47c6778f 100644
--- a/pkg/flowcli/services/scripts_test.go
+++ b/pkg/flowcli/services/scripts_test.go
@@ -45,7 +45,7 @@ func TestScripts(t *testing.T) {
 			return arguments[0], nil
 		}
 
-		_, err := scripts.Execute("../../../tests/script.cdc", []string{"String:Foo"}, "", "")
+		_, err := scripts.Execute("../../../tests/script.cdc", []string{"String:Foo"}, "")
 
 		assert.NoError(t, err)
 	})
diff --git a/pkg/flowcli/services/transactions_test.go b/pkg/flowcli/services/transactions_test.go
index 46ee3daf..4fe82a1f 100644
--- a/pkg/flowcli/services/transactions_test.go
+++ b/pkg/flowcli/services/transactions_test.go
@@ -95,7 +95,6 @@ func TestTransactions(t *testing.T) {
 			serviceName,
 			[]string{"String:Bar"},
 			"",
-			"",
 		)
 
 		assert.NoError(t, err)
@@ -122,7 +121,6 @@ func TestTransactions(t *testing.T) {
 			serviceName,
 			nil,
 			"[{\"type\": \"String\", \"value\": \"Bar\"}]",
-			"",
 		)
 
 		assert.NoError(t, err)
@@ -135,7 +133,6 @@ func TestTransactions(t *testing.T) {
 			serviceName,
 			[]string{"Bar"},
 			"",
-			"",
 		)
 		assert.Equal(t, err.Error(), "argument not passed in correct format, correct format is: Type:Value, got Bar")
 	})
@@ -146,7 +143,6 @@ func TestTransactions(t *testing.T) {
 			serviceName,
 			[]string{"Bar"},
 			"",
-			"",
 		)
 		assert.Equal(t, err.Error(), "Failed to load file: nooo.cdc")
 	})
@@ -157,7 +153,6 @@ func TestTransactions(t *testing.T) {
 			serviceName,
 			nil,
 			"[{\"Bar\":\"No\"}]",
-			"",
 		)
 		assert.Equal(t, err.Error(), "failed to decode value: invalid JSON Cadence structure")
 	})
diff --git a/tests/e2e_test.go b/tests/e2e_test.go
index ee6d1940..e74e5219 100644
--- a/tests/e2e_test.go
+++ b/tests/e2e_test.go
@@ -71,7 +71,6 @@ func TestAccount(t *testing.T) {
 		account, err := accounts.Create(
 			emulatorAccount,
 			keys,
-			[]int{1000},
 			"ECDSA_P256",
 			"SHA3_256",
 			[]string{},
@@ -208,19 +207,14 @@ func TestScripts(t *testing.T) {
 	scripts := services.NewScripts(gateway, project, logger)
 
 	t.Run("Test Script", func(t *testing.T) {
-		val, err := scripts.Execute("./script.cdc", []string{"String:Mr G"}, "", "")
+		val, err := scripts.Execute("./script.cdc", []string{"String:Mr G"}, "")
 
 		assert.NoError(t, err)
 		assert.Equal(t, val.String(), `"Hello Mr G"`)
 	})
 
 	t.Run("Test Script JSON args", func(t *testing.T) {
-		val, err := scripts.Execute(
-			"./script.cdc",
-			[]string{},
-			"[{\"type\": \"String\", \"value\": \"Mr G\"}]",
-			"",
-		)
+		val, err := scripts.Execute("./script.cdc", []string{}, "[{\"type\": \"String\", \"value\": \"Mr G\"}]")
 
 		assert.NoError(t, err)
 		assert.Equal(t, val.String(), `"Hello Mr G"`)
@@ -242,11 +236,7 @@ func TestTransactions(t *testing.T) {
 	var txID1 flow.Identifier
 
 	t.Run("Test Transactions", func(t *testing.T) {
-		tx, tr, err := transactions.Send(
-			"./transaction.cdc",
-			emulatorAccount, []string{"String:Hello"}, "",
-			"",
-		)
+		tx, tr, err := transactions.Send("./transaction.cdc", emulatorAccount, []string{"String:Hello"}, "")
 		txID1 = tx.ID()
 
 		assert.NoError(t, tr.Error)
@@ -256,11 +246,7 @@ func TestTransactions(t *testing.T) {
 	})
 
 	t.Run("Test Failed Transactions", func(t *testing.T) {
-		tx, tr, err := transactions.Send(
-			"./transactionErr.cdc",
-			emulatorAccount, []string{}, "",
-			"",
-		)
+		tx, tr, err := transactions.Send("./transactionErr.cdc", emulatorAccount, []string{}, "")
 
 		assert.NoError(t, err)
 		assert.NotNil(t, tr.Error)