decouples and collects average from module