add features / rewrite aio functions