wrote reflection. HAVE NOT REFACTORED YET.