I rewrote it to make setup easier.