changed to MIT license, added code from templates again to be consistent, fixed a few issues related to serializable as a type bound, made java.io.Serializable