diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9778fc91c..d1d96c1cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,31 @@
+<a name="1.0.4"></a>
+## [1.0.4](https://github.com/angular-ui/ui-router/compare/1.0.3...1.0.4) (2017-06-09)
+
+
+### Bug Fixes
+
+* **bundle:** work around rollup bug https://github.com/rollup/rollup/issues/1322 ([befb50a](https://github.com/angular-ui/ui-router/commit/befb50a))
+* **uiSrefActive:** Avoid "Possibly unhandled rejection" in console ([5c09e28](https://github.com/angular-ui/ui-router/commit/5c09e28))
+
+
+
+### @uirouter/core changes
+## [5.0.4](https://github.com/ui-router/core/compare/5.0.3...5.0.4) (2017-06-09)
+
+
+### Bug Fixes
+
+* **future:** Allow future states to specify a `parent:` ([828fe1b](https://github.com/ui-router/core/commit/828fe1b))
+* **view:** only sync views which are of the same name *and type* ([c48da4a](https://github.com/ui-router/core/commit/c48da4a))
+
+
+### Features
+
+* **invalidTransition:** Better error messaging when param values are invalid ([2a15d1a](https://github.com/ui-router/core/commit/2a15d1a))
+* **trace:** Trace view synchronization. Allow trace.enable(...string) ([284392d](https://github.com/ui-router/core/commit/284392d))
+
+
+
 <a name="1.0.3"></a>
 ## [1.0.3](https://github.com/angular-ui/ui-router/compare/1.0.1...1.0.3) (2017-05-07)
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c13efd24d..f4896914b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -22,11 +22,11 @@ Issues only! |
 -------------|
 Please keep in mind that the issue tracker is for *issues*. Please do *not* post an issue if you need help or support. Instead, see one of the above-mentioned forums or [IRC](irc://irc.freenode.net/#angularjs). |
 
-####Purple Labels
+#### Purple Labels
 A purple label means that **you** need to take some further action.
- - ![Not Actionable - Need Info](ngdoc_assets/incomplete.png): Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
- - ![Plunkr Please](ngdoc_assets/example.png): Please [create a plunkr](http://bit.ly/UIR-Plunk)
- - ![StackOverflow](ngdoc_assets/so.png): We suspect your issue is really a help request, or could be answered by the community.  Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router).  If you determine that is an actual issue, please explain why.
+ - ![Not Actionable - Need Info](https://angular-ui.github.io/ui-router/ngdoc_assets/incomplete.png): Your issue is not specific enough, or there is no clear action that we can take. Please clarify and refine your issue.
+ - ![Plunkr Please](https://angular-ui.github.io/ui-router/ngdoc_assets/example.png): Please [create a plunkr](http://bit.ly/UIR-Plunk)
+ - ![StackOverflow](https://angular-ui.github.io/ui-router/ngdoc_assets/so.png): We suspect your issue is really a help request, or could be answered by the community.  Please ask your question on [StackOverflow](http://stackoverflow.com/questions/ask?tags=angularjs,angular-ui-router).  If you determine that is an actual issue, please explain why.
 
 If your issue gets labeled with purple label, no further action will be taken until you respond to the label appropriately.
 
diff --git a/bower.json b/bower.json
index c35fe24f8..ee46290a6 100644
--- a/bower.json
+++ b/bower.json
@@ -1 +1 @@
-{"name":"angular-ui-router","description":"State-based routing for AngularJS","license":"MIT","main":"./release/angular-ui-router.js","dependencies":{"angular":">= 1.2.0"},"ignore":["**/.*","**/tsconfig.json","**/tsconfig.typedoc.json","**/webpack.config.js","**/node_modules","package.json","scripts","test","src"],"version":"1.0.3"}
\ No newline at end of file
+{"name":"angular-ui-router","description":"State-based routing for AngularJS","license":"MIT","main":"./release/angular-ui-router.js","dependencies":{"angular":">= 1.2.0"},"ignore":["**/.*","**/tsconfig.json","**/tsconfig.typedoc.json","**/webpack.config.js","**/node_modules","package.json","scripts","test","src"],"version":"1.0.4"}
\ No newline at end of file
diff --git a/package.json b/package.json
index a2b42e99e..40f9dcb70 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@uirouter/angularjs",
   "description": "State-based routing for AngularJS 1.x",
-  "version": "1.0.3",
+  "version": "1.0.4",
   "scripts": {
     "clean": "shx rm -rf lib lib-esm _doc build release *.log",
     "build": "tsc && tsc -m es6 --outDir lib-esm && npm run fixdts",
diff --git a/scripts/artifact_tagging.js b/scripts/artifact_tagging.js
index 5aa069e87..39b7067c9 100755
--- a/scripts/artifact_tagging.js
+++ b/scripts/artifact_tagging.js
@@ -3,15 +3,16 @@
 
 let pkg = require('../package.json');
 let version = pkg.version;
+let hybridVersion = require('../../angular-hybrid/package.json').version;
 
-require('shelljs/global');
+let shx = require('shelljs');
 let readlineSync = require('readline-sync');
 let fs = require('fs');
 let path = require('path');
 let util = require('./util');
 let _exec = util._exec;
 
-cd(path.join(__dirname, '..'));
+shx.cd(path.join(__dirname, '..'));
 
 var widen = false;
 var coreDep = pkg.dependencies['@uirouter/core'];
@@ -22,24 +23,31 @@ if (isNarrow && readlineSync.keyInYN('Widen @uirouter/core dependency from ' + c
   widen = false;
 }
 
-if (!readlineSync.keyInYN('Ready to publish to ' + version + '-artifacts tag?')) {
+let tagname = `${version}-hybrid-${hybridVersion}`;
+tagname += readlineSync.question(`Suffix for tag ${tagname} (optional)?`);
+
+if (!readlineSync.keyInYN(`Ready to publish ${tagname} tag?`)) {
   process.exit(1);
 }
 
 util.ensureCleanMaster('master');
 
 // then tag and push tag
-_exec(`git checkout -b ${version}-artifacts-prep`);
+_exec(`git checkout -b ${tagname}-prep`);
 
 pkg.dependencies['@uirouter/core'] = widenedDep;
+pkg.version = tagname;
+
 fs.writeFileSync("package.json", JSON.stringify(pkg, undefined, 2));
 _exec('git commit -m "Widening @uirouter/core dependency range to ' + widenedDep + '" package.json');
 
 _exec('npm run package');
 
 _exec(`git add --force lib lib-esm release package.json`);
+_exec(`git rm yarn.lock`);
+
 _exec(`git commit -m 'chore(*): commiting build files'`);
-_exec(`git tag ${version}-artifacts`);
-_exec(`git push -u origin ${version}-artifacts`);
+_exec(`git tag ${tagname}`);
+_exec(`git push -u origin ${tagname}`);
 _exec(`git checkout master`);
-_exec(`git branch -D ${version}-artifacts-prep`);
+_exec(`git branch -D ${tagname}-prep`);
diff --git a/src/directives/stateDirectives.ts b/src/directives/stateDirectives.ts
index e2b3e9a10..a8803ba94 100644
--- a/src/directives/stateDirectives.ts
+++ b/src/directives/stateDirectives.ts
@@ -564,7 +564,7 @@ uiSrefActive = ['$state', '$stateParams', '$interpolate', '$uiRouter',
           };
 
           function updateAfterTransition(trans) {
-            trans.promise.then(update);
+            trans.promise.then(update, noop);
           }
 
           $scope.$on('$stateChangeSuccess', update);
diff --git a/src/index.ts b/src/index.ts
index c65d207ba..a56f0ec14 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -3,10 +3,6 @@
  * @module ng1
  */ /** */
 
-import * as core from "@uirouter/core";
-export { core };
-export * from "@uirouter/core";
-
 export * from "./interface";
 export * from "./services";
 export * from "./statebuilders/views";
@@ -20,3 +16,8 @@ import "./directives/viewDirective";
 import "./viewScroll";
 
 export default "ui.router";
+
+import * as core from "@uirouter/core";
+export { core };
+export * from "@uirouter/core";
+
diff --git a/src/interface.ts b/src/interface.ts
index d3ad65a49..a0e9786c4 100644
--- a/src/interface.ts
+++ b/src/interface.ts
@@ -695,7 +695,7 @@ export interface Ng1Controller {
    *     this.originalData = angular.copy(this.data);
    *
    *     this.uiCanExit = function() {
-   *       if (!angular.equals(this.data, this.originalData) {
+   *       if (!angular.equals(this.data, this.originalData)) {
    *         // Note: This could also return a Promise and request async
    *         // confirmation using something like ui-bootstrap $modal
    *         return window.confirm("Data has changed.  Exit anyway and lose changes?");
