change some method to private method
add TODO