complete implementation of HorizontalScrollView