first stab at module hierarchy