# Runway Extraction Refinement -- Jill's Points
1. [CoreModels] Move Apm::CoreModelRoleChangeObserver and Apm::CoreModelUserChangeObserver and out of Runway so nitro create these accounts on Runway [jill's score](https://media.giphy.com/media/3o7btP4i5D6PWhJ2fK/giphy.gif)
3. [CoreModels] Denormalize user data [jill's score](https://media.giphy.com/media/AYMrqLPahVGdcWSmMs/giphy.gif)
- Create necessary attributes in Apm::Account and remove delegations
- Refactor Apm::Profile to find information in Apm::Account
- Update them on the sync methods
- Write migration for account data
- Refactor Apm::Graphql::AccountType#goes_by_with_last_name to find information in Apm::Account
4. [CoreModels] Refactor Apm::GroupFilterQueryBuilder to query apm_accounts instead of users [jill's score](https://media.giphy.com/media/xRCASav6bgz9m/giphy.gif)
5. [CoreModels] Change Apm::ApplicationController#current_account to find the account by the current_user.id instead of the current_user.record [jill's score](https://media.giphy.com/media/D2wQmQNMewjAVoCsyz/giphy.gif)
6. [NitroAuth] Add admin flag [jill's score](https://giphy.com/gifs/3o7btNEQOGZiEaOAus)
- Toggle it based on can?(:apm, :admin) in synchronization
- Extract different abilities based on role
- Override current_ability in Apm::Permissions::Authorization to return one of the abilities
7. [NitroObjectStore] remove has_many_apm_attached and all relevant classes (not used) [jill's score](https://media.giphy.com/media/1wPSRN64PQ4Zp1d1pA/giphy.gif)
8. [NitroObjectStore] Replace the named style use-cases by helper methods (in models, maybe) [jill's score](https://media.giphy.com/media/gJ2sRyTS2tBEwXkLZT/giphy.gif)
9. [NitroGraphql] Move to graphql-ruby [jill's score](https://media.giphy.com/media/s9FnbSA9469AQ/giphy.gif)
- Expose new endpoint
- Rethink our authorization strategy (perhaps native cancan integration)
- Remove dependency to nitro_graphql, add a direct dependency to graphql-ruby
10. [Extract] Extract nitro_history as a library [jill's score](https://media.giphy.com/media/ymanNo24mHm5qFkF2k/giphy.gif)
- Serve tables with edgestitch
11. [Extract] Extract elasticsearch replicating transport [jill's score](https://media.giphy.com/media/26BRqPg05olzXG1bi/giphy.gif)
12. [connect-web-ui] Replace connect-web-ui (Fuzzy) by fuse.js [jill's score](https://media.giphy.com/media/tXslbpau1tJwpQmoCR/giphy.gif)
13. [NitroSearch] Replace uses of NitroSearch::Elastic::Indexing with Elasticsearch::Model and inline callbacks [jill's score](https://media.giphy.com/media/nYBofDEU13PNcgX5rs/giphy.gif)
14. [NitroSearch] Replace NitroSearch by Ransack: [jill's score](https://media.giphy.com/media/VmhWuirH2Q8Hs1WUxz/giphy.gif)
- Replace the backend by Ransack directly
- Remove the use of NitroSearch's form helper (use playbook form to build the same functionality)
- remove dependency to nitro_search: we'll have to initialize the elasticsearch client manually in test based on nitro config information in order to run integration specs
15. [NitroReact] Break node package dependency: [jill's score](https://media.giphy.com/media/VmhWuirH2Q8Hs1WUxz/giphy.gif)
- Replace GraphqlProvider with its own apollo provider
- Add direct dependency on apollo, moment.js, and React
- Duplicate useToggler, useEventListener, and @powerhome/nitro_react/test/bootstrap
- Remove dependency on nitro_react from package.json
16. [NitroTheme] Serve group management page with Runway layout (or Rabbet?) [jill's score](https://media.giphy.com/media/cnVhB7cKMoA3d6Xkqm/giphy.gif)
17. [NitroTheme] Replace NitroNotify with something else (playbook Toast perhaps) [jill's score](https://media.giphy.com/media/3ov9k1lJ0A2o4OQew8/giphy.gif)
18. [NitroTheme] Replace NitroTheme::ApplicationHelper with Playbook::PbKitHelper and Webpacker::Helper [jill's score](https://media.giphy.com/media/3o85xtua43qayXTiqQ/giphy.gif)
- Add direct dependencies to webpacker and playbook
- Remove Nitro Theme dependency
- Add direct dependency to ConnectClient (undeclared direct dependency)