diff --git a/clamd.go b/clamd.go
index 5199f63..cda83bc 100644
--- a/clamd.go
+++ b/clamd.go
@@ -40,6 +40,20 @@ const (
 	RES_PARSE_ERROR = "PARSE ERROR"
 )
 
+type Scanner interface {
+	Ping() error
+	Version() (chan *ScanResult, error)
+	Stats() (*Stats, error)
+	Reload() error
+	Shutdown() error
+	ScanFile(path string) (chan *ScanResult, error)
+	RawScanFile(path string) (chan *ScanResult, error)
+	MultiScanFile(path string) (chan *ScanResult, error)
+	ContScanFile(path string) (chan *ScanResult, error)
+	AllMatchScanFile(path string) (chan *ScanResult, error)
+	ScanStream(r io.Reader, abort chan bool) (chan *ScanResult, error)
+}
+
 type Clamd struct {
 	address string
 }
@@ -305,7 +319,7 @@ func (c *Clamd) ScanStream(r io.Reader, abort chan bool) (chan *ScanResult, erro
 	return ch, nil
 }
 
-func NewClamd(address string) *Clamd {
+func NewClamd(address string) Scanner {
 	clamd := &Clamd{address: address}
 	return clamd
 }