fisrt 4 functions has been done ^_^