Added core implementation and samples.
Added todos.
Added argument validation.
Merge branch 'feature/Core' into develop