better error message
list of writer/remove functions created at construction time in place of null variables and if/else checks