wrapper & computation up