Redesigned some aspects