misc improvements

see commit comments for details
I generally add return types for all the methods to disambiguate `dynamic` vs `void`. While I agree it is not required, it helps for the code comprehension (`jsify` had a `dynamic` return type above).