I got a lot of help from here.