think ext interface and impl