refactor
S(source %)