iteration solution
change the interface