Not quite done yet, but it almost works haha. S