Implemented basic basic  and  with tests