shorter code, more comments