interfaces and sample usage (by Marcin)