Major front end refactor to components