Recoded

completely redone