Added initial version and tests