check for not nil
adhere to the conventions
should be asynchronous