another design, still some problems