Added A LOT of code