restructuring, and some testing examples