better async
removed message callback way to java-ish