Cleaned up, and added javadoc to the interfaces