make text with specific width work. plus a lot of hacks to manage dependencies. need to clean it up