correct design
fixed functions