main and h files