rethought overflow, implemented it for move