version 1, frontend done