Added video capture, separated Model from View components