A general framework