pure js list generation