Many features added, refer to Readme