done with most of frontend