basic design done

Code will follow