Added serializable type definitions and specific exceptions, documentation improved