app component refactor