smarter autoincrement