Complete type combinators and self/outer typing
Fix some methods returning undefined in JS