added history support
merge with master
Transitions back and forth
Merged with Javascript-branch
merge