optimisations - widget bin search, tinyscheme opts, build opts, refactor