TMP VERSION
some unfinished features
Add some interface