diff --git a/src/Miscellaneous/InfiniScroll.coffee b/src/Miscellaneous/InfiniScroll.coffee
deleted file mode 100644
index e80e7d32e..000000000
--- a/src/Miscellaneous/InfiniScroll.coffee
+++ /dev/null
@@ -1,139 +0,0 @@
-InfiniScroll =
- init: ->
- return unless Conf['Infinite Scrolling'] and g.VIEW is 'index' and g.BOARD isnt 'f'
-
- @threads = g.threads
-
- $.on d, '4chanXInitFinished', @ready
-
- ready: ->
- $.off d, '4chanXInitFinished', InfiniScroll.ready
- $.on d, 'scroll', InfiniScroll.scroll
- InfiniScroll.scroll()
-
- scroll: $.debounce 100, ->
- return if InfiniScroll.isFetching or ((d.body.scrollTop or doc.scrollTop) <= doc.scrollHeight - (300 + window.innerHeight))
- return InfiniScroll.notice() if InfiniScroll.isDead
-
- # For once, lets respect 4chan's API rules.
- if InfiniScroll.cache and InfiniScroll.cache.time > Date.now() - $.MINUTE
- return InfiniScroll.parse InfiniScroll.cache
-
- new Notice 'info', "Fetching next page.", 2
-
- InfiniScroll.isFetching = true
- url = "//a.4cdn.org/#{g.BOARD}/catalog.json"
- $.ajax url, onloadend: InfiniScroll.cb.load,
- whenModified: true
-
- parse: (response) ->
- threads = InfiniScroll.parsePages response
- threadNodes = []
- nodes = []
-
- return unless threads.length
- InfiniScroll.notice()
- InfiniScroll.isDead = true
-
- for thread in threads
- posts = []
- {omitted_posts, omitted_images} = thread
- threadID = thread.no
-
- el = $.el 'div',
- className: 'thread'
- id: "t#{threadID}"
-
- op = Build.postFromObject thread, g.BOARD
- posts.push op
-
- replylink = $.el 'a',
- href: "thread/#{threadID}"
- className: 'replylink'
- textContent: 'Reply'
-
- postlink = $.el 'div',
- className: "postLink mobile"
- innerHTML: """View Thread"""
-
- if omitted_posts
- posts.push $.el 'span',
- className: 'summary desktop'
- innerHTML: """
- #{omitted_posts} posts #{if omitted_images then "and " + omitted_images + " image replies"} omitted. Click here to view.
- """
-
- $.prepend postlink, $.el 'span',
- className: 'info'
- innerHTML: """
- #{omitted_posts} posts omitted#{if omitted_images then "
(#{omitted_images} have images)" else ""}
- """
-
- $.add $('.postInfo', op), [$.tn('\u00A0\u00A0\u00A0['), replylink, $.tn(']\u00A0')]
- $.add op, postlink
-
- if thread.last_replies then posts.push Build.postFromObject post, g.BOARD for post in thread.last_replies
-
- $.add el, posts
-
- threadNodes.push el
- nodes.push el
- nodes.push $.el 'hr'
-
- InfiniScroll.features threadNodes
-
- $.before botPostForm, nodes if botPostForm = $ '.board > .mobile.center'
-
- parsePages: (response) ->
- pages = JSON.parse response
- newThreads = []
-
- for number, page of pages when pages.hasOwnProperty number
- {threads} = page
- for thread in threads
- continue if g.threads["#{g.BOARD}.#{thread.no}"]
-
- newThreads.push thread
-
- return newThreads if newThreads.length is 15
-
- return newThreads
-
- features: (threadNodes) ->
- posts = []
- threads = []
- for threadRoot in threadNodes
- thread = new Thread +threadRoot.id[1..], g.BOARD
- threads.push thread
- for post in $$ '.thread > .postContainer', threadRoot
- try
- posts.push new Post post, thread, g.BOARD
- catch err
- # Skip posts that we failed to parse.
- unless errors
- errors = []
- errors.push
- message: "Parsing of Post No.#{postRoot.id.match(/\d+/)} failed. Post will be skipped."
- error: err
- Main.handleErrors errors if errors
-
- Main.callbackNodes Thread, threads
- Main.callbackNodes Post, posts
-
- notice: do ->
- notify = false
- reset = -> notify = false
- return ->
- return if notify
- notify = true
- new Notice 'info', "Last page reached.", 2
- setTimeout reset, 3 * $.SECOND
-
- cb:
- load: ->
- InfiniScroll.isFetching = false
- return unless @status is 200
-
- InfiniScroll.cache = new String @response
- InfiniScroll.cache.time = Date.now()
- InfiniScroll.parse @response