added javadoc for better understanding what it really does