use separate parameters to avoid mess