Major refactor: Add framework, add samples