cleaned some comments
some refactoring
diamond can move