use abort argument for :function