Interface working, needs refine