reduce copy count
add a simple example
add solver class