Add initialization checks, errors and make public