Another huge refactor, add Control mechanisms