decoupled sidebar into its own component