it's not a good idea to force boxing/unboxing for every swap