moved bind/unbind to abstract
exception messages
type check
minor