better semantics
updated todo