added protocol and delegate for better control over scroll position