fix mutual exclusivity, sprintf->asprintf