Initial commit, grab from the examples, will tweak and work on it soon.