diff --git a/.travis.yml b/.travis.yml
index 593c0f9..032e715 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,7 +22,7 @@
   include:
     - os: linux
       sudo: required
-      go: "1.9.3"
+      go: "1.14"
       services: docker
       dist: xenial
 
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..9b497f5
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,31 @@
+module github.com/apache/openwhisk-wskdeploy
+
+go 1.14
+
+require (
+	github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c
+	github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
+	github.com/fatih/color v1.5.0
+	github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
+	github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5 // indirect
+	github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c // indirect
+	github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da
+	github.com/inconshreveable/mousetrap v1.0.0 // indirect
+	github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35 // indirect
+	github.com/mattn/go-colorable v0.0.7
+	github.com/mattn/go-isatty v0.0.12 // indirect
+	github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da // indirect
+	github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6
+	github.com/onsi/ginkgo v1.14.0 // indirect
+	github.com/pelletier/go-buffruneio v0.1.0 // indirect
+	github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd // indirect
+	github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606 // indirect
+	github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e // indirect
+	github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7
+	github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80 // indirect
+	github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d // indirect
+	github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc
+	github.com/stretchr/testify v1.6.1
+	golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed // indirect
+	gopkg.in/yaml.v2 v2.3.0
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..6dcd296
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,115 @@
+github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c h1:HJim5LeEgcbd4ONmGTwX+ocW0iHK0ohGT3dz3tA0k9o=
+github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c/go.mod h1:jLLKYP7+1+LFlIJW1n9U1gqeveLM1HIwa4ZHNOFxjPw=
+github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:tuijfIjZyjZaHq9xDUh0tNitwXshJpbLkqMOJv4H3do=
+github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:po7NpZ/QiTKzBKyrsEAxwnTamCoh8uDk/egRpQ7siIc=
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/fatih/color v1.5.0 h1:vBh+kQp8lg9XPr56u1CPrWjFXtdphMoGWVHr9/1c+A0=
+github.com/fatih/color v1.5.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew=
+github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5 h1:oERTZ1buOUYlpmKaqlO5fYmz8cZ1rYu5DieJzF4ZVmU=
+github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
+github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c h1:2MeVe5pyNWMy3QG6+xZfqjrer3Ae9fWKdnwFWL2ciRE=
+github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
+github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da h1:oAWnYJWp6dui/q7a6g4bpLtxl2X3QTErdognIu1a/yM=
+github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35 h1:WtkHGe1cgg+lvDj9p5CvjXrfopsIss0vIAz+/zeYZyQ=
+github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+github.com/mattn/go-colorable v0.0.7 h1:zh4kz16dcPG+l666m12h0+dO2HGnQ1ngy7crMErE2UU=
+github.com/mattn/go-colorable v0.0.7/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da h1:z1HPq7I0Eajh3On8i7MEfqOurIg+aCllNR3omoF2UNY=
+github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6 h1:SuzoZ++gyy8VwR6DXSTwAIwTMdF0HFOkCHBATG46YPY=
+github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q=
+github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
+github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/pelletier/go-buffruneio v0.1.0 h1:ig6N9Cg71k/P+UUbhwdOFtJWz+qa8/3by7AzMprMWBM=
+github.com/pelletier/go-buffruneio v0.1.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
+github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd h1:LFdCPBzgbbt6CoebmOy/ePk3eeHgoJRh9RhQVGe2itk=
+github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606 h1:tgeCxbZvM5RCofQ9wbgUa6MVFjmw6kUNyTkQlJUCMOk=
+github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e h1:+axhEi83O3FFcwP/e9t09UHRmV1zZFl8RsgtO0zuZhY=
+github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
+github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7 h1:faD2f+W+M1cBr+yy71bsFt78g18TUksAf0SRdPP2O7c=
+github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80 h1:evyGXhHMrxKBDkdlSPv9HMWV2o53o+Ibhm28BGc0450=
+github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
+github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d h1:cpV+7T5E6SXMwGmiItJzTK/37mX2aQj1uWCYWtO3q9U=
+github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc h1:84Cie1cj6yClr0k7fBI4UIGpvOuwa4THRsQ9BwhMaO4=
+github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed h1:WBkVNH1zd9jg/dK4HCM4lNANnmd12EHC9z+LmcCG4ns=
+golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/parsers/deploy_parser_test.go b/parsers/deploy_parser_test.go
index 02efd9a..7ae0da9 100644
--- a/parsers/deploy_parser_test.go
+++ b/parsers/deploy_parser_test.go
@@ -55,7 +55,7 @@
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
 	// NOTE: go-yaml/yaml gets the line # wrong; testing only for the invalid key message
-	assert.Contains(t, err.Error(), "field invalidKey not found in struct parsers.Project")
+	assert.Contains(t, err.Error(), "field invalidKey not found in type parsers.Project")
 }
 
 func TestMappingValueDeploymentYaml(t *testing.T) {
@@ -73,8 +73,7 @@
 	p := NewYAMLParser()
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
-	// go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
-	assert.Contains(t, err.Error(), "line 2: mapping values are not allowed in this context")
+	assert.Contains(t, err.Error(), "line 3: mapping values are not allowed in this context")
 }
 
 func TestMissingRootNodeDeploymentYaml(t *testing.T) {
@@ -91,7 +90,7 @@
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
 	// go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
-	assert.Contains(t, err.Error(), "line 1: field name not found in struct parsers.YAML")
+	assert.Contains(t, err.Error(), "line 1: field name not found in type parsers.YAML")
 }
 
 func TestParseDeploymentYAML_Project(t *testing.T) {
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index d29e496..beff9cc 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -1227,7 +1227,7 @@
 						// web or web-export set to any of [true, yes, raw]; if not,
 						// we will try to add it (if no strict" flag) and warn user that we did so
 						if err := webaction.TryUpdateAPIsActionToWebAction(actionrecords, packageName,
-							apiName, actionName, false); err!=nil {
+							apiName, actionName, false); err != nil {
 							return requests, requestOptions, err
 						}
 						// verify that the sequence action is defined under sequence records
@@ -1236,7 +1236,7 @@
 						// web or web-export set to any of [true, yes, raw]; if not,
 						// we will try to add it (if no strict" flag) and warn user that we did so
 						if err := webaction.TryUpdateAPIsActionToWebAction(sequencerecords, packageName,
-							apiName, actionName, true); err!=nil {
+							apiName, actionName, true); err != nil {
 							return requests, requestOptions, err
 						}
 					} else {
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index ea5ef55..3782360 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -190,12 +190,12 @@
 func TestUnmarshalForHelloNodeJS(t *testing.T) {
 	testUnmarshalManifestPackageAndActionBasic(t,
 		"../tests/dat/manifest_hello_nodejs.yaml", // Manifest path
-		"helloworld",                              // Package name
-		1,                                         // # of Actions
-		"helloNodejs",                             // Action name
-		"actions/hello.js",                        // Function path
-		"nodejs:default",                                // "Runtime
-		"")                                        // "Main" function name
+		"helloworld",       // Package name
+		1,                  // # of Actions
+		"helloNodejs",      // Action name
+		"actions/hello.js", // Function path
+		"nodejs:default",   // "Runtime
+		"")                 // "Main" function name
 }
 
 // Test 2: validate manifest_parser:Unmarshal() method with a sample manifest in Java
