implement many things that i dont remember sorry