made transfer function internals public (for consistency) but const (for safety)