dynamic reader