initial prototype, half implemented