extract helpers to separate namespace & classes (for each)
add validations (activemodel compatible)