added lifecycle and reflection