this still isn't great, but it works