What are the basic components of SnappyTV?