diff --git a/dapps/valuetransfers/dapp.go b/dapps/valuetransfers/dapp.go
index da1ab607c851192fa25214ed04e746bfb1c07675..9015d18aff916c08e2ce82c343c449a6b2e507ba 100644
--- a/dapps/valuetransfers/dapp.go
+++ b/dapps/valuetransfers/dapp.go
@@ -111,18 +111,21 @@ func configure(_ *node.Plugin) {
 	FCOB = consensus.NewFCOB(Tangle, time.Duration(cfgAvgNetworkDelay)*time.Second)
 	FCOB.Events.Vote.Attach(events.NewClosure(func(id string, initOpn vote.Opinion) {
 		if err := voter.Vote(id, initOpn); err != nil {
-			log.Error(err)
+			log.Warnf("FPC vote: %s", err)
 		}
 	}))
 	FCOB.Events.Error.Attach(events.NewClosure(func(err error) {
-		log.Error(err)
+		log.Errorf("FCOB error: %s", err)
 	}))
 
 	// configure FPC + link to consensus
 	configureFPC()
 	voter.Events().Finalized.Attach(events.NewClosure(FCOB.ProcessVoteResult))
+	voter.Events().Finalized.Attach(events.NewClosure(func(ev *vote.OpinionEvent) {
+		log.Infof("FPC finalized for transaction with id '%s' - final opinion: '%s'", ev.ID, ev.Opinion)
+	}))
 	voter.Events().Failed.Attach(events.NewClosure(func(ev *vote.OpinionEvent) {
-		log.Errorf("FPC failed for transaction with id '%s' - last opinion: '%s'", ev.ID, ev.Opinion)
+		log.Warnf("FPC failed for transaction with id '%s' - last opinion: '%s'", ev.ID, ev.Opinion)
 	}))
 
 	// register SignatureFilter in Parser
diff --git a/dapps/valuetransfers/fpc.go b/dapps/valuetransfers/fpc.go
index 3bf6bd9c840a1522f52c3a6f0c798e262fbb324a..4f975b213327b30c3af696fee81f47cafd5e3bf6 100644
--- a/dapps/valuetransfers/fpc.go
+++ b/dapps/valuetransfers/fpc.go
@@ -96,7 +96,7 @@ func configureFPC() {
 	Voter().Events().RoundExecuted.Attach(events.NewClosure(func(roundStats *vote.RoundStats) {
 		peersQueried := len(roundStats.QueriedOpinions)
 		voteContextsCount := len(roundStats.ActiveVoteContexts)
-		log.Infof("executed round with rand %0.4f for %d vote contexts on %d peers, took %v", roundStats.RandUsed, voteContextsCount, peersQueried, roundStats.Duration)
+		log.Debugf("executed round with rand %0.4f for %d vote contexts on %d peers, took %v", roundStats.RandUsed, voteContextsCount, peersQueried, roundStats.Duration)
 	}))
 }
 
@@ -163,7 +163,7 @@ func runFPC() {
 			select {
 			case r := <-unixTsPRNG.C():
 				if err := voter.Round(r); err != nil {
-					log.Errorf("unable to execute FPC round: %s", err)
+					log.Warnf("unable to execute FPC round: %s", err)
 				}
 			case <-shutdownSignal:
 				break exit
diff --git a/packages/vote/opinion.go b/packages/vote/opinion.go
index 8972ab83d1adae5285afdc2706efa3da91a58d81..2299e81d1d179a341a0f4e2c41e176cf865f36fa 100644
--- a/packages/vote/opinion.go
+++ b/packages/vote/opinion.go
@@ -40,6 +40,16 @@ const (
 	Unknown Opinion = 1 << 2
 )
 
+func (o Opinion) String() string {
+	switch {
+	case o == Like:
+		return "Like"
+	case o == Dislike:
+		return "Dislike"
+	}
+	return "Unknown"
+}
+
 // ConvertInt32Opinion converts the given int32 to an Opinion.
 func ConvertInt32Opinion(x int32) Opinion {
 	switch {