moved components to lib/components
Created shared and viewer libraries to separate out logic a bit
A bit cleaner model for flagging viewer load