First try to implement the rest of function