added the intended top level functionality