initial commit with basic skeleton and tests