Better error handling
Add upcast & downcast to string