must maintain your own internal order