improved type-safety; use PHP like errors for type checking where not possible (scalars)
we don't use shorthand names in most cases
built-in type-safety rather than throwing exceptions