added unit tests, and split plugins and platform into individual targets