@@ -254,7 +254,7 @@
 		1,                              // # of Actions
 		TEST_ACTION_NAME,               // Action name
 		"actions/hello-with-params.js", // Function path
-		"nodejs:default",                     // "Runtime
+		"nodejs:default",               // "Runtime
 		"")                             // "Main" function name
 
 	if pkg != nil {
@@ -1691,7 +1691,7 @@
 
 	assert.NotNil(t, err)
 	// NOTE: go-yaml/yaml gets the line # wrong; testing only for the invalid key message
-	assert.Contains(t, err.Error(), "field invalidKey not found in struct parsers.Package")
+	assert.Contains(t, err.Error(), "field invalidKey not found in type parsers.Package")
 }
 
 func TestBadYAMLInvalidKeyMappingValueInManifest(t *testing.T) {
@@ -1710,7 +1710,7 @@
 	_, err := p.ParseManifest("../tests/dat/manifest_bad_yaml_missing_root_key.yaml")
 
 	assert.NotNil(t, err)
-	assert.Contains(t, err.Error(), "field actions not found in struct parsers.YAML")
+	assert.Contains(t, err.Error(), "field actions not found in type parsers.YAML")
 }
 
 func TestBadYAMLInvalidCommentInManifest(t *testing.T) {
diff --git a/tests/dat/manifest_data_compose_actions_for_limits.yaml b/tests/dat/manifest_data_compose_actions_for_limits.yaml
index 7408149..574f3d5 100644
--- a/tests/dat/manifest_data_compose_actions_for_limits.yaml
+++ b/tests/dat/manifest_data_compose_actions_for_limits.yaml
@@ -21,7 +21,6 @@
       hello1:
         function: ../src/integration/helloworld/actions/hello.js
         limits:
-          timeout: 1
           timeout: 600000
       hello2:
         function: ../src/integration/helloworld/actions/hello.js
diff --git a/tests/src/integration/webaction/manifest.yml b/tests/src/integration/webaction/manifest.yml
index 7c6c550..27902b2 100644
--- a/tests/src/integration/webaction/manifest.yml
+++ b/tests/src/integration/webaction/manifest.yml
@@ -50,19 +50,17 @@
             greeting-web-action-final:
                 annotations:
                     web-export: true
+                    final: true
                 version: 1.0
                 function: src/greeting.js
                 runtime: nodejs:default
-                annotations:
-                    final: true
             greeting-web-action-with-custom-options:
                 annotations:
                     web-export: true
+                    web-custom-options: true
                 version: 1.0
                 function: src/greeting.js
                 runtime: nodejs:default
-                annotations:
-                    web-custom-options: true
         triggers:
             webActionTrigger:
         rules:
diff --git a/utils/misc.go b/utils/misc.go
index 30fb601..ea2b414 100644
--- a/utils/misc.go
+++ b/utils/misc.go
@@ -188,7 +188,7 @@
 	return keyValueArr
 }
 
