init version. feature done, but too slow.