add structure
fix unit testing