wrap in transaction
Use association to create objects instead of guessing class name
v0.0.4