re-engineering overloading and rebindable syntax