oops! support negative arguments