big commit - reworked to be more similar to demo paint project