core refactored: methods can now use JavaScript `this` properly bound to the caller.