support extra interfaces + refac