halfway done implementing full api