Rework for modularity
Refactor into modules and add Access list