more work, refactor control