full refactor and rename to osc