added first version with basic tests