add listener
add message
fit
add serialization