a lot of these methods are crazy similar. that's a sign that you should factor out the common part into another method or function