move lifecycle into separate project