Moved calculations in separate service