upgrade PYUIKit, rewrite everything