-func GetActionFromActionRecords( records []ActionRecord, packageName string, actionName string ) *whisk.Action {
+func GetActionFromActionRecords(records []ActionRecord, packageName string, actionName string) *whisk.Action {
 	for _, record := range records {
 		if record.Packagename == packageName {
 			if record.Action.Name == actionName {
diff --git a/webaction/webaction.go b/webaction/webaction.go
index b4f2f9f..949f6a9 100644
--- a/webaction/webaction.go
+++ b/webaction/webaction.go
@@ -82,11 +82,11 @@
 
 type WebActionAnnotationMethod func(annotations whisk.KeyValueArr) whisk.KeyValueArr
 
-func webActionAnnotations( fetchAnnotations bool, annotations whisk.KeyValueArr,
+func webActionAnnotations(fetchAnnotations bool, annotations whisk.KeyValueArr,
 	webActionAnnotationMethod WebActionAnnotationMethod) (whisk.KeyValueArr, error) {
 
-		if annotations != nil || !fetchAnnotations {
-			annotations = webActionAnnotationMethod(annotations)
+	if annotations != nil || !fetchAnnotations {
+		annotations = webActionAnnotationMethod(annotations)
 	}
 
 	return annotations, nil
@@ -149,7 +149,7 @@
 	return (annotations.FindKeyValue(key) >= 0)
 }
 
-func warnWebAnnotationMissingFromActionOrSequence(apiName string, actionName string, isSequence bool){
+func warnWebAnnotationMissingFromActionOrSequence(apiName string, actionName string, isSequence bool) {
 	nameKey := wski18n.KEY_ACTION
 	i18nWarningID := wski18n.ID_WARN_API_MISSING_WEB_ACTION_X_action_X_api_X
 
@@ -160,8 +160,8 @@
 
 	warningString := wski18n.T(i18nWarningID,
 		map[string]interface{}{
-			nameKey: actionName,
-			wski18n.KEY_API:      apiName})
+			nameKey:         actionName,
+			wski18n.KEY_API: apiName})
 	wskprint.PrintOpenWhiskWarning(warningString)
 }
 
@@ -170,22 +170,22 @@
 	// if records are nil; it may be that the Action already exists at target provider OR
 	// this is a unit test.  If the former case, we pass through and allow provider to validate
 	// and return an error.
-	if records!=nil {
-		action := utils.GetActionFromActionRecords(records,pkgName,actionName)
+	if records != nil {
+		action := utils.GetActionFromActionRecords(records, pkgName, actionName)
 
-		if !HasAnnotation(&action.Annotations,WEB_EXPORT_ANNOT) {
+		if !HasAnnotation(&action.Annotations, WEB_EXPORT_ANNOT) {
 			if !utils.Flags.Strict {
-				warnWebAnnotationMissingFromActionOrSequence(apiName,actionName,isSequence)
+				warnWebAnnotationMissingFromActionOrSequence(apiName, actionName, isSequence)
 				action.Annotations = addWebAnnotations(action.Annotations)
 				wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose,
-					fmt.Sprintf("Web Annotations to Action; result: %v\n",action.Annotations))
+					fmt.Sprintf("Web Annotations to Action; result: %v\n", action.Annotations))
 			} else {
-				return wskderrors.NewInvalidWebActionError(apiName,actionName,isSequence)
+				return wskderrors.NewInvalidWebActionError(apiName, actionName, isSequence)
 			}
 		} else {
 			// verify its web-export annotation value is "true", else error
 			if !action.WebAction() {
-				return wskderrors.NewInvalidWebActionError(apiName,actionName,isSequence)
+				return wskderrors.NewInvalidWebActionError(apiName, actionName, isSequence)
 			}
 		}
 	}
@@ -198,42 +198,42 @@
 	var enabled = wski18n.FEATURE_DISABLED
 
 	switch value.(type) {
-		case string:
-			secureValue := value.(string)
-			// assure the user-supplied token is valid (i.e., for now a non-empty string)
-			if len(secureValue) != 0 && secureValue!="<nil>" {
-				isValid = true
-				enabled = wski18n.FEATURE_ENABLED
-			}
-		case int:
-			secureValue := value.(int)
-			// FYI, the CLI defines MAX_JS_INT = 1<<53 - 1 (i.e.,  9007199254740991)
-			// NOTE: For JS, the largest exact integral value is 253-1, or 9007199254740991.
-			// In ES6, this is defined as Number MAX_SAFE_INTEGER.
-			// However, in JS, the bitwise operators and shift operators operate on 32-bit ints,
-			// so in that case, the max safe integer is 231-1, or 2147483647
-			// We also disallow negative integers
-			// NOTE: when building for 386 archs. we need to assure comparison with MAX_JS_INT does not
-			// "blow up" and must allow the compiler to compare an untyped int (secureValue) to effectively
-			// an int64... so for the comparison we MUST force a type conversion to avoid "int" size mismatch
-			if int64(secureValue) < MAX_JS_INT && secureValue > 0 {
-				isValid = true
-				enabled = wski18n.FEATURE_ENABLED
-			}
-		case bool:
-			secureValue := value.(bool)
+	case string:
+		secureValue := value.(string)
+		// assure the user-supplied token is valid (i.e., for now a non-empty string)
+		if len(secureValue) != 0 && secureValue != "<nil>" {
 			isValid = true
-			if secureValue {
-				enabled = wski18n.FEATURE_ENABLED
-			}
+			enabled = wski18n.FEATURE_ENABLED
+		}
+	case int:
+		secureValue := value.(int)
+		// FYI, the CLI defines MAX_JS_INT = 1<<53 - 1 (i.e.,  9007199254740991)
+		// NOTE: For JS, the largest exact integral value is 253-1, or 9007199254740991.
+		// In ES6, this is defined as Number MAX_SAFE_INTEGER.
+		// However, in JS, the bitwise operators and shift operators operate on 32-bit ints,
+		// so in that case, the max safe integer is 231-1, or 2147483647
+		// We also disallow negative integers
+		// NOTE: when building for 386 archs. we need to assure comparison with MAX_JS_INT does not
+		// "blow up" and must allow the compiler to compare an untyped int (secureValue) to effectively
+		// an int64... so for the comparison we MUST force a type conversion to avoid "int" size mismatch
+		if int64(secureValue) < MAX_JS_INT && secureValue > 0 {
+			isValid = true
+			enabled = wski18n.FEATURE_ENABLED
+		}
+	case bool:
+		secureValue := value.(bool)
+		isValid = true
+		if secureValue {
+			enabled = wski18n.FEATURE_ENABLED
+		}
 	}
 
 	if !isValid {
 		errMsg := wski18n.T(wski18n.ID_ERR_WEB_ACTION_REQUIRE_AUTH_TOKEN_INVALID_X_action_X_key_X_value,
 			map[string]interface{}{
 				wski18n.KEY_ACTION: actionName,
-				wski18n.KEY_KEY: REQUIRE_WHISK_AUTH,
-				wski18n.KEY_VALUE: fmt.Sprintf("%v", value)})
+				wski18n.KEY_KEY:    REQUIRE_WHISK_AUTH,
+				wski18n.KEY_VALUE:  fmt.Sprintf("%v", value)})
 		return errMsg, wskderrors.NewActionSecureKeyError(errMsg)
 	}
 
diff --git a/wskderrors/wskdeployerror.go b/wskderrors/wskdeployerror.go
index 70e0bcd..11ac431 100644
--- a/wskderrors/wskdeployerror.go
+++ b/wskderrors/wskdeployerror.go
@@ -456,8 +456,7 @@
 }
 
 func NewInvalidWebActionError(apiName string, actionName string, isSequence bool) *InvalidWebActionAPIError {
-	var err = &InvalidWebActionAPIError{
-	}
+	var err = &InvalidWebActionAPIError{}
 
 	i18nErrorID := wski18n.ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X
 
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index 09ac1f3..a16f310 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -37,7 +37,7 @@
 	CONFIGURATION      = "Configuration"
 	DEPLOYMENT_FILE    = "deployment file"
 	FEATURE_DISABLED   = "disabled"
-	FEATURE_ENABLED	   = "enabled"
+	FEATURE_ENABLED    = "enabled"
 	MANIFEST_FILE      = "manifest file"
 	NAME_PROJECT       = "project name"
 	PACKAGE_BINDING    = "package binding"
@@ -217,8 +217,8 @@
 	ID_ERR_INVALID_PARAM_FILE_X_file_X                                   = "msg_err_invalid_param_file"
 	ID_ERR_REQUIRED_INPUTS_MISSING_VALUE_X_inputs_X                      = "msg_err_required_inputs_missing_value"
 	ID_ERR_API_GATEWAY_BASE_PATH_INVALID_X_api_X                         = "msg_err_api_gateway_base_path_invalid"
-	ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X           			 = "msg_err_api_missing_web_action"
-	ID_ERR_API_MISSING_WEB_SEQUENCE_X_sequence_X_api_X      			 = "msg_err_api_missing_web_sequence"
+	ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X                       = "msg_err_api_missing_web_action"
+	ID_ERR_API_MISSING_WEB_SEQUENCE_X_sequence_X_api_X                   = "msg_err_api_missing_web_sequence"
 	ID_ERR_RUNTIME_PARSER_ERROR                                          = "msg_err_runtime_parser_error"
 	ID_ERR_WEB_ACTION_REQUIRE_AUTH_TOKEN_INVALID_X_action_X_key_X_value  = "msg_err_web_action_require_auth_token_invalid"
 
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index d26c1e5..e7d4e67 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -329,14 +329,14 @@
 
 // _bindata is a table, holding each asset generator, mapped to its name.
 var _bindata = map[string]func() (*asset, error){
-	"wski18n/resources/de_DE.all.json": wski18nResourcesDe_deAllJson,
-	"wski18n/resources/en_US.all.json": wski18nResourcesEn_usAllJson,
-	"wski18n/resources/es_ES.all.json": wski18nResourcesEs_esAllJson,
-	"wski18n/resources/fr_FR.all.json": wski18nResourcesFr_frAllJson,
-	"wski18n/resources/it_IT.all.json": wski18nResourcesIt_itAllJson,
-	"wski18n/resources/ja_JA.all.json": wski18nResourcesJa_jaAllJson,
-	"wski18n/resources/ko_KR.all.json": wski18nResourcesKo_krAllJson,
-	"wski18n/resources/pt_BR.all.json": wski18nResourcesPt_brAllJson,
+	"wski18n/resources/de_DE.all.json":   wski18nResourcesDe_deAllJson,
+	"wski18n/resources/en_US.all.json":   wski18nResourcesEn_usAllJson,
+	"wski18n/resources/es_ES.all.json":   wski18nResourcesEs_esAllJson,
+	"wski18n/resources/fr_FR.all.json":   wski18nResourcesFr_frAllJson,
+	"wski18n/resources/it_IT.all.json":   wski18nResourcesIt_itAllJson,
+	"wski18n/resources/ja_JA.all.json":   wski18nResourcesJa_jaAllJson,
+	"wski18n/resources/ko_KR.all.json":   wski18nResourcesKo_krAllJson,
+	"wski18n/resources/pt_BR.all.json":   wski18nResourcesPt_brAllJson,
 	"wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
 	"wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
 }
@@ -380,17 +380,18 @@
 	Func     func() (*asset, error)
 	Children map[string]*bintree
 }
+
 var _bintree = &bintree{nil, map[string]*bintree{
 	"wski18n": &bintree{nil, map[string]*bintree{
 		"resources": &bintree{nil, map[string]*bintree{
-			"de_DE.all.json": &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
-			"en_US.all.json": &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
-			"es_ES.all.json": &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
-			"fr_FR.all.json": &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
-			"it_IT.all.json": &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
-			"ja_JA.all.json": &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
-			"ko_KR.all.json": &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
-			"pt_BR.all.json": &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
+			"de_DE.all.json":   &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
+			"en_US.all.json":   &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
+			"es_ES.all.json":   &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
+			"fr_FR.all.json":   &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
+			"it_IT.all.json":   &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
+			"ja_JA.all.json":   &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
+			"ko_KR.all.json":   &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
+			"pt_BR.all.json":   &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
 			"zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
 			"zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
 		}},
@@ -443,4 +444,3 @@
 	cannonicalName := strings.Replace(name, "\\", "/", -1)
 	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
 }
-
