add more comments for later implementation