why is the semicolon necessary? should be removed in `~Sink()` instead I guess