Worked out a few of the kinks, it's still buggy