fix refcount bug
signature can be passed in as a array ref