make directive more extensible, adds helper methods
finishes first pass at dragndrop directive