composing components
add validation