Added some javadoc, made everything serializable, and fixed a problem with AbstractDateTime implementing Comparable.