refactor into module playble and auditable