finished refactoring serializable, much, much cleaner now
added max_length option to String field