added documentation and show/hide keyboard