Incorporated Dylan and Tanner's code and fixed merge errors from pulling Brandon's copy. This version still needs testing to ensure integration didn't break it.