Rush job, needs serious clean-up.