builds & checks, needs polishing