task should be serializable