Added unit tests; refactored Sdk classes (single responsibility)