Also, can't we just let developers override initialize? Why still call it?