Changed service communication model to use binding, Made "shuffle" option work. Some design improvements.
Merge remote-tracking branch 'origin/dev' into dev