added functional spec
refactor - extract Message class, and EmailTransport class