refacor interface