added abstrat mirror and refactored a bit
pass on mirrors primitives