project structure + implementation