reflection and serialization added