change interfaces and file structure