abstrated camera into a mixin
camera is really dynamic now