basics working, now refine