partial done untill TODO