A lot of fixes, still needs work.