add somewhat proper documentation