design, tests, trying to get it to work