general framework