implement adaptive content (doesn't support cache yet)