throws exception with data and errors in it.
try to have no state inside (i.e. remove id and lastData and lastError).
add __toString method in Enums.
maybe some Data Transfer Object
simplified the construction… add modify method.
Merge branch 'master' into classes