big fix and improve interface
merge