Rework whole stuff