shiny implementation