can we make this and `else if` since payloads make no sense without positions?