ordinary framework