copied files from samplejs