changes into a lot of interface