feat: add "by" option