refactor sem calc