initial structure + base classes