restructing the directories, interface/impl split