TODO: cleancode