adding more but unstable...
improve get_attribute