Reorganize project and add interface.