use subclass instead of delegate.
fix evict bug.