wraps up everything except keyboard events