1. Remove non-used code
2. move some private property to Private Struct