clean code, focus first input
add commands and calbacks
additional calback param