add; change compile return type to list