time consuming but done right