First attempt
changes after review
Request completion callback functionality