add skeleton and refactor skin