some small modifications, no need to mention explictly