implement a reflection utils