using callback for IO - asynchronous operation