changed structure, added demo etc..