refactored and comments for 2DOs