super janky but it kind of works