add explanation
some minor changes