not sure you need `self.EMPTY_SIZE`, 0 should be sufficient ?