UPD: restructure