first version

add some fundamental function