data manipulation mostly in place