I really should've committed this when I finished it...