Refactor flexible __call

Bug fix: [no]
Feature addition: [no]
Backwards compatibility break: [no]
Unit test passes: [yes]
Behat scenarios passes: [yes]
Checkstyle issues: [no]
ChangeLog updated: [no]