added forTarget and forSource composition methods