Refactor into modules and add Access list