added type_checks to binary operations, should we leave a fatal?