refactoring, cleaned usage, remove init bug