(about to add more javadoc)