Works for the most part