final one down

still need to clean up and refine codes