Are this explicit bindings needed? If there is only one implementation of each function of each type I think you could just remove this bindings.