basic funtionally added