slowly complete each functionality