some codes in here