TODO move internal stuff to Internal
Add binary operations