Fix #7, add some restructions