song verion refactor