encapsulated the feedback stuff into its own component