refactor content types and add download counter