fix all implementation