better module hierarchy