component approach by deshipu