Refactor contribution observer