Updated with lots of stuff