modify strictly according to spec
add variation and README