better
some fixes, still not perfect