implemented async and added exception handling to shell