Hey it actually works, reimplements perspective changes