working state but very inflexible