todo changed a little bit