add invoke method, refactoring, add license