add write fn