Cleaned up the constructors and added javadocs