new ideas, more works
sperated lib from cli for library use