service got same return type as the action
added some more source code description
some refactoring