Desprately needs a refactor (⋟﹏⋞)